Vsftpd устанавливается командой sudo apt install vsftpd -y, затем настраивается отключением анонимного доступа в файле /etc/vsftpd.conf и добавлением SSL-сертификата для защиты передачи данных. После перезагрузки сервиса FTP будет доступен локальным пользователям с шифрованием.
Причины необходимости защиты FTP
- Стандартный FTP передаёт пароли в открытом виде по сети
- Без защиты SSL/TLS данные перехватываются посредниками
- Анонимный доступ создаёт уязвимость для несанкционированного скачивания и загрузки файлов
- Отсутствие логирования затрудняет отслеживание несанкционированных действий
Пошаговая инструкция по установке и настройке
- Откройте терминал и выполните команду обновления пакетов:
sudo apt update && sudo apt upgrade -y - Установите vsftpd:
sudo apt install vsftpd -y - Создайте резервную копию конфигурации:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak - Откройте файл конфигурации:
sudo nano /etc/vsftpd.conf - Найдите строку
anonymous_enable=YESи измените наanonymous_enable=NO - Убедитесь, что строка
local_enable=YESне закомментирована - Найдите
write_enable=YESи проверьте, что она активна - Добавьте строку
pasv_enable=YESдля включения пассивного режима - Установите диапазон пассивных портов: добавьте
pasv_min_port=40000иpasv_max_port=50000 - Генерируйте самоподписанный SSL-сертификат:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt - Добавьте в конфиг пути к сертификату:
rsa_cert_file=/etc/ssl/certs/vsftpd.crtиrsa_private_key_file=/etc/ssl/private/vsftpd.key - Включите SSL/TLS: найдите
ssl_enable=NOи измените наssl_enable=YES - Добавьте строку
allow_anon_ssl=NOдля запрета SSL для анонимных пользователей - Добавьте
force_local_data_ssl=YESдля обязательного шифрования передачи данных - Добавьте
force_local_logins_ssl=YESдля обязательного шифрования при входе - Сохраните файл: нажмите
Ctrl+X, затемYиEnter - Перезагрузите сервис:
sudo systemctl restart vsftpd - Включите автозапуск:
sudo systemctl enable vsftpd - Проверьте статус:
sudo systemctl status vsftpd - Откройте брандмауэр для портов:
sudo ufw allow 21/tcp,sudo ufw allow 20/tcp,sudo ufw allow 40000:50000/tcp
Часто задаваемые вопросы
Как подключиться к FTP серверу с клиента? Используйте клиент вроде FileZilla или WinSCP, указав IP сервера, порт 21, имя пользователя и пароль системы Ubuntu, отметив опцию "Требует TLS".
Почему не работает пассивный режим? Проверьте, открыты ли на брандмауэре портовый диапазон 40000:50000 командой sudo ufw status и убедитесь, что провайдер не блокирует эти порты.
Как создать отдельного пользователя только для FTP? Выполните sudo useradd -m -s /usr/sbin/nologin ftpuser, установите пароль sudo passwd ftpuser и измените владельца папки: sudo chown ftpuser:ftpuser /home/ftpuser/