vsftpd — FTP-демон для Linux, написанный Крисом Эвансом (Chris Evans) с нуля с фокусом на безопасность. Используется на миллионах серверов, включая ftp.kernel.org, ftp.debian.org. Поддерживает FTP (порты 20/21), FTPS (FTP over TLS) и passive mode для работы через фаервол.
Как работает
vsftpd запускается как системный сервис (systemctl start vsftpd). Конфигурационный файл: /etc/vsftpd.conf. Ключевые параметры:
anonymous_enable=NO— отключить анонимный доступ.local_enable=YES— разрешить системным пользователям.chroot_local_user=YES— ограничить пользователей домашней директорией.ssl_enable=YES— включить FTPS (FTP over TLS).pasv_min_port/pasv_max_port— диапазон портов для passive mode.
Passive mode: клиент инициирует данные соединение к серверу через случайный порт (не 21) — необходимо для клиентов за NAT/фаерволом. Active mode (PORT) — сервер инициирует соединение к клиенту, работает ненадёжно через NAT.
История
vsftpd выпущен Крисом Эвансом (Chris Evans, исследователь безопасности Google) в 2001 году. Включён в дистрибутивы RHEL, CentOS, Ubuntu. К 2024 году активно поддерживается, используется на большинстве cPanel-серверов как основной FTP-сервер.
Безопасность
vsftpd использует разделение привилегий: незапривилегированный helper-процесс обрабатывает подключения, privileged-процесс выполняет только операции, требующие прав. Это ограничивает ущерб при эксплуатации уязвимости. Исторически vsftpd имел меньше CVE, чем ProFTPd и Pure-FTPd.
Связь с хостингом
На VPS с cPanel vsftpd — стандартный FTP-сервер. При настройке важно: открыть порт 21 и диапазон passive-портов (обычно 40000-50000) в CSF фаерволе. Для безопасности рекомендуется SFTP вместо vsftpd: не требует открытия диапазона портов, шифрование встроено в SSH. FTP используют когда клиент поддерживает только FTP-протокол.
Ключевые отличия от похожих терминов
ProFTPd — более гибкий FTP-сервер с модульной архитектурой. Pure-FTPd — альтернатива с виртуальными пользователями без системных аккаунтов. SFTP — безопаснее FTP, используется поверх SSH, не vsftpd. vsftpd поддерживает FTPS (FTP+TLS), что повышает безопасность при необходимости использовать FTP.
Настройка vsftpd для production
vsftpd (Very Secure FTP Daemon) — быстрый, минималистичный. Конфиг /etc/vsftpd.conf: anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
passive_enable=YES
pasv_min_port=40000
pasv_max_port=50000. Пассивный режим необходим за NAT.
Активный vs пассивный режим FTP
Активный режим: сервер подключается к клиенту (не работает за NAT). Пассивный: клиент подключается к серверу на диапазон портов. Для клиентов за NAT — только пассивный. Диапазон pasv_min_port–pasv_max_port открыть в UFW/iptables.
FTPS vs SFTP
vsftpd поддерживает FTPS (FTP+TLS) через ssl_enable=YES. Но в 2024 году SFTP предпочтительнее: проще для клиентов и файрволов. vsftpd актуален в хостинговых панелях (cPanel использует ProFTPD, Plesk — ProFTPD или vsftpd) для legacy-клиентов с FTP-клиентами типа FileZilla.