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

Bog BOS: FTP серверы (wu-ftpd)

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)

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

Bog BOS: FTP серверы (wu-ftpd)

Для понимания материала требуется знание протокола FTP.

В настоящее время мы производим миграцию FTP-серверов на ProFTPD и , так что данный материал обновляться не будет.

Washington University at Saint Louis FTP daemon for Unix (wu-ftpd и BeroFTPD)

Ссылки:

Комплект поставки wu-ftpd для RedHat Linux 6.0 (wu-ftpd-2.5.0-5.6.0.rpm):

Параметры configure при установке (не все, а только полезные):

Процесс установки 2.6.0 для Solaris 2.5 и gcc 2.6.2

Процесс установки 2.6.0/2.6.1/2.6.2 для RedHat Linux 6.0/6.2/7.0

  1. качаем архив и растариваем его (создается директория wu-ftpd-2.6.0)
  2. ./configure с соответствующими параметрами

    который создает

  3. make
  4. сохранить старую версию (вместе с RHL 6.0 поставляется 2.5.0)
  5. mkdir /usr/local/etc/ftpd
  6. make install (с правами root)
  7. ftpusers
  8. ftphosts
  9. ftpconversions - компрессия/декомпрессия, затаривание, затаривание с компрессией, выдача crc, md5
  10. ftpgroups - должен отсутствовать
  11. ftpaccess
  12. если нужен анонимный доступ
  13. гостевая группа (пользователи с реальными именами/паролями, но для которых производится chroot)
  14. ftpservers - должен отсутствовать
  15. проверяем конфигурацию /usr/local/sbin/ckconfig
  16. в /etc/inetd.conf (нужен ли tcpd на самом деле?)
    ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/in.ftpd -a -l -I -W (для RH 7.0: /etc/xinetd.d/wu-ftpd: stream,nowait,root,/usr/local/sbin/in.ftpd,-l -a -I -W)
  17. /etc/pam.d/ftp (?)
  18. послать сигнал HUP процессу inetd/xinetd (с правами root), чтобы перечитал inetd.conf/xinetd.conf
  19. проделать дырки в защите для доступа с LAN, dialup и снаружи

Процесс установки wu-ftpd-2.4.2 для Solaris 2.5 и gcc 2.6.2

  1. качаем архив (я извлек версию 2.4.2-beta-11)
  2. разтариваем его (создается директория wu-ftpd-2.4.2-beta-11)
  3. заходим в нее
  4. сильно меняем src/pathnames.h (отключая условную компиляцию)
  5. говорим (не забудь /usr/ccs/bin в список поиска) ./build sol
  6. меняем в Makefile /usr/sbin на /usr/local/sbin, а /usr/share/man на /usr/local/man, а то уж очень неприлично получается (/usr/local/man/man1m должен существовать!).
  7. под суперпользователем говорим ./build install
  8. меняем /etc/inetd.conf, чтобы вызывался новый ftpd
    ftp stream tcp nowait root /usr/local/sbin/in.ftpd in.ftpd -a
  9. посылаем сигнал HUP процессу inetd (под суперпользователем), чтобы заново зачитал inetd.conf
  10. копируем doc/ftpaccess в /usr/local/wu-ftpd/etc/ftpaccess и правим:

  11. создаем файл /usr/local/wu-ftpd/etc/ftpusers и заносим в него все имена пользователей, которые есть в /etc/passwd, но которых мы не хотим видеть через ftp (root, uucp и др.)
  12. создаем файл /usr/local/wu-ftpd/etc/ftphosts, в который можно занести для каждого пользователяадреса откуда ему можно заходить и откуда нет (сейчас пустой)
  13. создаем файл /usr/local/wu-ftpd/etc/ftpconversions, который описывает преобразования, который ftp-сервер делает "на лету" (сжатие, затаривание)
  14. файл /usr/local/wu-ftpd/etc/ftpgroups не создаю, т.к. не понимаю для чего эти группы нам нужны.
  15. выполняем bin/ckconfig, чтобы проверить правильность конфигурирования (ух ты сколько сообщений...)
  16. создаем группу ftp с помощью admintool (например, 400) и добавляем в нее члена ftp
  17. создаем пользователя ftp с идентификатор (например, 400) из группы 400(ftp), комментарий: "Anonymous FTP", shell: /bin/true, password: account is locked, создать домашнюю директорию: /usr/local/wu-ftpd/home
  18. директория /usr/local/wu-ftpd/home должна принадлежать суперпользователю и группе ftp, иметь права доступе 555
  19. теперь создаем в ней вспомогательные файлы (все директории с правами 111, исполняемые файлы 111, тексты 444, кроме явно именованных):
    bin/ls
    dev/tcp - права 666 (mknod dev/tcp c 11 42 для Solaris)
    dev/zero - права 444 (mknod dev/zero c 13 12 для Solaris)
    etc/passwd - можно пустой
    etc/group - можно пустой
    etc/welcome.msg
    usr/lib/ld.so.1 - права 555
    usr/lib/libc.so.1 - права 555
    usr/lib/libdl.so.1 - права 555
    usr/lib/libintl.so.1 - права 555
    usr/lib/libw.so.1 - права 555
    usr/local/bin/compress
    usr/local/bin/gzip
    usr/local/bin/tar
    usr/share/lib/zoneinfo/Europe/Moscow
  20. не забудь про /etc/shells
  21. теперь разберемся с pub (root ftp 2555), внутренние директории должны иметь те же права
  22. создаем внутреннюю директорию pub/incoming (root ftp 733+t) - если надо - перед этим надо разобраться с директивами upload, path-filtr и научиться ограничивать размер
  23. под суперпользователем
    cd /usr/local/wu-ftpd/home
    touch .forward;chmod 400 .forward
    touch .rhosts;chmod 400 .rhosts
    touch /usr/spool/mail/ftp; chmod 400 /usr/spool/mail/ftp (?)
  24. монтировать NFS внутрь ~ftp только так:
    other:/u1/linux /home/ftp/pub/linux nfs ro,noquota,nosuid,intr,bg 1 0
  25. ну и самое интересное: заполнение pub

Еще раз к вопросу о пассивном ftp : измени права к файлу ~ftp/dev/tcp с crw-rw-rw- на crw-rw-r-- и права на пассивный ftp (команда PASV - например, Microsoft Internet Explorer без нее не живет) будут иметь только пользователи из группы sys (а анонимные пользователи нет).

Программы, входящие в комплект

Аутентификация пользователя:

  1. имя пользователя д.б. в /etc/passwd (или как его там) и иметь непустой пароль и иметь стандартный shell, возвращаемый getusershell (/etc/shells)
  2. это имя не д.б. указано в ftpusers
  3. если клиент предъявляет имя anonymous или ftp, то д.б. пользователь ftp в /etc/passwd. Пароль в этом случае не проверяется. Сервер делает chroot в домашнюю директорию пользователя ftp.

Конфигурационные файлы (root:sys:600):

Формат журнала xferlog (для режима syslog, уровень info - нет дня недели и года):

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

Поддерживаемые команды:

Изменения от 2.4.2-beta-11 до 2.6.0

Отличия 2.6.1 (2 июля 2000) от 2.6.0

Отличия 2.6.2 (29 ноября 2001) от 2.6.1

Как делать анонимный FTP-доступ

другой автор

Стандартный in.ftpd, входящий в поставку Solaris 2.5

в═/etc/services:

═ ═rftp 55/tcp

в /etc/inetd.conf

═ rftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd

не нравится по двум причинам:

  1. не знаю насколько он безопасен
  2. не понимает команды типа reget

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

Bog BOS: FTP серверы (wu-ftpd)

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)



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