Файлы конфигурации ProFTPD Конфигурация `/etc/proftpd.conf`
- Код: выделить все
# имя ftp-сервера
ServerName "sergey.free-adm.ru ProFTPD"
# сообщение при подключении
ServerIdent on "FTP Server ready."
ServerAdmin sergey@free-adm.ru
DefaultServer on
ServerType standalone
UseIPv6 off
ShowSymLinks on
RootLogin off
DefaultRoot ~ !adm
AuthPAMConfig proftpd
AuthOrder mod_sql.c mod_auth_unix.c
UseReverseDNS off
IdentLookups off
User nobody
Group nobody
MaxInstances 20
UseSendfile off
LogFormat default "%h %l %u %t \"%r\" %s %b"
TransferLog /var/log/proftpd/xfer.log
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth
DebugLevel 9
MaxClients 10 "Слишком много соединений с сервером (%m)"
MaxClientsPerHost 4 "%m клиента уже подключены с Вашего хоста"
# ... и др.
Комментарии и пояснения:- `ServerType standalone` — запускает сервер как самостоятельный процесс, а не через `inetd`.
- `DefaultRoot ~ !adm` — домашний каталог пользователя, запрет на доступ выше.
- `RootLogin off` — запрет входа под root.
- `MaxClients`, `MaxInstances` — ограничивают число одновременных подключений, чтобы не перегрузить систему.
- `UseSendfile off` — иногда `sendfile` вызывает ошибки на некоторых файловых системах, поэтому отключено.
Дополнительные файлы конфигурацииssl-конфигурация (`/etc/proftpd.d/ssl.conf`)
- Код: выделить все
<IfDefine TLS>
TLSEngine on
TLSRequired off
TLSRSACertificateFile /etc/pki/tls/certs/proftpd-cert.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd-key.pem
TLSCipherSuite ALL:!ADH:!DES
TLSVerifyClient off
TLSLog /var/log/proftpd/tls.log
</IfDefine>
Комментарий: SSL/TLS включён, но **не обязателен** (`TLSRequired off`). Можно при необходимости усилить безопасность, сделав его обязательным.
SQL-аутентификация (`/etc/proftpd.d/sql.conf`)
- Код: выделить все
<IfModule mod_sql.c>
SQLBackend mysql
SQLAuthTypes MD5
SQLConnectInfo proftpd@localhost proftpd tnUQGY4W
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
</IfModule>
Комментарий: используется MySQL-база для управления пользователями FTP, с хешированием MD5. Парольная база и таблицы должны быть подготовлены заранее.