Гид по технологиям

vsftpd и FTPS: установка и защита

6 min read Linux Обновлено 22 Dec 2025
vsftpd и FTPS: установка и защита
vsftpd и FTPS: установка и защита

Логотип FileZilla — популярный FTP-клиент

Быстрые ссылки

  • Что такое FTP?
  • Установка vsftpd
  • Настройка FTPS

Что такое FTP?

FTP (File Transfer Protocol) — стандартный протокол для передачи файлов между клиентом и удалённым сервером. Он проще в использовании, чем некоторые командные альтернативы, например:

scp

и часто применяется вместе с графическими клиентами вроде FileZilla, где файлы перетаскиваются мышкой между локальной и удалённой папкой.

Скриншот интерфейса FTP-клиента, демонстрация перетаскивания файлов

FTP исторически использовался для публичного обмена файлами. Сегодня его чаще применяют для административных задач и автоматизации. Важно помнить: стандартный FTP передаёт данные в открытом виде — поэтому для безопасности нужно применять FTPS (FTP поверх TLS) или использовать SFTP (FTP через SSH), в зависимости от сценария.

Важно: если пользователи входят в систему через FTP с использованием своих локальных учётных записей, они будут иметь те же права доступа, что и эти учётные записи. Планируйте права и изоляцию заранее.

Установка vsftpd

Ниже приведены шаги для Debian/Ubuntu-подобных систем; для других дистрибутивов используйте соответствующий пакетный менеджер (yum/dnf/pacman).

  1. Установка пакета:
sudo apt-get install vsftpd
  1. Запуск службы и включение автозапуска:
systemctl start vsftpd
systemctl enable vsftpd
  1. Аутентификация: основные варианты
  • Анонимный FTP — любой может войти без пароля. Используется для публичной раздачи файлов. По умолчанию отключён.
  • Вход локальных пользователей — любой пользователь из /etc/passwd может подключаться по имени и паролю.

Рекомендация: включайте локальную аутентификацию и держите анонимный доступ выключенным, если это не требуется для публичных загрузок.

  1. Базовая конфигурация

Откройте конфигурационный файл /etc/vsftpd.conf в любимом редакторе и измените или добавьте следующие строки:

local_enable=YES

Если нужно разрешить загрузку файлов через FTP, включите запись:

write_enable=YES

После изменения конфигурации перезапустите сервис:

systemctl restart vsftpd
  1. Ограничение доступа по списку пользователей

Если хотите разрешать FTP только определённым аккаунтам, используйте userlist. Создайте файл /etc/vsftpd.userlist и добавьте по одной строке имя каждого разрешённого пользователя:

nano /etc/vsftpd.userlist

А затем включите следующие опции в /etc/vsftpd.conf:

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

Это позволит вход только пользователям из списка и запретит всем остальным.

  1. Ограничение домашним каталогом (chroot)

Чтобы предотвратить доступ пользователей к верхним директориям файловой системы, включите chroot:

chroot_local_user=YES

Перезапустите vsftpd, чтобы изменения вступили в силу:

systemctl restart vsftpd

Настройка FTPS (TLS)

Стандартный FTP — незашифрованный. Настройка TLS защищает авторизацию и передаваемые данные.

  1. Генерация ключа и запроса на подпись (CSR)
openssl genrsa -des3 -out FTP.key
openssl req -new -key FTP.key -out certificate.csr
  1. Удаление пароля из ключа (vsftpd требует ключ без пароля)
cp FTP.key FTP.key.orig
openssl rsa -in FTP.key.orig -out ftp.key
  1. Создание самоподписанного сертификата (для тестов/внутреннего использования):
openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -out mycertificate.crt
  1. Копирование ключа и сертификата в системную директорию сертификатов (пример для систем с /etc/pki):
cp ftp.key /etc/pki/tls/certs/
cp mycertificate.crt /etc/pki/tls/certs
  1. Включение TLS в /etc/vsftpd.conf — добавьте или отредактируйте эти строки:
ssl_enable=YES
allow_anon_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt
rsa_private_key_file=/etc/pki/tls/certs/ftp.key
ssl_ciphers=HIGH
require_ssl_reuse=NO

После изменений перезапустите:

systemctl restart vsftpd

Важно: самоподписанный сертификат вызовет предупреждение в клиентах. Для публичных сервисов используйте сертификаты от доверенного центра сертификации или внутреннего PKI.

Безопасность и жёсткая настройка

  • Отключите анонимный доступ, если он не нужен (anonymous_enable=NO).
  • Используйте chroot для всех локальных пользователей (chroot_local_user=YES) и не давайте chroot пользователям с повышенными правами.
  • Ограничьте набор шифров через ssl_ciphers и запретите устаревшие протоколы (SSLv2/SSLv3).
  • Логи: настройте ротацию логов и мониторинг /var/log/vsftpd.log.
  • Принудительная проверка паролей: используйте PAM и политики сложности паролей.
  • Альтернатива: если у вас уже настроен SSH, рассмотрите SFTP (более простой и безопасный вариант для большинства задач).

Кому доверить FTPS:

  • Только администраторам — доступ root должен быть запрещён для FTP.
  • Пользователи без прав администратора — в chroot и с минимальными правами.

Когда FTPS не подходит

  • Если нужен доступ по ключам (SSH) и тот же набор пользователей уже в SSH — используйте SFTP.
  • Для интеграции с современными веб-приложениями часто удобнее HTTPS+WebDAV или API с авторизацией.

Чек-листы

Чек-лист администратора при запуске сервера

  • Установлен vsftpd и включён в автозапуск
  • local_enable=YES, write_enable при необходимости
  • Анонимный доступ отключён (anonymous_enable=NO)
  • chroot_local_user=YES для ограничения пользователей
  • Настроен userlist для белого списка, если требуется
  • TLS включён и сертификаты доступны по путям в конфиге
  • Логирование включено и настраивается ротация
  • Правила файрвола разрешают только нужные порты (обычно 21 и диапазон пассивных портов)

Чек-лист пользователя (что ожидать)

  • Получил имя пользователя и пароль
  • Получил адрес сервера и порт
  • Понял, что используется FTPS — клиент должен поддерживать TLS
  • При подключении клиент может попросить подтвердить сертификат (если самоподписанный)

Методика быстрой диагностики

  1. Проверить статус сервиса: systemctl status vsftpd
  2. Посмотреть логи: tail -n 200 /var/log/vsftpd.log или /var/log/syslog
  3. Попробовать подключиться с локальной машины: ftp localhost или FileZilla
  4. Проверить открытые порты: ss -lnp | grep vsftpd
  5. Если FTPS не подключается — убедиться, что клиент использует «explicit FTP over TLS», и открыты пассивные порты в файрволе.

Роли и ответственность

  • Системный администратор: установка, конфигурация, управление сертификатами, мониторинг логов.
  • Владелец данных: определение прав доступа и политики хранения файлов.
  • Аудитор/безопасник: проверка шифров, политик доступа, логирования и ротации.

Небольшой словарь (1 строка)

  • FTPS — FTP поверх TLS (шифрует канал); SFTP — FTP через SSH (альтернативный протокол).

Критерии приёмки

  • Успешный вход по локальной учётной записи через FTPS
  • Передача файла как от клиента к серверу, так и обратно
  • Записи о сессиях присутствуют в логах
  • Пользователь ограничен своим домашним каталогом (chroot)

Частые ошибки и их исправление

  • Ошибка: клиент не может установить TLS-соединение. Проверьте rsa_cert_file и rsa_private_key_file, убедитесь, что ключ не зашифрован паролем.
  • Ошибка: невозможно загрузить/скачать файлы в chroot. Убедитесь, что права файлов и директорий корректны и что vsftpd не запускается с привилегиями, мешающими chroot.
  • Ошибка: пассивные соединения не устанавливаются. Проверьте диапазон пассивных портов и правила файрвола.

Короткое резюме

vsftpd — простой и надёжный FTP-сервер. Для безопасной работы используйте FTPS (TLS), запрещайте анонимный доступ, ограничивайте пользователей chroot и следите за логами.

FAQ

Нужно ли мне использовать FTPS или лучше SFTP?

FTPS хорош для совместимости с существующими FTP-клиентами и инфраструктурой. SFTP (через SSH) обычно проще в настройке и безопаснее по умолчанию. Выбор зависит от совместимости и требований к управлению ключами/сертификатами.

Что делать, если клиент жалуется на самоподписанный сертификат?

Для внутренних сервисов добавьте ваш CA/сертификат в доверенные хранилища клиентов. Для публичных сервисов используйте сертификат от доверенного центра сертификации.

Какие порты нужно открыть в файрволе?

Обычно порт 21 для командного канала и диапазон пассивных портов (настраивается в vsftpd.conf через pasv_min_port и pasv_max_port). Не забудьте также разрешить исходящие подключения для клиентов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сохранить мотивацию к тренировкам зимой
Фитнес

Как сохранить мотивацию к тренировкам зимой

Больше фильтров, линз и стикеров для Snapchat
Социальные сети

Больше фильтров, линз и стикеров для Snapchat

Версии фото в Adobe Lightroom: просмотр, создание, удаление
Обучение

Версии фото в Adobe Lightroom: просмотр, создание, удаление

Панель анимации PowerPoint: руководство
Презентации

Панель анимации PowerPoint: руководство

Kodi + Amazon Echo: голосовое управление
Умный дом

Kodi + Amazon Echo: голосовое управление

Сцены HomeKit — создание и использование
Умный дом

Сцены HomeKit — создание и использование