ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Как установить FTP-сервер с VSFTPD на Ubuntu 18.04

Как установить FTP-сервер с VSFTPD на Ubuntu 18.04

FTP (протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее. Для более безопасной и быстрой передачи данных используйте SCP.

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и широко используемыми являются PureFTPd, ProFTPD и vsftpd. В этой статье мы будем устанавливать vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd для ограничения доступа пользователей к их домашнему каталогу и шифрования всей передачи с помощью SSL/TLS.

Хотя эта статья написана для Ubuntu 18.04, такие же инструкции применяются к Ubuntu 16.04 и любому дистрибутиву на базе Debian, включая Debian, Linux Mint и Elementary OS.

 

Прежде чем продолжить эту статью, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.

 

Пакет vsftpd доступен в репозиториях Ubuntu. Чтобы установить его, просто выполните следующие команды:

sudo apt update
sudo apt install vsftpd

 

Служба vsftpd автоматически запустится после завершения процесса установки. Проверьте его, распечатав статус службы:

sudo systemctl status vsftpd

 

Результат будет выглядеть примерно так, показывая, что служба vsftpd активна и работает:

* vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago
 Main PID: 2616 (vsftpd)
    Tasks: 1 (limit: 2319)
   CGroup: /system.slice/vsftpd.service
           `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

 

Сервер vsftpd можно настроить, отредактировав файл /etc/vsftpd.conf. Большинство настроек задокументированы внутри файла конфигурации. Для всех доступных вариантов посетите официальную страницу vsftpd.

В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.

Начните с открытия файла конфигурации vsftpd:

sudo nano /etc/vsftpd.conf

 

Мы разрешаем доступ к FTP-серверу только локальным пользователям, находим директивы anonymous_enable и local_enable и проверяем соответствие вашей конфигурации следующим строкам:

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

 

Раскомментируйте настройку write_enable, чтобы разрешить изменения в файловой системе, такие как загрузка и удаление файлов.

/etc/vsftpd.conf
write_enable=YES

 

Чтобы пользователи FTP не могли получить доступ к каким-либо файлам вне своих домашних каталогов, раскомментируйте настройку chroot.

/etc/vsftpd.conf
chroot_local_user=YES

 

По умолчанию для предотвращения уязвимости безопасности, когда chroot включен, vsftp откажется загружать файлы, если каталог, в котором пользователи заблокированы, доступен для записи.

vsftpd может использовать любой порт для пассивных FTP-соединений. Мы укажем минимальный и максимальный диапазон портов, а затем откроем диапазон в нашем брандмауэре.

Добавьте в файл конфигурации следующие строки:

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

 

Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие строки в конец файла:

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

 

Когда эта опция включена, вам необходимо явно указать, какие пользователи могут войти, добавив имена пользователей в файл /etc/vsftpd.user_list (по одному пользователю в строке).

Чтобы шифровать FTP-передачи с помощью SSL/TLS, вам необходимо иметь сертификат SSL и настроить FTP-сервер для его использования.

Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самоподписанный сертификат.

Если у вас есть домен или поддомен, указывающий на IP-адрес FTP-сервера, вы можете легко создать бесплатный сертификат SSL для шифрования.

В этой статье мы сгенерируем самоподписанный сертификат SSL с помощью команды openssl.

Следующая команда создаст 2048-битный закрытый ключ и самоподписанный сертификат, действительный в течение 10 лет. Как закрытый ключ, так и сертификат будут сохранены в одном файле:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

 

Теперь, когда создан SSL-сертификат, откройте файл конфигурации vsftpd:

sudo nano /etc/vsftpd.conf

 

Найдите директивы rsa_cert_fileи rsa_private_key_file, измените их значение pam в пути к файлу и установите директиву ssl_enable на YES:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem           
ssl_enable=YES

 

Если не указано иное, FTP-сервер будет использовать только TLS для обеспечения безопасных подключений.

 

После того, как вы закончите редактирование, файл конфигурации vsftpd (исключая комментарии) должен выглядеть примерно так:

/etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

 

Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:

sudo systemctl restart vsftpd

 

Если вы используете брандмауэр UFW, вам необходимо разрешить FTP-трафик.

Чтобы открыть порт 21( порт команд FTP), порт 20( порт данных FTP) и 30000-31000(диапазон пассивных портов), выполните следующие команды:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

 

Чтобы избежать блокировки, мы откроем порт 22:

sudo ufw allow OpenSSH

 

Перезагрузите правила UFW, отключив и снова включив UFW:

sudo ufw disablesudo ufw enable

 

Чтобы проверить выполнение изменений:

sudo ufw status

 

Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere                  
30000:31000/tcp            ALLOW       Anywhere                  
OpenSSH                    ALLOW       Anywhere                  
20:21/tcp (v6)             ALLOW       Anywhere (v6)             
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)             
OpenSSH (v6)               ALLOW       Anywhere (v6)

 

Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.

  1. Создайте нового пользователя с именем newftpuser:
    sudo adduser newftpuser

     

  2. Добавьте пользователя в список разрешенных пользователей FTP:
    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

     

  3. Создайте дерево каталогов FTP и установите правильные разрешения:
    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

     

    Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload.

На данный момент ваш FTP-сервер полностью работоспособен, и вы должны иметь возможность подключаться к вашему серверу с любым FTP-клиентом, который может быть настроен на использование шифрования TLS, например FileZilla.

 

По умолчанию при создании пользователя, если явно не указано, у пользователя будет доступ к серверу SSH.

Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто напечатает сообщение, сообщающее пользователю, что их учетная запись ограничивается только доступом к FTP.

Создайте оболочку /bin/ftponly и сделайте ее исполняемой:

echo -e '#!/bin/sh\necho "This account account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly

 

Добавьте новую оболочку в список допустимых оболочек в файл /etc/shells

echo "/bin/ftponly" | sudo tee -a /etc/shells

 

Измените оболочку пользователя на /bin/ftponly:

sudo usermod newftpuser -s /bin/ftponly

 

В этой статье вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе Ubuntu 18.04.

Exit mobile version