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

How to Setup FTP Server with VSFTPD on Ubuntu 18.04

24 Января 2021 | Ubuntu

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

Как настроить FTP-сервер с VSFTPD в Ubuntu 18.04
FTP (протокол передачи файлов) - это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее.

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

Для более безопасной и быстрой передачи данных используйте SCP или SFTP .

Прежде чем приступить

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

Установка vsftpd в Ubuntu 18.04 

Пакет 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 

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

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

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

sudo nano /etc/vsftpd.conf 

1. Доступ по FTP 

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

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

2. Включение загрузки 

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

/etc/vsftpd.conf
write_enable=YES
 

3. Chroot Jail 

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

/etc/vsftpd.conf
chroot_local_user=YES
 

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

Используйте один из приведенных ниже методов, чтобы разрешить загрузку при включенном chroot.

  • Метод 1. - Рекомендуемый метод разрешения загрузки - оставить включенным chroot и настроить каталоги FTP. В этом руководстве мы создадим ftp каталог внутри дома пользователя, который будет служить корневым uploads каталогом и каталогом с возможностью записи для загрузки файлов.

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp 

  • Метод 2. Другой вариант - добавить следующую директиву в файл конфигурации vsftpd. Используйте эту опцию, если вам необходимо предоставить пользователю доступ с правом записи к его домашнему каталогу.

    /etc/vsftpd.conf
    allow_writeable_chroot=YES 

4. Пассивные 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 файл (по одному пользователю в строке).

6. Защита передачи с помощью SSL / TLS 

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

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

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

Мы сгенерируем самоподписанный сертификат 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 

После того, как вы закончите редактирование, конфигурационный файл 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 disable sudo 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 

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

  • Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите 1-й шаг.
  • Если вы установили allow_writeable_chroot=YES в своем файле конфигурации, пропустите 3-й шаг.

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

    sudo adduser newftpuser 
    
    
  2. Добавьте пользователя в список разрешенных пользователей FTP:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list 
    
    
  3. Создайте дерево каталогов FTP и установите правильные разрешения :

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp 


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

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

Отключение доступа к оболочке 

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

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

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

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


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

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


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

sudo usermod newftpuser -s /bin/ftponly 


   Используйте ту же команду, чтобы изменить оболочку всех пользователей, которым вы хотите предоставить только доступ по FTP.

Заключение 

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


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...