@ Карта сайта News Автора!

Bog BOS: FTP-сервер ProFTPD: установка, настройка и использование

auto  koi  win  lat 

Последнее изменение файла: 2003.01.27
Скопировано с www.bog.pp.ru: 2004.11.26

Bog BOS: FTP-сервер ProFTPD: установка, настройка и использование

Предполагается предварительное знакомство с протоколом FTP.

ProFTPD разрабатывался группой энтузиастов, недовольных уровнем безопасности и сложностью настройки "классического" FTP-сервера wu-ftpd. Бесплатен (GPL). Описываемая версия - 1.2.8rc1 (28 декабря 2002, заплатка для записи в корневую директорию). Настраивается с помощью одного файла конфигурации, директивы которого напоминают директивы настройки Apache. Реализует RFC-959 (FILE TRANSFER PROTOCOL) и RFC-1123 (кроме команд ACCT, MODE, STRU), частично реализует "IETF Draft: Extensions to FTP" (REST, SIZE, MDTM) и RFC-2228 (FTP Security Extensions), RFC-2389 (Feature negotiation mechanism).

Установка 1.2.8rc1 в Linux Red Hat 7.2

Задачи, стоящие перед сервером:

  1. получить и распаковать архив
  2. make distclean (если не первая сборка)
  3. ./configure --with-modules=mod_linuxprivs:mod_rewrite:mod_tls
  4. можно проверить config.h и настроить include/options.h
  5. make
  6. make install
  7. создать /etc/pam.d/ftp как описано в README.PAM
  8. добавить в /etc/ftpusers имена пользователей из /etc/passwd, которые имеют пароли, но которым не надо давать доступ к FTP
  9. настроить ProFTPD (/usr/local/etc/proftpd.conf), в т.ч.
  10. добавить группу ftpadmin и пользователя ftpadmin (домашняя директория указывает на файлы, которые он может менять на ftp-сервере)
  11. добавить группу fax и пользователя fax (домашняя директория)
  12. настроить xinetd: создать /etc/xinetd.d/proftpd как описано в INSTALL (см. также xinetd.conf(5) для задания дополнительных ограничений на права доступа и используемые ресурсы)
    service ftp
    {
           flags           = REUSE
           socket_type     = stream
           instances       = максимальнгое-число-клиентов
           wait            = no
           user            = root
           server          = /usr/local/sbin/proftpd
           bind            = ip-адрес
           log_on_success  = HOST PID
           log_on_failure  = HOST RECORD
    }
    
  13. перезапустить xinetd: /etc/rc.d/init.d/xinetd reload
  14. пример скрипта для /etc/rc.d/init.d для запуска/остановки самостоятельного (standalone) ProFTPD приведен здесь
  15. открыть дырки в сетевых экранах (порты 20, 21 и для пассивных соединений):

Настройка

Каждому виртуальному хосту требуется отдельный порт или IP адрес.

ProFTPD может работать в режимах (директива ServerType): standalone или inetd.

Возможно запускать ProFTPD без привилегий суперпользователя. Однако при при этом необходимо установить Port выше 1023, отключить AuthPAM и WtmpLog, обязательно использовать AuthUserFile и AuthGroupFile, установить User и Group на себя. Нельзя использовать DefaultRoot и Anonymous.

Для использования DefaultRoot (chroot) требуется запускать сервер с правами root. Некоторые ОС требуют наличия определенных файлов в корневой директории (например, Solaris требует /dev/tcp и /dev/zero). Символьные ссылки не могут указывать наружу (хотя можно использовать жесткие ссылки или mount -bind).

ProFTPD позволяет создавать "виртуальных" пользователей с помощью директив AuthUserFile и AuthGroupFile (или с использованием SQL, LDAP и DB с помощью дополнительных модулей). AuthUserFile определяет замену для /etc/passwd в том же формате, AuthGroupFile - для /etc/group. Зашифрованные пароли хранятся здесь же (аналога для /etc/shadow нет), поэтому права на чтение соответствующих файлов должен иметь только пользователь, указанный в директиве User виртуального сервера (предположительно отдельный пользователь для ftpd). См. также DirFakeUser и DirFakeGroup.

Разнесение ip адресов или шаблонов доменных имен на классы с помощью директив "Class имя ip адрес/маска" и "Class имя regex шаблон" позволяет ограничить число одновременных соединений для каждого класса с помощью директив "Class имя limit число" (требуется включение механизма классификации директивой "Classes on" и работа в режиме standalone).

Области действия директив конфигурации (секции определяются как в файле настройки Apache с помощью HTML-подобных открывающих и закрывающих тегов):

Параметры TCP/IP:

Управление доступом в области действия Limit:

Управление анонимным доступом:

Управление безопасностью:

Управление файлами:

Управление сообщениями, выдаваемыми клиентам:

Управление журналами (по умолчанию, используется syslog, daemon:debug/authpriv):

Условные операторы: Define (можно также определять параметры в командной строке при запуске proftpd), IfDefine, IfModule. Могут быть вложены. Имеется также директива Include.

Формат выдачи оглавления директории (NLST, LIST, STAT)

Расположение локальных файлов:

Ограничение трафика.

Модули mod_ratio, mod_ldap, mod_radius, mod_sql имеют свои наборы директив:

mod_unixprivs.

mod_tls.

mod_rewrite.

mod_quota и mod_quotatab (учитываются только данные, переданные по FTP протоколу для данного пользователя).

proftpd и другие программы

proftpd - основная программа пакета, реализующая FTP сервер. Запускается автономно или с помощью xinetd (inetd). Ключи запуска:

В автономном режиме при получении SIGHUP перечитывает файл с описанием конфигурации.

ftpcount - показывает число соединений в настоящий момент (с разбивкой по виртуальным хостам).

ftpwho - показывает информацию о каждом текущем соединении (--verbose показывает также текущую рабочую директорию).

ftptop - аналог программы top для процессов ProFTPD.

Журналы

Logwatch имеет скрипты для обработки журналов ProFTPD.

Формат журнала xferlog (имя файла задается директивой TransferLog):

  1. сокращенное английское название дня недели (Sat)
  2. сокращенное английское название месяца (Dec)
  3. день месяца
  4. часы:минуты:секунды (время местное)
  5. год (4 цифры)
  6. продолжительность передачи в секундах
  7. имя или адрес удаленного хоста
  8. размер файла в байтах
  9. полное имя файла (безотносительно chroot)
  10. тип передачи
  11. действие над файлом в процессе передачи (для ProFTPD всегда отсутствует)
  12. направление передачи
  13. тип пользователя
  14. имя реального пользователя или идентификационная строка (вводимая вместо пароля) для анонимного или гостя (м.б. пробел)
  15. имя сервиса (ftp)
  16. способ аутентификации
  17. аутентифицированный идентификатор пользователя. Если аутентификация не использовалась, то звездочка
  18. завершенность передачи

Ссылки

@ Карта сайта News Автора!

Bog BOS: FTP-сервер ProFTPD: установка, настройка и использование

auto  koi  win  lat 
TopList
Copyright © 1996-2003 Sergey E. Bogomolov; www.bog.pp.ru