Полная инструкция по ProFTPD для обычного пользователя и администратора с примерами конфигураций, чек‑листами и приёмами диагностики от лица профессионального разработчика.
ProFTPD — гибкий, модульный и производительный FTP‑сервер со стилем конфигурации, похожим на Apache, поддержкой FTPS (mod_tls), SFTP (mod_sftp), виртуальных пользователей и расширенного логирования.
- Что такое ProFTPD
- Пользователю: подключение
- Режимы передачи (активный/пассивный)
- Возобновление и перезапись
- Установка и запуск (Ubuntu/Debian)
- Структура конфигураций и режим запуска
- Базовые параметры производительности
- Изоляция пользователей (chroot)
- Анонимный доступ
- Виртуальные пользователи (без системных аккаунтов)
- Отображение владельцев в листингах
- FTPS (TLS/SSL) через mod_tls
- Имплицитный FTPS и особенности ALPN/NPN
- FTPS за NAT/балансировщиками
- SFTP (SSH2) через mod_sftp
- Ключи и совместимость SFTP
- NAT, PassivePorts и MasqueradeAddress
- Ограничение доступа (, )
- Логи и отладка
- Производительность и лимиты
- Примеры конфигураций
- Установка FTPS на Ubuntu (пример)
- Частые ошибки и решения
- Чек‑лист перед вводом в эксплуатацию
- Быстрая диагностика
- Источники информации

Что такое ProFTPD
ProFTPD ориентирован на безопасность и масштабируемость, имеет богатую экосистему модулей и понятный синтаксис конфигурации, что делает его удобным для продакшена и многоарендных сценариев.proftpd+1
Официальная документация включает FAQ, HOWTO и подробные страницы модулей, где описаны FTPS, SFTP, NAT, виртуальные пользователи и расширенные политики доступа.proftpd+1
Пользователю: подключение
Подключение по FTP выполняется к хосту и порту 21, для FTPS выбирается явный TLS (Explicit TLS) на порту 21 с командой AUTH TLS либо неявный TLS на выделенном порту (например, 990) при соответствующей настройке сервера.proftpd+1
SFTP в ProFTPD обеспечивает модуль mod_sftp по протоколу SSH2 и работает на одном TCP‑соединении, что предпочтительно за NAT и строгими файрволами по сравнению с FTPS, требующим дополнительных портов.proftpd
Режимы передачи (активный/пассивный)
FTP использует отдельные каналы: управляющий и данные; в активном режиме сервер инициирует канал данных, а в пассивном — клиент, что влияет на правила файрвола и необходимость открытия диапазонов портов.proftpd
На практике пассивный режим чаще стабилен через NAT и корпоративные сети, но требует на стороне сервера ограничить PassivePorts и корректно настроить внешний адрес, если сервер за NAT.proftpd
Возобновление и перезапись
Чтобы возобновление (REST) и перезапись работали, на сервере должны быть разрешены соответствующие директивы (например, AllowStoreRestart/AllowRetrieveRestart/AllowOverwrite); некоторые опции несовместимы друг с другом (например, HiddenStores с рестартом).proftpd
Если клиент не может продолжить загрузку/выгрузку или получать листинг, причиной часто являются запреты в конфигурации или проблемы с пассивными портами/файрволом.proftpd
Установка и запуск (Ubuntu/Debian)
В Ubuntu/Debian установка выполняется из репозитория, с последующим запуском и автозапуском через systemd, что позволяет быстро поднять базовый сервер.atlantic+1
Типичный порядок: apt-get install proftpd, проверка статуса systemctl status proftpd и включение модуля шифрования (proftpd-mod-crypto) и FTPS-конфигурации при необходимости.ubuntu+1
Структура конфигураций и режим запуска
Основной файл конфигурации — /etc/proftpd/proftpd.conf, часто используются включения из /etc/proftpd/conf.d/ и/или tls.conf/modules.conf для модульной структуры.ubuntu
Запуск возможен как standalone (ServerType standalone) или через super‑server (inetd/xinetd), что влияет на модель управления соединениями и масштабируемость.proftpd
Базовые параметры производительности
Для ускорения аутентификации и снижения задержек рекомендуется отключить reverse DNS и ident‑запросы: UseReverseDNS off и IdentLookups off.ubuntu
Также задаются ServerName, Umask, User/Group и включаемые файлы, после чего конфигурацию следует валидировать тестом перед рестартом демона.ubuntu
Изоляция пользователей (chroot)
DefaultRoot ~ «сажает» пользователя в его домашний каталог, ограничивая видимую часть файловой системы и уменьшая риск случайного доступа к чужим данным.proftpd
Важно обеспечить корректные владельцев/права домашних директорий и учитывать, что chroot требует привилегий на запуск соответствующего системного вызова.proftpd
Анонимный доступ
Блок <Anonymous> позволяет включить гостевой доступ: как правило чтение разрешено, а запись — только в специально выделенном incoming с запретом чтения/удаления, чтобы избежать утечек и злоупотреблений.proftpd
Для анонимного входа применяются UserAlias, AnonRequirePassword off и RequireValidShell off для служебной учётной записи, а права каталогов задаются жёстко.proftpd
Виртуальные пользователи (без системных аккаунтов)
Для учёток без системного доступа используются AuthUserFile/AuthGroupFile с форматом как в /etc/passwd и /etc/group, которые читает модуль mod_auth_file.proftpd+1
Файлы с паролями и группами должны иметь строгие права и не находиться в world‑writable директориях, иначе модуль откажется их использовать; записи удобно создавать утилитой ftpasswd.proftpd+1
Отображение владельцев в листингах
Для мультиарендных сценариев возможна «косметическая» подмена владельца/группы в листингах через DirFakeUser/DirFakeGroup, чтобы показывать файлы как принадлежащие залогиненному пользователю.proftpd
Этот приём не меняет реальных владельцев и может влиять на ожидания клиентов, поэтому при необходимости комбинируется с HideNoAccess и ограничениями по каталогам.proftpd
FTPS (TLS/SSL) через mod_tls
mod_tls реализует FTPS и требует загрузки модуля, указания сертификатов/ключей и явного включения движка TLS с заданием протоколов и политик.proftpd
Базовые директивы: TLSEngine on, TLSProtocol TLSv1.2 TLSv1.3, TLSRSACertificateFile/TLSRSACertificateKeyFile, TLSRequired on/ctrl, TLSOptions (например, NoSessionReuseRequired), TLSLog для отладки.proftpd+1
Имплицитный FTPS и особенности ALPN/NPN
Для неявного FTPS предусмотрен TLSOption UseImplicitSSL в отдельном виртуальном хосте (обычно порт 990), учитывая совместимость клиентов.proftpd+1
Поддержка ALPN/NPN (TLSNextProtocol) может снижать задержку рукопожатия у некоторых клиентов за счёт TLS False Start; включение управляется директивами модуля.proftpd
FTPS за NAT/балансировщиками
В сценариях DMZ/прокси для FTPS применяется TLSMasqueradeAddress — аналог MasqueradeAddress, но только для FTPS‑сессий, чтобы корректно указывать внешний адрес в ответах PASV/EPSV.proftpd
Это важно, потому что устройства не могут переписать зашифрованные ответы FTPS, и требуется явное указание публичного адреса именно для шифрованных сессий.proftpd
SFTP (SSH2) через mod_sftp
mod_sftp реализует протокол SSH2 и его подсистему SFTP, работает по одному TCP‑соединению и удобен за NAT/файрволами, поддерживая пароли, ключи, PAM/LDAP/SQL и прочие механизмы.proftpd
Обязательна настройка SFTPHostKey (RSA/ED25519/другие), выбор методов SFTPAuthMethods, шифров/диджестов, логирования SFTPLog и допустимых расширений SFTPExtensions.proftpd
Ключи и совместимость SFTP
Если используются ключи OpenSSH нового формата, модуль до 1.3.7 требует их конвертации в PEM; для формата RFC4716 публичных ключей применяются инструменты ssh-keygen -e.proftpd
Поддерживаются цепочки методов аутентификации (например, publickey+password) и ограничения алгоритмов (SFTPCiphers, SFTPDigests, SFTPKeyExchanges) для соответствия политике безопасности.proftpd
NAT, PassivePorts и MasqueradeAddress
За NAT требуется прописать внешний IP/имя через MasqueradeAddress и ограничить диапазон пассивных портов через PassivePorts, затем пробросить этот диапазон на периметре.proftpd
Иначе клиентам снаружи будут недоступны каналы данных в пассивном режиме, что проявляется ошибками листинга/передачи или таймаутами.proftpd
Ограничение доступа (<Limit>, <Directory>)
Глобально вход регулируется через <Limit LOGIN> с Allow/Deny для пользователей/групп/сетей, а по каталогам — через <Directory> и классы команд READ/WRITE/STOR/DELE и т.п.proftpd
Для SFTP часть ограничений сопоставляется с командами SFTP (READ/WRITE/SETSTAT/RENAME и др.), что позволяет переиспользовать модель <Limit> и для SFTP‑сессий.proftpd
Логи и отладка
Ошибки входа и события фиксируются в syslog (AUTH/AUTHPRIV), что является первичным источником диагностики эксплуатационных проблем.proftpd
Для глубокой отладки используется запуск в консоли с -n -d 9 и отдельные журналы модулей, например TLSLog и SFTPLog, а также проверка конфигурации перед рестартом.proftpd+2
Производительность и лимиты
Настраиваются MaxInstances/MaxClients и таймауты (TimeoutNoTransfer/TimeoutStalled/TimeoutIdle) исходя из нагрузки и профиля клиентов.proftpd
Квоты и ограничения на уровне модулей (например, mod_quotatab) применяются при необходимости контроля дискового потребления и скоростей.proftpd
Примеры конфигураций
Базовый proftpd.conf:ubuntu+1
textServerName "ProFTPD"
ServerType standalone
Port 21
Umask 022 022
UseReverseDNS off
IdentLookups off
User proftpd
Group nogroup
DefaultRoot ~
RequireValidShell off
AllowOverwrite on
AllowStoreRestart on
AllowRetrieveRestart on
<Limit LOGIN>
AllowAll
</Limit>
# Логи
SyslogFacility AUTH
SyslogLevel notice
# Включения
Include /etc/proftpd/conf.d/*.conf
Анонимный доступ (частный incoming):proftpd
text<Anonymous ~ftp>
User ftp
Group ftp
UserAlias anonymous ftp
AnonRequirePassword off
RequireValidShell off
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
Umask 077 077
<Limit STOR>
AllowAll
</Limit>
<Limit READ RMD DELE>
DenyAll
</Limit>
</Directory>
</Anonymous>
Виртуальные пользователи через AuthUserFile/AuthGroupFile:proftpd+1
textAuthOrder mod_auth_file.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
RequireValidShell off
# Пример создания:
# ftpasswd --passwd --name=myuser --uid=2001 --gid=2001 \
# --home=/srv/ftp/myuser --shell=/bin/false \
# --file=/etc/proftpd/ftpd.passwd
FTPS (mod_tls) — современная политика TLS:proftpd+1
text<IfModule mod_tls.c>
TLSEngine on
TLSProtocol TLSv1.2 TLSv1.3
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSOptions NoSessionReuseRequired
TLSRequired on
TLSLog /var/log/proftpd/tls.log
# Для FTPS в DMZ/за балансировщиком:
# TLSMasqueradeAddress 203.0.113.10
</IfModule>
SFTP (mod_sftp) — независим от sshd:proftpd
text<IfModule mod_sftp.c>
SFTPEngine on
Port 2222
SFTPHostKey /etc/ssh/ssh_host_ed25519_key
SFTPAuthMethods publickey password
SFTPLog /var/log/proftpd/sftp.log
# Примеры алгоритмических политик:
# SFTPCiphers aes128-ctr aes256-ctr chacha20-poly1305@openssh.com
# SFTPDigests hmac-sha2-256 hmac-sha2-512
# SFTPKeyExchanges curve25519-sha256 diffie-hellman-group-exchange-sha256
</IfModule>
Пассивные порты и NAT:proftpd
textPassivePorts 50000 50100
MasqueradeAddress 203.0.113.10
Установка FTPS на Ubuntu (пример)
Установка пакетов и включение сервиса через systemd выполняются стандартно, затем добавляется tls.conf, включается модуль mod_tls и указываются пути к сертификату/ключу.atlantic
Готовность проверяется через systemctl status proftpd и по логам TLSLog, после чего выполняется проверка клиентом с режимом «Require explicit FTP over TLS».atlantic
Частые ошибки и решения
Login incorrect — неверные учётные данные, запрет входа по политике <Limit LOGIN> или блокировка по сети; причины видны в системных логах (AUTH/AUTHPRIV).proftpd
Ошибки 425/550 при листинге/передаче — чаще всего не настроен пассивный диапазон/проброс портов или не задан MasqueradeAddress за NAT.proftpd
Чек‑лист перед вводом в эксплуатацию
- Сертификаты/ключи читаемы процессом демона, TLSRequired и TLSProtocol заданы, модули загружены.proftpd+1
- DefaultRoot и права каталогов/владельцев проверены, вход ограничен нужными пользователями/сетями.proftpd
- Для NAT прописаны MasqueradeAddress и PassivePorts, файрвол проброшен согласно диапазонам.proftpd
- Для SFTP заданы SFTPHostKey, методы аутентификации и логирование, ключи в поддерживаемом формате.proftpd
Быстрая диагностика
Проверка синтаксиса конфигурации и запуск с максимальной детализацией позволяют оперативно локализовать ошибки в аутентификации, правах и сетевом тракте.proftpd
Отдельные журналы модулей (TLSLog/SFTPLog) упрощают анализ рукопожатий, протокольных версий и несовместимостей клиентов.proftpd+1
Если требуется, можно подготовить готовые конфигурации под конкретный дистрибутив, интеграцию с PAM/LDAP/SQL, жёсткие криптополитики для FTPS/SFTP, схемы изоляции и многоарендные профили.proftpd+1
Источники информации
- http://www.proftpd.org/docs/
- http://www.proftpd.org/docs/faq/faq_full.html
- http://www.proftpd.org
- http://www.proftpd.org/docs/contrib/mod_tls.html
- http://www.proftpd.org/docs/howto/TLS.html
- http://www.proftpd.org/docs/contrib/mod_sftp.html
- http://www.proftpd.org/docs/howto/NAT.html
- https://www.atlantic.net/vps-hosting/how-to-set-up-an-ftp-server-with-proftpd-in-ubuntu/
- https://help.ubuntu.com/community/ProFTPD
- http://www.proftpd.org/docs/howto/AuthFiles.html
- http://www.proftpd.org/docs/modules/mod_auth_file.html
- http://www.proftpd.org/docs/contrib/index.html
- https://redos.red-soft.ru/base/redos-7_3/7_3-network/7_3-sett-proftpd/
- http://www.proftpd.org/docs/contrib/mod_tls_shmcache.html
- http://www.proftpd.org/docs/contrib/mod_sftp_pam.html
- https://rtfm.wiki/linux/letsencrypt_proftpd
- https://ics.uci.edu/~sources/proftpd/1.2.10/howto/NAT.html
- https://forum.directadmin.com/threads/proftpd-mod_tls.40957/
- http://www.proftpd.org/docs/contrib/mod_sftp_sql.html
- https://proftp-user.narkive.com/6jfsKWQi/proftpd-user-passive-mode-and-nat-classic
- https://opennet.ru/9042-proftpd
- https://www.linux.org.ru/forum/admin/6625746
- https://www.goline.ch/2022/06/22/proftpd-with-tls-support-on-ubuntu/
- https://cyrisk.com/security/mitigation-instructions-for-proftpd-mod_sftp/
- https://forum.netgate.com/topic/87346/proftpd-active-passive-error
- http://sobek.hsdn.org/Docs/proftpd/howto/TLS.html