
Vsftpd — это FTP-сервер, который очень сознательно разработан для обеспечения безопасности. Например, программа проверяет свою конфигурацию и права всех файлов, к которым она должна получить доступ, перед запуском и отказывается запускаться, если она неправильно сконфигурирована.
Кроме того, Vsftpd является единственным FTP-сервером в «главная» ветви дистрибутива Ubuntu, то есть гарантированно поддерживается и получает обновления безопасности. То же самое можно сказать и о других FTP-серверах из ветвей «вселенная/мультиверс».
И последнее, но не менее важное: Vsftpd очень прост в настройке. Без громоздких конфигурационных файлов вы можете предоставить локальным пользователям доступ к их домашней директории или настроить анонимный FTP-доступ. Кроме этого FTP-сервера с открытым исходным кодом, PureFTPd и ProFTPD — другие известные имена в этой категории.
Шаги по установке FTP-сервера VSFTPD на Ubuntu 22.04
Приведенные здесь шаги также могут быть использованы на Ubuntu 20.04, Debian 11, Linux Mint и других подобных дистрибутивах Linux.
1. Обновите Ubuntu 24.04 или 22.04
Начнем с запуска команды обновления системы, поскольку для установки VSFTPD мы будем использовать менеджер пакетов APT. Этот шаг гарантирует, что все последние доступные обновления находятся в нашей системе.
sudo apt update && sudo apt upgrade
2. Установите VSFTPD на Ubuntu 24.04 или 22.04
Нам не нужно добавлять сторонние репозитории или скачивать deb-бинары вручную, потому что достаточно официального репозитория Ubuntu; используйте команду менеджера пакетов APT, приведенную ниже, и все готово:
sudo apt install vsftpd

3. Проверьте, активна ли служба Vsftpd
После завершения установки давайте проверим, что служба этого FTP-сервера работает в фоновом режиме, не выдавая никаких ошибок.
systemctl status vsftpd --no-pager -l

4. Создайте пользователя для FTP на Ubuntu 24.04 или 22.04
Создадим пользователя без доступа sudo. Мы будем использовать его только для доступа к папке в его домашнем каталоге для FTP, чтобы читать и записывать файлы.
sudo adduser h2smedia
Примечание: Изменить h2smedia
на любое имя, которое вы хотите дать своему пользователю. Приведенная выше команда также попросит вас задать пароль пользователя.
5. Создайте папку FTP:
Теперь создадим папку в домашней директории только что созданного пользователя пользователя , так что пользователь может получить доступ к нему только для загрузки и скачивания файлов. Однако, чтобы ограничить доступ пользователя только к некоторым определенным каталогам, vsftpd использует chroot, который нам также необходимо включить, что мы и сделаем далее в этой статье. Еще одна проблема заключается в том, что VSFTPD не позволит пользователю подключиться к FTP-серверу, если его домашний каталог доступен для записи. Поэтому мы создаем корневой каталог для пользователя с именем FTP под домашним каталогом пользователя, который будет действовать как chroot
, а внутри него будет еще один каталог, известный как upload, в котором будут храниться файлы.
Примечание: Не забудьте заменить h2smedia
на созданного вами пользователя.
sudo mkdir /home/h2smedia/ftp
Настройте права собственности:
sudo chown nobody:nogroup /home/h2smedia/ftp
Снимите разрешение на запись корневой папки FTP:
sudo chmod a-w /home/h2smedia/ftp
Создайте каталог для загрузки файлов, в котором будут храниться ваши файлы:
sudo mkdir /home/h2smedia/ftp/upload
Передайте право собственности на созданную папку загрузки нашему FTP-пользователю
sudo chown h2smedia:h2smedia /home/h2smedia/ftp/upload
Теперь, для проверки, давайте создадим демо-файл в папке upload:
echo "My FTP Server" | sudo tee /home/h2smedia/ftp/upload/demo.txt
Наконец, проверьте права доступа к FTP-каталогу:
sudo ls -la /home/h2smedia/ftp

6. Настройка VSFTPD на Ubuntu 24.04 или 22.04
После установки файл конфигурации /etc/vsftpd.conf
необходимо адаптировать к вашим потребностям с помощью редактора. Файл подробно прокомментирован. Тем не менее, ниже приведены наиболее важные настройки.
sudo nano /etc/vsftpd.conf
7. Как включить анонимного пользователя
(необязательно) По умолчанию, в целях безопасности, никто не может войти на FTP-сервер анонимно (без использования действительного пользователя). Однако, если вы хотите включить эту функцию по какой-либо причине, найдите строку. anonymous_enable=No
и измените НЕТ на ДА.
8. Включить пользователя локального FTP
Чтобы получить доступ к FTP-серверу с помощью созданных и доступных в вашей системе пользователей, вы можете найти строку, приведенную ниже, в файле конфигурации Vsftpd на Ubuntu 24.04 или 22.04:
local_enable=YES
По умолчанию, установлено значение ДА или включена, поэтому ничего делать не нужно.
9. Включить загрузку файлов и папок
В базовой конфигурации ни один пользователь не имеет права писать по FTP. Ни локальным пользователям (если они разрешены параметром «local_enable=YES»), ни анонимным пользователям. Чтобы разрешить загрузку файлов на FTP-сервер, нам необходимо
# Снимите этот комментарий, чтобы разрешить любому виду FTP записывать команду.
write_enable=YES

10. Ограничение доступа локальных пользователей к их домашнему каталогу
Теперь ограничьте локальных пользователей их домашними каталогами. Таким образом, они не смогут получить доступ к файлам за пределами своих домашних каталогов. Пожалуйста, найдите следующую строку и удалите # , указанный перед ним, чтобы включить его.
chroot_local_user=YES

Прокрутите файл до конца и до следующих строк. Это обеспечит, что когда пользователь входит на FTP-сервер, он направляется в каталог, к которому должен быть получен доступ.
user_sub_token=$USER local_root=/home/$USER/ftp
Установите пассивные порты:
Vsftpd по умолчанию использует активный режим на портах 20 / 21 для обмена данными. Однако если вы хотите установить и пассивный режим, который работает, если между клиентом и сервером есть проблемы с брандмауэром, то для работы этого процесса и сервер, и клиент должны поддерживать пассивный режим FTP. Пассивные порты также должны быть разрешены в брандмауэре сервера. Узнайте о его настройке.
pasv_min_port=30000 pasv_max_port=31000
Также добавьте следующие строки, чтобы VSFTPD разрешал доступ к FTP-серверу только тем пользователям, которые есть в его списке, а не случайным.
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Сохраните файл, используя Ctrl+O, нажмите кнопку Введите Клавиша и Выход из файла с помощью Ctrl+X.
Также не забудьте открыть порты в брандмауэре. Если вы используете UFW, используйте эту команду; в противном случае откройте их в облачном или сетевом брандмауэре. Порт 900 предназначен для TLS.
sudo ufw allow 20,21,990/tcp
sudo ufw allow 30000:31000/tcp
11. Добавьте созданного пользователя в список пользователей VSFTPD
Далее добавьте созданного пользователя в файл списка пользователей VSFTPD, чтобы он мог войти в систему и получить доступ к FTP-серверу.
echo "h2smedia" | sudo tee -a /etc/vsftpd.userlist
Примечание: Заменить h2smedia
на созданного вами пользователя.
12. Перезапустите сервер VSFTPD
Чтобы применить внесенные изменения, перезапустите службу FTP-сервера один раз:
sudo systemctl restart vsftpd
13. Подключение для тестирования FTP-сервера
Мы можем использовать как командную строку, так и GUI-приложение, чтобы протестировать сервер и определить, работает ли он. Сначала попробуем с помощью командной строки:
Использование командной строки
-p
для пассивного режима
ftp -p 192.168.135.129
Примечание: Заменить 192.168.135.129
на адрес вашего сервера Ubuntu 22.04, на котором установлен VSFTPD.
Поскольку он запрашивает Имя, введите FTP-сервер имя пользователя и сайт пароль вы установили. Если вы все настроили правильно, вы можете войти в систему.

Тест с использованием файла Zilla
Здесь мы используем FTP-клиент FileZilla с графическим интерфейсом; вы можете использовать любой другой, который у вас есть. В FTP-клиенте введите IP-адрес сервера Ubuntu 24.04 или 22.04, на котором вы настроили VSFTPD. После этого добавьте имя пользователя и пароль.

14. Настройка SSL/TSL для Vsftpd на Ubuntu 24.04 или 22.04
По умолчанию передача данных с помощью FTP-сервера Vsftpd не шифруется, даже учетные данные. Чтобы устранить этот недостаток безопасности, мы можем настроить SSL с помощью OpenSSL для обеспечения шифрования.
В командном терминале сначала выполните команду:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Это сгенерирует необходимый 2048-битный закрытый ключ и самоподписанный SSL-сертификат.
После генерации SSL-сертификата отредактируйте конфигурационный файл VSFTPD и добавьте местоположение закрытого ключа и SSL-сертификата.
sudo nano /etc/vsftpd.conf
Прокрутите вниз, чтобы найти следующие строки и измените их значения, как показано далее:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyssl_enable=NO
Измените значения rsa_cert_file
и rsa_private_key_file
директивы с указанием пути к файлу SSL & Private Key, который мы сгенерировали. Также измените ssl_enable=NO
на ssl_enable=YES
. Как показано ниже:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Также прокрутите файл до конца и добавьте:
allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES
Это запретит доступ к анонимному соединению через SSL и заставит пользователей передавать данные и входить в систему только через SSL:
Сохраните файл, используя Ctrl+O, нажмите кнопку Введите и выйдите с помощью клавиши Ctrl+X.
Перезапустите FTP-сервер:
sudo systemctl restart vsftpd
Теперь проверьте, можем ли мы получить доступ к FTP-серверу через TSL. Здесь мы снова используем FileZilla:


15. Как обновить VSFTPD
Поскольку мы использовали системный репозиторий по умолчанию для установки этого FTP-сервера с открытым исходным кодом, мы также можем использовать команду обновления системы, чтобы получить будущие обновления для этого серверного приложения.
sudo apt update && sudo apt upgrade
16. Деинсталляция или удаление
Чтобы полностью удалить VSFTPD из Ubuntu 24.04 или 22.04, если вам больше не нужен этот FTP-сервер в вашей системе. Тогда вот команда, которую нужно выполнить:
sudo apt autoremove --purge vsftpd*
FAQ
VSFTPD означает Very Secure FTP Daemon. Это FTP-сервер с открытым исходным кодом для Unix и Linux, предназначенный для передачи данных с FTP-клиента на сервер и наоборот.
FTP это протокол передачи файлов (сокращенно FTP), а VSFTP — это серверное приложение, которое предоставляет платформу для эффективного и безопасного использования протокола FTP. FTP используется в больших сетях или серверах для обмена файлами между серверами и компьютерами или сетями и компьютерами. Мы можем использовать протокол FTP для создания, перемещения или удаления каталогов на сервере или в сети.
Да, VSFTPD — один из самых безопасных FTP-серверов с открытым исходным кодом, доступных для бесплатного использования. Он безопасен, обеспечивает высокую скорость и стабильность.
Vsftpd использует протокол FTP (File transfer protocol) для передачи данных, и он расшифровывается как «Очень безопасный FTP-демон.»
Да, VSFTPD — это серверное приложение с открытым исходным кодом, лицензированное под GNU General Public License. Поэтому его исходный код доступен всем.