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

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

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост

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

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.10 в CentOS 3.4

Простенький анонимный сервер для централизованной раздачи заплаток (но с возможностью расширения в будущем).

  1. получить и распаковать архив
  2. make distclean (если не первая сборка)
  3. ./configure --with-modules=mod_rewrite:mod_tls --with-includes=/usr/kerberos/include --with-libraries=/usr/kerberos/lib --enable-ctrls (./configure --help даёт список всех ключей; kerberos для 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), в т.ч.

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

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

  1. получить и распаковать архив
  2. make distclean (если не первая сборка)
  3. ./configure --with-modules=mod_linuxprivs:mod_rewrite:mod_tls (mod_linuxprivs переименован в mod_cap и встроен; ./configure --help даёт список всех ключей)
  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. пример скрипта для /etc/rc.d/init.d для запуска/остановки самостоятельного (standalone) ProFTPD приведен здесь (или переделать, например, sshd)
  11. открыть дырки в сетевых экранах (порты 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: установка, настройка и использование

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru