Сам процесс до безобразия прост. ProFTPD можно добавить пакетом:
# pkg_add -r proftpd
Или собрать из портов:
# cd /usr/ports/ftp/proftpd
# make install clean
В таком случае станут доступны дополнительные возможности ProFTPD, которые предложат выбрать в начале сборки:
---------------------------------------------------------------------¬ ¦ Options for proftpd 1.3.2.r3_1 ¦ ¦ -----------------------------------------------------------------¬ ¦ ¦ ¦[ ] BAN Include mod_ban (Requires CTRLS) ¦ ¦ ¦ ¦[ ] CLAMAV Include mod_clamav ¦ ¦ ¦ ¦[X] CTRLS Include controls ¦ ¦ ¦ ¦[ ] DIGEST Include mod_digest ¦ ¦ ¦ ¦[ ] IFSESSION Include mod_ifsession ¦ ¦ ¦ ¦[ ] IPV6 Use IPv6 ¦ ¦ ¦ ¦[ ] LDAP Use LDAP ¦ ¦ ¦ ¦[ ] LDAP_TLS Use LDAP TLS (Requires LDAP, OPENSSL) ¦ ¦ ¦ ¦[ ] MYSQL MySQL auth (Can be combined with PGSQL) ¦ ¦ ¦ ¦[ ] NLS Use nls (builds mod_lang) ¦ ¦ ¦ ¦[ ] OPENSSL Include mod_tls ¦ ¦ ¦ ¦[ ] PGSQL Postgres auth (Can be combined with MYSQL) ¦ ¦ ¦ ¦[ ] QUOTA Include mod_quota ¦ ¦ ¦ ¦[ ] QUOTATAB_RADIUS include mod_quotatab_radius ¦ ¦ ¦ ¦[ ] RADIUS Include mod_radius ¦ ¦ ¦ ¦[ ] RATIO Include mod_ratio ¦ ¦ ¦ ¦[ ] README Include mod_readme ¦ ¦ ¦ ¦[ ] REWRITE Include mod_rewrite ¦ ¦ ¦ ¦[ ] TDS FreeTDS - Sybase & MS-SQL auth (Exclusive) ¦ ¦ ¦ ¦[ ] WRAP Include mod_wrap2 ¦ ¦ ¦ ¦[ ] WRAP_FILE Include mod_wrap2_file ¦ ¦ ¦ ¦[ ] WRAP_SQL Include mod_wrap2_sql ¦ ¦ +-L------------------------------------------------------------------+ ¦ [ OK ] Cancel ¦ L---------------------------------------------------------------------
mod_ban – предназначен для динамического бана пользователей, отключает пользователя по описаным в настройках правилам. Например по количеству неправильных вводов пароля.
mod_clamav – позволяет проверять файлы помещаемые на FTP сервер с помощью бесплатного антивируса ClamAV
controls – включает модуль управления сервером ProFTPD
mod_digest – с помощью этого модуля можно обеспечить проверку целостности файлов при передаче
mod_ifsession – позволяет обеспечить дополнительные проверки пользователей
Use IPv6 – включает поддержку протокола IPV6
Use LDAP – ProFTPD сможет проверять авторизацию пользователей через LDAP
Use LDAP TLS – Включает шифрованный протокол LDAP
MySQL auth – Поддержка авторизации пользователей через базу MySQL
Use nls – Поддержка команды LANG, можно менять LOCALE во время диалога с сервером
mod_tls – Поддержка OpenSSL, обеспечивает FTPS протокол, протокол с шифрацией данных, так же этот модуль необходим для LDAP TLS
Postgres auth – Поддержка авторизации через базу PostgreSQL
mod_quota – Поддержка Quota, ограничения размер каталога помещенного на сервер
mod_quotatab_radius – С помощью этого модуля – сервер получает информацию о квоте пользователя через Radius сервер
mod_radius – Поддержка авторизации пользователей через Radius сервер
mod_ratio – Позволяет установить ограничение на скорость подачи команд серверу
mod_readme – Выводит файл при подсоединении к серверу
mod_rewrite – Позволяет в зависимости от определенного патерна изменять поведение сервера. Фактически по функциям аналогичен mod_rewrite Apache
FreeTDS – позволяет проводить авторизацию через MSSQL или Sybase сервер
mod_wrap2 – добавляет возможность контролировать доступ к серверу через libwrap (hosts.allow, hosts.deny)
mod_wrap2_file – Модуль позволяет определять дополнительный файл контроля, отличные от системных (hosts.allow, hosts.deny)
mod_wrap2_sql – позволяет хранить информацию для libwrap в базе SQL
Выбираем то, что потребуется (к примеру, я добавил ClamAV, авторизацию через LDAP и поддержку OPENSSL), и ждем окончания сборки.
После завершения установки, определимся с методом запуска ProFTPD.
Можно запускать сразу при загрузке FreeBSD, в таком случае в файл /etc/rc.conf добавим:
#Enable ProFTPD
proftpd_enable=”YES”
А можно запускать его с помощью демона inetd. Для этого отредактируйте в файле /etc/inetd.conf строку:
ftp stream tcp nowait root /usr/local/sbin/proftpd proftpd
Не забудьте включить сам демон inetd в /etc/rc.conf:
inetd_enable=”YES”
Что бы не перезагружать сервер – запустите inetd вручную:
# service inetd onestart
Starting inetd.
Теперь перейдем к настройке самого ProFTPD.
Файл конфигурации находится тут: /usr/local/etc/proftpd.conf
Если мы выбрали способ запуска при старте системы, то все оставляем как есть. Если способ запуска через inetd, то в строке:
ServerType standalone
устанавливаем значение:
ServerType inetd
Далее, находим строку:
#DefaultRoot ~
и раскомментируем её. Так мы запрещаем пользователям выходить “выше” их домашнего каталога.
Управление сервером производится с помощью файла /usr/local/etc/rc.d/proftpd который принимает агрументы onestart (запуск), restart (перезапуск) и stop (остановка). Выполним:
# /usr/local/etc/rc.d/proftpd onestart
…
Профит!
Некоторые другие параметры, которые можно добавить в конфигурацию.
Разрешить соединение пользователю root, добавьте строку:
RootLogin on
После этого закомментируйте строку root в файле /etc/ftpusers. Но сначала хорошо подумайте – надо ли вам это.
Кол-во процессов, которые может запускать ProFTPD – для предотвращения DDoD-атак (есть в конфигурации по-умолчанию, измените значение, если требуется):
MaxInstances 30
Максимальное кол-во одновременных подключений:
MaxClients 15
Максимальное кол-во подключений с одного хоста:
MaxClientsPerHost 4
Максимальное кол-во попыток ввода логина-пароля:
MaxLoginAttempts 3
Если требуется – ограничиваем скорость для всех, кроме пользователя root (я в конфигурацию параметр добавил, но пока закрыл #, т.к. сейчас эта возможность не нужна):
#TransferRate RETR,STOR,APPE 150 user !root
Списки ограничения доступа к серверу (ACL – Acces Control List – списки контроля доступа) – хотя проще использовать IPFW (или другой фаервол):
#UseHostsAllowFile /etc/proftpd.allow
#UseHostsDenyFile /etc/proftpd.deny