FTP

Як налаштувати FTP за допомогою TLS в Ubuntu

Як налаштувати FTP за допомогою TLS в Ubuntu
FTP (File Transfer Protocol) в основному використовується для передачі файлів між комп'ютерами. FTP працює в архітектурі клієнт-сервер, в якій клієнт просить файл із сервера, а сервер повертає необхідний файл клієнту. На клієнтській машині клієнтська програма FTP використовується для зв'язку з сервером. Також є можливість отримати доступ до FTP-сервера у браузері. За замовчуванням FTP спілкується по незахищеному каналу, але можна налаштувати FTP для передачі даних через захищений канал. У цьому посібнику ви дізнаєтесь, як налаштувати FTP-сервер за допомогою TLS, а потім використовувати FileZilla як клієнтську програму для підключення до FTP-сервера.

Встановлення VSFTPD

VSFTPD (Very Secure FTP Daemon) - це програма, яка використовується для налаштування FTP на сервері. У цьому посібнику VSFTPD буде використовуватися для налаштування FTP-сервера на комп'ютері. Перш ніж встановлювати VSFTPD, оновіть сховища на своєму сервері, виконавши наступну команду.

[захищено електронною поштою]: ~ $ sudo apt-get update -y

Далі встановіть VSFTPD, використовуючи таку команду.

[захищено електронною поштою]: ~ $ sudo apt-get install vsftpd -y

Нарешті, перевірте установку, перевіривши версію vsftpd за допомогою наступної команди.

[захищено електронною поштою]: ~ $ vsftpd -v

Наведена вище команда видасть версію vsftpd, якщо встановлення буде успішним.

FTP в активному режимі

В активному режимі FTP-клієнт розпочинає сеанс, встановлюючи підключення TCP-керування від будь-якого випадкового порту на клієнтській машині до порту 21 сервера. Потім клієнт починає прослуховувати випадковий порт X для з'єднання даних і повідомляє серверу через з'єднання TCP Control, що клієнт чекає з'єднання даних через порт X. Після цього сервер встановлює з'єднання даних зі свого порту 20 до порту X на клієнтській машині.

Проблема може виникнути там, де клієнт знаходиться за брандмауером, а порт X заблокований. У цьому випадку сервер не може встановити з'єднання даних з клієнтом. Щоб уникнути цієї проблеми, FTP-сервер в основному використовується в пасивному режимі, про що ми поговоримо далі в цій статті. За замовчуванням VSFTPD використовує пасивний режим, тому нам доведеться змінити його на активний режим.

Спочатку відкрийте файл конфігурації VSFTPD.

[захищено електронною поштою]: ~ $ sudo nano / etc / vsftpd.конф

Додайте наступний рядок у кінець файлу.

pasv_enable = НІ

Крім того, переконайтесь, що для параметра «connect_from_port_20» встановлено значення «YES».'Цей параметр гарантує, що з'єднання даних встановлено через порт 20 сервера.

Далі створіть каталог, який FTP-сервер використовуватиме для зберігання файлів. У цьому підручнику ми налаштуємо '/ home / ubuntu / ftp /' як кореневий шлях для FTP-сервера.

[захищено електронною поштою]: ~ $ sudo mkdir / home / ubuntu / ftp

Тепер вкажіть цей каталог у файлі конфігурації, змінивши параметр 'local_root'. Наступний параметр налаштує кореневий шлях сервера.

local_root = / home / ubuntu / ftp

Потрібно ввімкнути опцію 'write_enable', щоб дозволити користувачам писати на FTP-сервер.

Щоразу, коли ви змінюєте файл конфігурації, завжди перезапускайте сервер.

[захищено електронною поштою]: ~ $ sudo systemctl перезапустити vsftpd

Встановлення пароля для користувача

Клієнт FTP підключається до сервера за допомогою імені користувача та пароля. Встановіть пароль для свого користувача на машині, використовуючи наступну команду.

[захищено електронною поштою]: ~ $ sudo passwd ubuntu

Вищенаведена команда запитає пароль для користувача 'ubuntu'.

Налаштування брандмауера для активного режиму

Якщо FTP використовується в активному режимі, сервер FTP використовуватиме два порти для зв'язку з клієнтом, порти 21 і 22. Порт 21 використовується для передачі команд клієнту, а порт 20 - для передачі даних на будь-який випадковий порт клієнта. Ми використаємо ufw для налаштування брандмауера на сервері. Встановіть ufw, використовуючи таку команду.

[захищено електронною поштою]: ~ $ sudo apt-get install ufw

Тепер на стороні сервера ми відкриємо порти 20, 21 і 22 (для з'єднання SSH).

[захищено електронною поштою]: ~ $ sudo ufw дозволяє з будь-якого до будь-якого порту proto tcp

Увімкніть і перевірте статус ufw, використовуючи такі команди.

[захищено електронною поштою]: ~ $ sudo ufw enable
[захищено електронною поштою]: ~ $ sudo ufw статус

ПРИМІТКА: якщо ви налаштовуєте свій FTP-сервер у хмарі, вам також потрібно буде дозволити порти 20, 21 та 22 у групі захисту.

УВАГА: Завжди вмикайте порт 22, а також необхідні порти, перш ніж увімкнути ufw на віддаленій системі. За замовчуванням UFW блокує трафік з порту 22, тому ви не зможете отримати доступ до віддаленого сервера за допомогою SSH, якщо ввімкнете ufw, не дозволяючи трафік з порту 22.

Встановлення FTP-клієнта

Тепер наш сервер налаштовано в активному режимі, і ми можемо отримати до нього доступ з боку клієнта. Для клієнтської програми ми будемо використовувати FileZilla, клієнтську програму ftp. Встановіть FileZilla, використовуючи таку команду.

[захищено електронною поштою]: ~ $ sudo apt-get install filezilla -y

Відкрийте програму FTP-клієнта та введіть загальнодоступну IP-адресу та інші облікові дані сервера FTP.

Натиснувши кнопку «Швидке підключення», ви під’єднаєтесь до FTP-сервера і автоматично перейдете до каталогу, вказаного в опції «local_root» у конфігураційному файлі «/ home / ubuntu / ftp».

Проблеми в активному режимі

Використання FTP в активному режимі створює проблеми, коли клієнт знаходиться за брандмауером. Після введення початкових команд керування, коли сервер створює з'єднання даних з клієнтом на випадковому порту, порт може бути заблокований брандмауером на клієнті, що спричиняє помилку передачі даних. FTP можна використовувати в пасивному режимі для вирішення цих проблем брандмауера.

FTP в пасивному режимі

У пасивному режимі клієнт створює керуюче з'єднання з сервером на порту 21 сервера. Потім клієнт надсилає спеціальну команду 'PASV', щоб повідомити серверу, що з'єднання даних буде встановлено клієнтом замість сервера. У відповідь клієнт отримує IP-адресу сервера та випадковий номер порту (цей номер порту буде налаштовано на сервері). Клієнт використовує цей IP і номер порту для створення з'єднання даних із сервером. У пасивному режимі клієнт встановлює як з'єднання даних, так і керування, так що брандмауер не порушує зв'язок між клієнтом і сервером.

Відкрийте файл конфігурації FTP у вашому улюбленому редакторі.

[захищено електронною поштою]: ~ $ sudo nano / etc / vsftpd.конф

Встановіть для параметра «pasv_enable» значення «ТАК» у файлі, щоб сервер міг спілкуватися з клієнтом у пасивному режимі. Крім того, встановіть параметр 'local_root', щоб вказати кореневий каталог сервера, і встановіть параметр 'write_enable' на 'YES', щоб дозволити користувачам завантажувати файли на сервер.

Як вже обговорювалося раніше, з'єднання даних встановлюється клієнтом, і сервер надсилає свій загальнодоступний IP і випадковий порт клієнту для створення зв'язку. Цей випадковий порт на сервері можна вказати з ряду портів у файлі конфігурації.

З'єднання даних між сервером і клієнтом буде встановлено через порт між 1024 і 1048. Перезапустіть FTP-сервер після зміни конфігураційного файлу.

[захищено електронною поштою]: ~ $ sudo systemctl перезапустити vsftpd

Налаштування брандмауера в пасивному режимі

Якщо ми використовуємо FTP в пасивному режимі, з'єднання даних буде встановлено через будь-який порт з 1024 до 1048, тому необхідно дозволити всі ці порти на FTP-сервері.

[захищено електронною поштою]: ~ $ sudo ufw дозволяє з будь-якого до будь-якого порту proto tcp

Після дозволу всіх портів на брандмауері активуйте ufw, виконавши наступну команду.

[захищено електронною поштою]: ~ $ sudo ufw enable

Завжди дозволяйте порти на сервері, перш ніж увімкнути брандмауер; інакше ви не зможете отримати доступ до свого сервера через SSH як ufw, який за замовчуванням блокує порт 22.

Тестування підключення

Тепер ми налаштували FTP-сервер у пасивному режимі і можемо перевірити ftp-з'єднання з клієнтською програмою. Відкрийте FileZilla у вашій системі, щоб зробити це.

Після введення хосту, імені користувача, пароля та порту, тепер ви можете підключитися до свого сервера. Тепер, коли ви підключені до FTP-сервера, що працює в пасивному режимі, ви можете завантажувати файли на сервер.

Налаштування сертифікатів SSL за допомогою FTP-сервера

За замовчуванням FTP-сервер встановлює зв'язок між клієнтом і сервером через незахищений канал. Цей тип зв'язку не слід використовувати, якщо ви хочете надати конфіденційні дані між клієнтом та сервером. Для спілкування по захищеному каналу необхідно використовувати сертифікати SSL.

Створення сертифікатів SSL

Ми використовуватимемо сертифікати SSL для встановлення безпечного зв'язку між клієнтом та сервером. Ми створимо ці сертифікати за допомогою openssl. Наступна команда згенерує SSL-сертифікати для вашого сервера.

[захищено електронною поштою]: ~ $ sudo openssl req -x509 -nodes -day 365 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.пем

Після запуску наведеної вище команди вам буде задано кілька запитань. Після того, як ви відповісте на ці запитання, сертифікати будуть сформовані. Ви можете перевірити наявність сертифікатів у терміналі.

[захищено електронною поштою]: ~ $ sudo ls / etc / ssl / private /

Використання сертифікатів у файлі конфігурації

Тепер наші сертифікати готові до використання. Ми налаштуємо 'vsftpd.conf ', щоб використовувати SSL-сертифікати для зв'язку. Відкрийте файл конфігурації наступною командою.

[захищено електронною поштою]: ~ $ sudo nano / etc / vsftpd.конф

Додайте наступні рядки до кінця файлів. Ці зміни гарантують, що FTP-сервер використовує щойно створені сертифікати SSL для безпечного зв'язку з клієнтом.

ssl_enable = ТАК
force_local_data_ssl = НІ
force_local_logins_ssl = НІ
ssl_tlsv1 = ТАК
ssl_sslv2 = НІ
ssl_sslv3 = НІ
rsa_cert_file = / etc / ssl / private / vsftpd.пем
rsa_private_key_file = / etc / ssl / private / vsftpd.пем

Перезапустіть FTP-сервер, щоб застосувати ці зміни.

[захищено електронною поштою]: ~ $ sudo systemctl перезапустити vsftpd

Після перезапуску сервера спробуйте підключитися до свого сервера за допомогою клієнтської програми FileZilla. Цього разу клієнтська програма запитає вас, чи варто довіряти цим сертифікатам.

Якщо у вас є сертифікати від надійного центру сертифікації, це попередження не повинно відображатися. Ми створили наші сертифікати за допомогою openssl, який не є довіреним центром сертифікації, тому в нашому випадку він вимагав автентифікації сертифікатів. Тепер ми можемо спілкуватися між клієнтом та сервером через захищений канал.

Анонімна конфігурація

Ви також можете увімкнути анонімний вхід на свій FTP-сервер. Якщо цю конфігурацію ввімкнено, будь-який користувач може ввійти на FTP-сервер за допомогою будь-якого імені користувача та пароля. Наступні параметри у файлі конфігурації зроблять сервер FTP доступним анонімно.

Вищевказана конфігурація встановлює кореневий шлях для анонімних користувачів як '/ home / ubuntu / ftp / anon', і він не буде запитувати пароль, коли анонімний користувач входить в систему.

ПРИМІТКА: Переконайтеся, що шлях '/ home / ubuntu / ftp / anon' існує на FTP-сервері.

Тепер перезапустіть FTP-сервер.

[захищено електронною поштою]: ~ $ sudo systemctl перезапустити vsftpd

Після перезапуску сервера ми спробуємо підключитися до сервера через браузер Google Chrome. Перейдіть за такою URL-адресою.

ftp: // 3.8.12.52

Наведена вище URL-адреса перенесе вас до кореневого каталогу сервера FTP, як зазначено у файлі конфігурації. При відключеному анонімному вході при спробі підключитися до FTP-сервера за допомогою браузера спочатку буде запропоновано автентифікацію, а потім ви потрапите в кореневий каталог сервера.

Налаштуйте локальний доступ

Ми також можемо дозволити або заблокувати локальний доступ до FTP-сервера, змінивши файл конфігурації. В даний час ми можемо отримати доступ до нашого FTP-сервера локально, не використовуючи програму FTP-клієнта, але ми можемо заблокувати цей доступ. Для цього ми повинні змінити параметр 'local_enable'.

Спочатку перезапустіть FTP-сервер.

[захищено електронною поштою]: ~ $ sudo systemctl перезапустити vsftpd

Після перезапуску сервера спробуйте отримати доступ до FTP-сервера локально за допомогою інтерфейсу командного рядка. Увійдіть на віддалений сервер за допомогою SSH.

[захищено електронною поштою]: ~ $ ssh ubuntu @ 3.8.12.52 -і

Тепер видайте таку команду, щоб увійти на FTP-сервер локально за допомогою інтерфейсу командного рядка.

[захищено електронною поштою]: ~ $ ftp localhost

Після запуску наведеної команди вона видасть помилку 500.

Висновок

Протокол передачі файлів використовується протягом багатьох років для передачі файлів та документів через Інтернет. VSFTPD - це один із пакетів, що використовується як FTP-сервер на вашому комп'ютері. VSFTPD містить різні конфігурації, які можна використовувати для налаштування вашого FTP-сервера. Цей підручник показав вам, як налаштувати FTP-сервер із TLS для підвищення рівня безпеки. Щоб дізнатись більше про конфігурації FTP, відвідайте таке посилання.

http: // vsftpd.звірі.org / vsftpd_conf.html

How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Безкоштовні ігри з відкритим кодом для розробки ігор Linux
У цій статті буде розглянуто перелік безкоштовних ігрових механізмів з відкритим кодом, які можна використовувати для розробки 2D та 3D ігор на Linux....