FTP или File Transfer Protocol – это достаточно древний, но в то же время надёжный и проверенный протокол выгрузки файлов на удалённый сервер или их скачивания. Также иногда этот протокол применяется веб-мастерами для управления файлами или организации хранилища данных.
В этой статье мы рассмотрим, как выполняется установка FTP на Ubuntu 20.04, как настроить все необходимые компоненты, в том числе и защищённое соединение. Мы будем использовать FTP-сервер VSFTPD или Very Secure FTP Daemon, который обеспечивает самую надёжную защиту от уязвимостей.
Установка FTP в Ubuntu
Программа доступна из официальных репозиториев, поэтому установка FTP на Ubuntu Server не должна вызвать проблем. Сначала обновите список пакетов в репозиториях, затем установите саму программу:
sudo apt update
sudo apt install vsftpd
Когда установка будет завершена, вам необходимо включить сервис vsftpd, поскольку он не будет запущен по умолчанию, а также добавить службу в автозагрузку:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
Если у вас установлен фаервол ufw, а такая ситуация возникает, когда вы пытаетесь установить FTP на Ubuntu Server, нужно открыть порты 20 и 21 для нормальной работы. Чтобы это сделать, выполните команды:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status
Установка FTP Ubuntu завершена, но теперь вам осталось настроить всё необходимое для обеспечения безопасной работы. Никогда не используйте FTP-сервер с настройками по умолчанию в производственных сетях, это небезопасно.
Настройка FTP Ubuntu
Теперь перейдём к настройке. Нам нужно поменять всего несколько параметров, чтобы полностью защитить ваш FTP-сервер. Сначала мы рассмотрим самые очевидные настройки: отключения анонимного входа и так далее. Сначала необходимо скопировать оригинальный файл настроек, чтобы в случае проблем вернуть всё как было:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Затем откройте файл в редакторе:
sudo vi /etc/vsftpd.conf
Затем добавьте такие настройки. Вам нужно будет найти и изменить значения указанных строк, добавлять новые, если они уже есть, не стоит. Сначала отключаем анонимный вход:
Разрешаем использовать имена локальных пользователей для входа:
ля авторизованных пользователей разрешаем команды, позволяющие изменять файловую систему:
Установим значение umask для новых файлов, создаваемых по FTP:
Включаем сообщение о необходимости выбрать каталог после регистрации:
Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога:
xferlog_enable=YES
xferlog_std_format=YES
Использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола:
Указываем, что нужно ожидать входящих соединений:
На завершение разрешим аутентификацию только пользователей, перечисленных в файле userlist:
Указываем файл с нашими виртуальными пользователями:
По умолчанию таким пользователям запрещён вход в систему, но мы хотим совсем обратное, поэтому добавьте такую строчку:
При входе пользователей на FTP-сервер, они могут работать только в корневом каталоге FTP. Если вы хотите, чтобы пользователи были ограничены только своей домашней папкой, то необходимо раскомментировать эти строчки:
chroot_local_user=YES
allow_writeable_chroot=YES
Первая строчка указывает, что нужно разместить пользователя в изолированном домашнем каталоге, а вторая, что ему можно разрешить запись в этот каталог. Настройка FTP Ubuntu почти завершена, сохраните изменения в конфигурационном файле и перезапустите vsftpd:
sudo systemctl restart vsftpd
Тестирование vsftpd
Сервер готов, но система настроена ещё не полностью. Сначала создадим нашего тестового пользователя с помощью useradd:
sudo useradd -m -c “Test User” -s /bin/bash testuser
sudo passwd testuser
Поскольку мы хотим подключаться от его имени к FTP-серверу, то нам нужно добавить его в vsftpd.userlist:
echo “testuser” | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist
Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:
У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.
Обратите внимание, что опасно давать пользователям доступ на запись в их домашнюю папку. Делайте это, только если уверены в том, что это необходимо и безопасно.
Настройка домашних папок пользователей
Чтобы хоть как-то обойти проблемы с безопасностью, вы можете использовать другую папку вместо домашней для предоставления её пользователю. Сначала создадим такую папку для нашего пользователя:
sudo mkdir -p /home/testuser/ftp/files
Уберём право на запись для папки ftp:
sudo chown nobody:nogroup /home/testuser/ftp
sudo chmod a-w /home/testuser/ftp
Затем дайте необходимые полномочия пользователю на запись в подпапку.
sudo chown -R testuser:testuser /home/testuser/ftp/files
sudo chmod -R 0770 /home/testuser/ftp/files/
Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:
Теперь добавьте такие строчки:
user_sub_token=$USER
local_root=/home/$USER/ftp
Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:
sudo systemctl restart vsftpd
Теперь вы можете снова войти от имени этого пользователя и увидите, что сейчас используется указанная нами папка.
Настройка защищенного соединения
Установка FTP на Ubuntu 20.04 завершена, но в наше время небезопасно использовать открытую передачу данных через сеть. Всё, что только возможно, необходимо шифровать. Поэтому мы рассмотрим, как настроить защищённое соединение для vsftpd. Сначала создадим папку и сгенерируем сам сертификат, который будем использовать:
sudo mkdir /etc/ssl/private
sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
Затем нужно разрешить доступ к портам защищённого соединения FTP с фаерволе UFW:
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status
И осталось внести несколько правок в настройку самого FTP-сервера. Нам нужно включить ssl_enable и отключить поддержку шифрования sslv2 и sslv3, оставляем только tlsv1:
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Далее раскоментируйте такие строки:
Запретите вход анонимных пользователей по SSL:
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
Теперь установим самый сложный шифр SSL:
И настроим диапазон портов для передачи данных:
Осталось перезагрузить наш сервис:
sudo systemctl restart vsftpd
Теперь тестируем, что у нас получилось:
Как видите, мы уже не можем авторизоваться с помощью утилиты ftp. FTP-сервер выдаёт, что мы обязаны использовать шифрование. Поэтому для тестирования применим FileZilla:
Теперь все данные будут передаваться по зашифрованному соединению. Установка FTP-сервер Ubuntu завершена.
Выводы
В этой статье мы рассмотрели, как выполняется установка FTP на Ubuntu Server 20.04, также как настроить FTP для максимально безопасной работы, включая настройку работы по SSL. Если у вас остались вопросы, спрашивайте в комментариях!
Нет похожих записей
alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.