Встановлення 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