Как настроить FTP-сервер с VSFTPD в Debian 9

How to Setup FTP Server with VSFTPD on Debian 9

2 Мая 2021 | Debian

В этом руководстве объясняется, как установить и настроить vsftpd (Very Secure Ftp Daemon) в Debian 9.

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

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Наиболее популярными и широко используемыми являются PureFTPd , ProFTPD и vsftpd .

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


Прежде чем продолжить

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

 

Установка vsftpd на Debian 9

Пакет vsftpd доступен в репозиториях Debian. Установка довольно проста:

 

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-12-10 11:42:51 UTC; 53s ago
 Main PID: 1394 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

 

Настройка vsftpd

Сервер vsftpd можно настроить, изменив vsftpd.conf файл, находящийся в /etc каталоге.

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

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

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

 

sudo nano /etc/vsftpd.conf 

 

1. Доступ по FTP 

Найдите anonymous_enable и local_enable директивы и подтвердить свой матч конфигурации линий ниже:

 

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

 

Это гарантирует, что только локальные пользователи могут получить доступ к FTP-серверу.

 

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-соединения.

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

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

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

 

5. Ограничение входа пользователя

Чтобы разрешить вход на 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/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
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-сервер в вашей системе Debian 9.

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