Главная | Контакты



Главная > Программы > ProFTP

Маленькие ньюансы при установке и настройке ProFTPD (на базе FreeBSD

  1. Запуск proftpd на нестандартном порту
  2. Стандартные модули в proftpd
  3. Дополнительные модули в proftpd
  4. Chroot, DefaultRoot в proftpd
  5. Авторизация и Anonymous в proftpd
  6. Фильтры в proftpd
  7. DNS-Reverse Авторизация в proftpd
  8. Пример рабочего proftpd.conf
  9. Запуск proftpd в отладочном режиме
  10. Авторизация в Solaris/NIS+
  11. Полезные ссылки и расширение возможностей proftpd

  1. Запуск proftpd на нестандартном порту

    Многие администраторы, прежде чем установить новый-свежий продукт, проверяют его. В случае proftpd, либо должен быть остановлен предыдущий демон ftpd, либо следует использовать директивы ниже, чтобы демон слушал, например порт 8041:

    Port                            0
    Bind 159.93.17.121
    SocketBindTight                 on
    Port                            8041
    
    • Port 0 - отказ от прослушивания 21'ого порта в сумме с нижними директивами
    • Bind 159.93.17.121 - привязка на конкретный ip
    • SocketBindTight on - позволяет отказаться от открытия by-default порта 21
    • Port 8041 - командный порт, который будет слушать proftpd

  2. Стандартные модули в proftpd

    В стандартный набор модулей ProFTPD (всегда включенных) входят следующие:

    • mod_auth - реализация таких команд как: USER, PASS, ACCT, REIN
    • mod_core - реализация команд FTP: CWD, CDUP, MKD, PWD, RMD, DELE...
    • mod_log - реализация сбора статистики, syslog
    • mod_ls - встроенная реализация команд FTP: LIST, NLST и STAT
    • mod_site - встроенная реализация команд FTP: SITE, HELP и CHMOD
    • mod_unixpw - интерфейс к password-auth OS Unix
    • mod_xfer - реализация команд FTP: STOR, RETR, APPE, REST...

    Модуль PAM подключается в том случае, если система имеет поддержку pam:

    • mod_pam - интерфейс к системе авторизации PAM (Pluggable Authentication Modules)

    Модуль для отображение фалов readme - директива "DisplayReadme"

    • mod_readme

  3. Дополнительные модули в proftpd

    Дополнительные модули:

    • mod_linuxprivs - реализация дополнительной схемы security POSIX 1e, только для Linux
    • mod_quota - дисковые квоты
    • mod_ratio - система реализации коэффициента upload/download
    • mod_wrap - использование доступа с учетом ограничений tcp-wrappers

    Дополнительные модули авторизации, интерфейс на основе DB:

    • mod_ldap
    • mod_sql
    • mod_sql_mysql
    • mod_sql_postgres

  4. Chroot, DefaultRoot в proftpd

    В ProFTPD реализована технология chroot не в полном смысле этого понятия, а лишь частично, те позволяет нам в качестве корневой директории сделать директорию реального пользователя или ftp/anonymous.
    Данная технология позволяет запускать демон proftpd под указанным в настройках, директивы User и Group, пользователем с его uid/gid. А также изменять "корневую директорию" с помощью директив:

    • DefaultRoot - в конфигурации server config, ,
    • <Anonymous root-directory> - в конфигурации server config,,
    Так к примеру, мы можем за"chroot"ить всех локальных пользователей указав в конфигурации серверной части:
    DefaultRoot ~
    

  5. Авторизация и Anonymous в proftpd

    Если у вас возникли проблемы с авторизацией 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 и ее содержимого.
    Кроме того не забудьте проверить не установлены ли в конфигурациях server и global:
    <Limit LOGIN>
      DenyAll
    <Limit>
    
    Если установлены, то в директиве <Anonymous> добавьте:
      <Limit LOGIN>
         Order                       Allow,Deny
         Allow                       from ip-address1,...
         Deny from all
      <Limit>
    
    или
      <Limit LOGIN>
         AllowAll
      <Limit>
    

  6. Фильтры в proftpd

    Чтобы предотвратить попытку положить или взломать демон proftpd командой "ls */../*/../*/...", включите директиву фильтра DenyFilter \*.*/. Можно использовать эту директиву для дополнительной фильтрации, кроме того имеется директива PathDenyFilter "(^|/)[-.]"
    Например:

    DenyFilter \*.*/
    

  7. DNS-Reverse и задержки авторизация в proftpd

    Если пользователи жалуются на длительную авторизацию - вход по ftp, воспользуйтесь директивой UseReverseDNS off, дополнительно к ней можно использовать директиву IdentLookups off.
    Например:

    UseReverseDNS off
    
    или
    UseReverseDNS off
    IdentLookups off
    

  8. Пример рабочего proftpd.conf

    Конкретный пример настройки ProFTPD во FreeBSD:

    Лучший вариант, собрать proftpd из портов системы:

    cd /usr/ports/ftp/proftpd
    make
    make install
    rm -rf work
    
    Если мы хотим собрать proftpd с нужными нам модулями, необходимо посмотреть Makefile и при необходимости, поправить под свои нужды.
    Пример сборки без поддержки PAM:
    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 ~.

  9. Запуск proftpd в отладочном режиме

    Проверка правильности синтаксиса конфигурации и работы ProFTPD. Для проверки правильности файла конфигурации, необходимо запустить демон со следующими ключами:

    ./proftpd -t
    
    Для определения с поддержкой каких модулей собран наш вариант proftpd, необходимо запустить демон с ключами:
    ./proftpd -l
    
    Для запуска демона в тестовом режиме, с выдачей диагностики на экран:
    ./proftpd -n -d 9 -c /path/proftpd.conf
    
    где -n - указывает что мы запускаем демон в режиме foreground
    -d 9 - указывает что в отладочном режиме с максимальным уровнем отладки 9.
    -c /path/proftpd.conf - указывает заданный файл конфигурации.

    Примечание: Не наступите на те же грабли что и я, проверка MaxClients, MaxClientsPerHost невозможна при запуске в отладочном режиме.

  10. Авторизация в Solaris/NIS+

    У меня 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
    ...
    

  11. Полезные ссылки и расширение возможностей proftpd

    Ссылки на сайт TJ Saunders автора различных модулей, патчей и расширений для ProFTPD и документацию:

Материал взят с сайта: http://unix1.jinr.ru/~lavr/local/proftpd.html

Главная > Программы > ProFTP