ProFTPD (Pro FTP Daemon) — FTP-сервер с открытым исходным кодом для Unix-систем. В отличие от большинства FTP-серверов, унаследованных от BSD ftpd, ProFTPD написан с нуля с акцентом на безопасность и гибкость конфигурации. Синтаксис конфигурационного файла намеренно повторяет структуру Apache: директивы, секции, виртуальные хосты.
Как работает
ProFTPD запускается как standalone-демон или через systemd, прослушивает порт 21 (FTP) и порт 990 (Implicit FTPS). Конфигурационный файл /etc/proftpd/proftpd.conf — основной; дополнительные конфиги подключаются директивой Include /etc/proftpd/conf.d/*.conf. Пользователи аутентифицируются через PAM, LDAP, MySQL или PostgreSQL (через модули).
Архитектура ProFTPD модульная. Базовый набор функций расширяется mod_*-модулями:
mod_tls— поддержка FTPS (TLS-шифрование). Настраивается через директивы TLSEngine, TLSRequired, TLSProtocol.mod_sftp— поддержка SFTP через SSH (необычно для FTP-сервера, но полезно).mod_sql— аутентификация через MySQL/PostgreSQL: виртуальные пользователи без системных учётных записей.mod_quota— дисковые квоты на пользователя.mod_ban— автоматическая блокировка IP при неудачных попытках входа (аналог Fail2ban внутри ProFTPD).mod_wrap— интеграция с hosts.allow/hosts.deny для ограничения доступа по IP.
Виртуальные FTP-серверы позволяют на одном IP обслуживать несколько доменов с разными корневыми директориями и наборами пользователей — это аналог виртуальных хостов Apache. Каждый виртуальный сервер оборачивается в блок <VirtualHost>.
Конфигурация: минимальный пример
ServerName "ProFTPD Server"
ServerType standalone
DefaultServer on
Port 21
PassivePorts 49152 65534
RootLogin off
RequireValidShell off
<Anonymous /var/ftp/pub>
User ftp
Group nogroup
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
История
ProFTPD создан Андреасом Шейером в 1997 году. Мотивация — безопасность и гибкость: существующие FTP-серверы (wu-ftpd, BSD ftpd) страдали от уязвимостей и ограниченных возможностей конфигурации. Версия 1.0 вышла в 1999 году. В 2000-е ProFTPD занял место одного из трёх наиболее распространённых FTP-серверов в Linux (наряду с vsftpd и Pure-FTPd). В 2008 году обнаружена критическая уязвимость удалённого выполнения кода. ProFTPD активно развивается: версия 1.3.8 (2023) добавила поддержку TLS 1.3 и OpenSSL 3.
ProFTPD vs vsftpd vs Pure-FTPd
| Критерий | ProFTPD | vsftpd | Pure-FTPd |
|---|---|---|---|
| Конфигурация | Apache-подобная, гибкая | Простая, минималистичная | Флаги командной строки |
| Модули | Богатая экосистема | Ограниченная | Средняя |
| SFTP | Да (mod_sftp) | Нет | Нет |
| Виртуальные пользователи | Да (mod_sql) | Ограниченно | Да |
На что обращать внимание
ProFTPD при установке требует отключить аутентификацию root: директива RootLogin off должна быть в конфиге. При использовании пассивного режима задайте диапазон PassivePorts и откройте его в iptables. Без mod_tls все данные передаются в открытом виде. Для хостинг-панелей (ISPmanager, cPanel) ProFTPD часто поставляется как встроенный FTP-сервер с преднастроенной конфигурацией.
ProFTPD и безопасность
ProFTPD — один из наиболее функциональных FTP-серверов с модульной архитектурой. На ISPmanager ProFTPD устанавливается как часть хостинг-стека для FTP-доступа клиентов к их сайтам. Рекомендуется использовать FTPS (FTP over TLS) вместо plain FTP: трафик шифруется SSL-сертификатом. Fail2ban для ProFTPD: jail для блокировки брутфорса FTP-паролей. Passive mode (пассивный режим) с ограниченным диапазоном портов обязателен при работе за NAT/файрволом.