ProFTPD: установка и настройка

Автор: | 12/20/2011
 

Сам процесс до безобразия прост. 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