FTP сервер · 6 min read · Dec 22, 2025

Как установить безопасный FTP-сервер с vsftpd на Debian 12

vSFTPd или Very Secure FTP Daemon — это бесплатное и открытое программное обеспечение для FTP-сервера. Это демон FTP для операционных систем, подобных Unix, и лицензирован под лицензией GNU General Public License. vSFTPd является одним из самых широко используемых демонов FTP, он быстрый и легковесный с точки зрения системных ресурсов, безопасный благодаря интеграции PAM и SSL, и стабильный. vSFTPd завоевал доверие крупных компаний, таких как RedHat, SUSE, Debian, Gnome, KDE и др., благодаря своей сложности.

vSFTPd может работать с IPv6 и поддерживает виртуальные IP-конфигурации и пользователей. Его можно запускать как отдельный демон или через inetd. Для управления пользователями vSFTPd предоставляет функцию, позволяющую пользователям устанавливать свою собственную конфигурацию, такую как ограничения по IP-адресу, возможность перенастройки и ограничение пропускной способности. Кроме того, vSFTPd поддерживает модуль аутентификации плагина (PAM) для виртуальных пользователей и также обеспечивает интеграцию безопасности с SSL/TLS.

В этом руководстве вы узнаете, как настроить и создать безопасный FTP-сервер с vsftpd на сервере Debian 12. В этом руководстве вы также узнаете, как защитить установку вашего FTP-сервера с помощью UFW (Uncomplicated Firewall) и как подключиться к FTP-серверу с помощью FTP-клиента FileZilla.

Предварительные требования

Перед тем как продолжить, убедитесь, что у вас есть следующее:

  • Сервер Debian 12.
  • Пользователь, не являющийся root, с правами администратора sudo.
  • Пакет openssl установлен на вашем сервере.

Установка vsftpd

vsftpd — это реализация протокола FTP для операционных систем UNIX и Linux. Пакет vsftpd доступен на большинстве дистрибутивов Linux, включая Debian. Теперь вы установите vsftpd через APT и проверите службу vsftpd, чтобы убедиться, что служба работает.

Перед установкой пакета vsftpd выполните следующую команду, чтобы обновить репозиторий Debian.

sudo apt update

обновить репозиторий

Теперь установите пакет vsftpd, используя команду apt install ниже.

sudo apt install vsftpd

Подтвердите установку, набрав y и нажав ENTER.

установить vsftpd

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

sudo systemctl is-enabled vsftpd  
sudo systemctl status vsftpd

Следующий вывод подтверждает, что служба vsftpd работает и включена. Также служба vsftpd будет запущена автоматически при загрузке системы.

проверить vsftpd

Настройка vsftpd

На следующем шаге вы настроите и создадите безопасный FTP-сервер с vsftpd. Вы сгенерируете SSL/TLS сертификаты и измените конфигурацию по умолчанию vsftpd /etc/vsftpd.conf.

Сначала выполните команду openssl ниже, чтобы сгенерировать новые TLS сертификаты, которые будут использоваться для установки вашего сервера vsftpd.

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

Введите свои данные, когда будет запрошено. После завершения процесса ваши TLS сертификаты будут доступны по адресу /etc/ssl/private/vsftpd.pem.

сгенерировать tls

Теперь выполните команду ниже, чтобы создать новый файл /etc/vsftpd.userlist для хранения FTP пользователей.

touch /etc/vsftpd.userlist

После этого выполните следующую команду для резервного копирования конфигурации vsftpd. Затем откройте конфигурацию vsftpd /etc/vsftpd.conf с помощью редактора nano.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig  
sudo nano /etc/vsftpd.conf

Отключите анонимный доступ к вашему серверу vsftpd, изменив параметр anonymous_enable на NO.

anonymous_enable=NO

Разрешите локальным пользователям из файла /etc/passwd и пользователям PAM входить на сервер vsftpd, изменив параметр local_enable на YES.

local_enable=YES

Разрешите FTP пользователям загружать файлы на сервер vsftpd, изменив параметр write_enable на YES.

write_enable=YES

Теперь включите chroot или тюрьму для FTP пользователей, добавив следующие параметры. Это заблокирует FTP пользователя в директории /home/$USER/chroot. Например, FTP пользователь bob будет заблокирован в директории /home/bob/chroot.

chroot_local_user=YES  
user_sub_token=$USER  
local_root=/home/$USER/chroot

Далее добавьте следующую конфигурацию для настройки виртуальных пользователей vsftpd. Любой пользователь в файле /etc/vsftpd.userlist будет иметь возможность войти на сервер vsftpd.

userlist_enable=YES  
userlist_file=/etc/vsftpd.userlist  
userlist_deny=NO

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

rsa_cert_file=/etc/ssl/private/vsftpd.pem  
rsa_private_key_file=/etc/ssl/private/vsftpd.pem  
ssl_enable=YES  
force_local_data_ssl=YES  
force_local_logins_ssl=YES  
ssl_tlsv1=YES  
ssl_sslv2=NO  
ssl_sslv3=NO  
require_ssl_reuse=NO  
ssl_ciphers=HIGH

Теперь добавьте конфигурацию ниже, чтобы настроить пассивные соединения с использованием портов между 20000 и 25000.

pasv_min_port=20000  
pasv_max_port=25000

Сохраните и выйдите из файла, когда закончите.

Теперь выполните следующую команду systemctl, чтобы перезапустить службу vsftpd и применить внесенные изменения.

sudo systemctl restart vsftpd

С этим ваш сервер vsftpd теперь работает с новыми конфигурациями.

Настройка брандмауэра

На следующем шаге вы установите UFW (Uncomplicated Firewall) на своем сервере Debian и защитите установку вашего FTP-сервера с его помощью. Вы установите UFW через APT, откроете порты FTP-сервера 20:21/tcp и порты для пассивного соединения данных 20000:25000/tcp.

Установите UFW, используя следующую команду apt. Наберите y, чтобы продолжить установку.

sudo apt install ufw

установить ufw

После установки UFW выполните команды ufw ниже, чтобы открыть порт для службы OpenSSH, порты сервера vsftpd 20:21 и пассивное FTP соединение между портами 20000 и 25000.

sudo ufw allow OpenSSH  
sudo ufw allow 20:21/tcp  
sudo ufw allow 20000:25000/tcp

Затем выполните команду ufw ниже, чтобы запустить и включить UFW.

sudo ufw enable

Введите для подтверждения, и UFW должен работать и быть включенным на вашей системе Debian.

настройка ufw

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

sudo ufw status

Вывод active подтверждает, что UFW работает и включен. Также служба OpenSSH добавлена, и некоторые порты для сервера vsftpd 20:21/tcp и 20000:25000/tcp добавлены.

проверить ufw

Настройка виртуальных пользователей FTP

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

Выполните следующую команду, чтобы создать новый файл /bin/ftponly. Затем сделайте его исполняемым с помощью команды chmod ниже. Файл /bin/ftponly будет использоваться в качестве оболочки по умолчанию для FTP пользователей.

echo -e '#!/bin/sh
echo "Shell for FTP users only."' | sudo tee -a  /bin/ftponly  
sudo chmod a+x /bin/ftponly

Добавьте файл /bin/ftponly в /etc/shells, чтобы убедиться, что это действительная оболочка.

sudo echo "/bin/ftponly" >> /etc/shells

Теперь создайте нового FTP пользователя bob и установите пароль, выполнив команду ниже. Введите свой пароль и повторите его.

sudo useradd -m -s /bin/ftponly bob  
sudo passwd bob

После этого выполните следующую команду, чтобы создать новую директорию chroot /home/bob/chroot для пользователя bob. Также вы убедитесь, что директория chroot /home/bob/chroot имеет правильное владение.

sudo -u bob mkdir -p /home/bob/chroot  
sudo chown -R bob: /home/bob/chroot

Далее выполните команду ниже, чтобы создать еще две новые директории data и upload, которые будут использоваться для хранения данных FTP пользователя. Убедитесь, что вы настроили правильное владение для этих директорий.

sudo -u bob mkdir -p /home/bob/chroot/{data,upload}  
sudo chown -R bob: /home/bob/chroot/{data,upload}

Теперь выполните команду ниже, чтобы изменить разрешения директории /home/bob/chroot на 550, а обе директории data и upload на 750.

sudo chmod 550 /home/bob/chroot  
sudo chmod 750 /home/bob/chroot/{data,upload}

Теперь, когда вы создали нового пользователя, выполните команду ниже, чтобы добавить пользователя bob в файл /etc/vsftpd.userlist.

echo "bob" >> /etc/vsftpd.userlist

Наконец, выполните следующую команду, чтобы перезапустить службу vsftpd и применить изменения. После выполнения команды ваш FTP пользователь bob готов.

sudo systemctl restart vsftpd

Загрузка файлов на FTP сервер

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

Скачайте и установите FTP-клиент для вашего локального компьютера. Вы можете использовать FileZilla, который можно установить на Windows, Linux и MacOS. После установки FileZilla откройте его, чтобы подключиться к вашему безопасному FTP серверу.

Введите IP-адрес вашего FTP сервера, а также имя пользователя и пароль вашего FTP пользователя. Затем нажмите Quickconnect, чтобы подтвердить.

Выберите опцию Always trust this certificate in future sessions и нажмите OK, чтобы подтвердить.

принять сертификаты

После подключения к вашему FTP серверу вы должны увидеть две директории data и upload, доступные на вашем FTP сервере. Вы можете загружать файлы в обе директории data и upload, но не можете загружать файлы вне этих директорий, защищенных через chroot.

подключено к ftp серверу

Вы можете перетаскивать файлы для загрузки на FTP сервер.

загруженные файлы

Заключение

В заключение, вы успешно создали безопасный FTP сервер с vsftpd на сервере Debian 12. Вы также защитили установку вашего FTP сервера с помощью UFW (Uncomplicated Firewall) и узнали, как создавать FTP пользователей. Теперь вы можете использовать FTP сервер в качестве основного средства передачи данных между вашим локальным компьютером и вашим сервером. Вы также можете найти другое программное обеспечение FTP-клиента по вашему выбору.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.