Содержание:
Многие администраторы, прежде чем установить новый-свежий продукт, проверяют его. В случае proftpd, либо должен быть остановлен предыдущий демон ftpd, либо следует использовать директивы ниже, чтобы демон слушал, например порт 8041:
Port 0 Bind 159.93.17.121 SocketBindTight on Port 8041
В стандартный набор модулей ProFTPD (всегда включенных) входят следующие:
Модуль PAM подключается в том случае, если система имеет поддержку pam:
Модуль для отображение фалов readme - директива "DisplayReadme"
Дополнительные модули:
Дополнительные модули авторизации, интерфейс на основе DB:
В ProFTPD реализована технология chroot не в полном смысле этого понятия, а лишь частично, те позволяет нам в качестве корневой директории сделать директорию реального пользователя или ftp/anonymous.
Данная технология позволяет запускать демон proftpd под указанным в настройках,
директивы User и Group, пользователем с его uid/gid.
А также изменять "корневую директорию" с помощью директив:
DefaultRoot ~
Если у вас возникли проблемы с авторизацией anonymous или локальных пользователей, с учетом директив User и Group, проверьте чтобы эти пользователи не присутствовали в ftpusers или проверьте правильность вашей конфигурации PAM в соответствии с рекомендациями из дистрибутива ProFTPD или документацией PAM. Если ProFTPD собран с поддержкой pam, для проверки, отключите его в конфигурации:
AuthPAM off AuthPAMAuthoritative offдостаточно одной директивы AuthPAM off. Можно переопределить ресурс в pam конфигурации с помощью директивы AuthPAMConfig.
Примечание: Читайте внимательно документацию, или посмотрите чем инициализируется pamconfig в proftpd-sources/modules/mod_pam.c:
static char * pamconfig = "ftp";Значит авторизационная конфигурация PAM для ProFTPD в /etc/pam.conf или /etc/pam.d - будет именоваться ftp by default, а изменить ее название можно с помощью AuthPAMConfig.
Проверку ftpusers можно отключить директивой UseFtpUsers off.
Дополнительно для безпарольного входа под anonymous или ftp,
воспользуйтесь директивами:
AnonRequirePassword off (значение по-умолчанию) RequireValidShell off UserAlias anonymous ftpИногда может вылезти несоответствие указанных внутри <Anonymous ~ftp> значений User и Group и реальных uid/gid директории ~ftp и ее содержимого.
<Limit LOGIN> DenyAll <Limit>Если установлены, то в директиве <Anonymous> добавьте:
<Limit LOGIN> Order Allow,Deny Allow from ip-address1,... Deny from all <Limit>или
<Limit LOGIN> AllowAll <Limit>
Чтобы предотвратить попытку положить или взломать демон proftpd командой
"ls */../*/../*/...", включите директиву фильтра DenyFilter \*.*/.
Можно использовать эту директиву для дополнительной фильтрации, кроме того
имеется директива PathDenyFilter "(^|/)[-.]"
Например:
DenyFilter \*.*/
Если пользователи жалуются на длительную авторизацию - вход по ftp,
воспользуйтесь директивой UseReverseDNS off, дополнительно к ней
можно использовать директиву IdentLookups off.
Например:
UseReverseDNS offили
UseReverseDNS off IdentLookups off
Конкретный пример настройки ProFTPD во FreeBSD:
Лучший вариант, собрать proftpd из портов системы:
cd /usr/ports/ftp/proftpd make make install rm -rf workЕсли мы хотим собрать proftpd с нужными нам модулями, необходимо посмотреть Makefile и при необходимости, поправить под свои нужды.
cd /usr/ports/ftp/proftpd make WITHOUT_PAM=yes make install rm -rf workДалее отредактировать файл конфигурации
/usr/local/etc/proftpd.conf под свои нужды.
Допустим у нас имеется пользователь ftp с uid=ftp и gid=operator, а запустить демон proftpd мы хотим с USER nobody и Group nogroup, тогда, возможно придется сделать в секции Anonymous USER ftp и Group operator (по-умолчанию во FreeBSD пользователь ftp имеет uid=ftp, gid=operator).
Соответственно удалить из файла /etc/ftpusers пользователей с именами nobody, ftp. Или, как вариант изменить uid/gid пользователя ftp на uid=ftp и gid=ftp, не забыв создать группу ftp и поменять владельца группы в директории ~ftp.
Пример рабочей конфигурации ProFTPD 1.2.4 в FreeBSD:
Примечание: демон стартует как nobody на порту 8041, в секции Anonymous ~ftp, uid=ftp, gid=operator, домашняя директория пользователей является корнем DefaultRoot ~.
Проверка правильности синтаксиса конфигурации и работы ProFTPD. Для проверки правильности файла конфигурации, необходимо запустить демон со следующими ключами:
./proftpd -tДля определения с поддержкой каких модулей собран наш вариант proftpd, необходимо запустить демон с ключами:
./proftpd -lДля запуска демона в тестовом режиме, с выдачей диагностики на экран:
./proftpd -n -d 9 -c /path/proftpd.confгде -n - указывает что мы запускаем демон в режиме foreground
Примечание: Не наступите на те же грабли что и я, проверка MaxClients, MaxClientsPerHost невозможна при запуске в отладочном режиме.
У меня Sun'овский кластер построен на NIS+. После установки ProFTPD, все прекрасно работает с chroot для anonymous, но не проходит авторизация пользователей через NIS+.
У меня старый-боевой Solaris 2.5.1 без PAM, в настройках общей части сервера он выполнял chroot:
... User nobody Group nogroup ...Видимо все упиралось в доступ к NIS+ базам и вылечилось добавлением и изменением базовой конфигурации сервера:
... #PAM disable PersistentPasswd off ... User root Group other ...
Ссылки на сайт TJ Saunders автора различных модулей, патчей и расширений для ProFTPD и документацию: