From: Бочкарев Денис aka def <def@almnu.ru>
Newsgroups: mail
Date: Mon, 21 Jul 2003 14:31:37 +0000 (UTC)
Subject: Настройка ProFTPd на сервере под управлением FreeBSD
Помощь в установке и настройке ProFTPd на сервере под управлением FreeBSD 4.x/5.х. (18.07.2003)
http://shelter.almnu.ru
Установка
ProFTPd (http://www.proftpd.org/) - популярный ftp демон под *NIX.
Имеет гибкие настройки, стабилен в работе, быстр, достаточно безопасен,
компилируется под многие платформы, имеет полезные расширения для работы
с MySQL, LDAP и др. Альтернативы ему практически нет. Стандартный ftp
FreeBSD уступает по функциональности и непригоден для большого ftp сервера.
Установку целесообразно производить из портов, предварительно накатив их
через cvs до послених версий.
su-2.05b# cd /usr/ports/ftp/proftpd/
su-2.05b# make all install
su-2.05b# make clean
Проблем с установкой возникнуть не должно. Если отсутствует канал в
интернет, можно установить из пакетов. Дополнительно можно собирать
модули используя опцию make --with-modules=${MODULES}. Запуск возможен
двумя способами: скриптом при старте системы, либо через inetd. Для
первого существует скрипт /usr/local/etc/rc.d/proftpd.sh.sample
который нужно переименовать в proftpd.sh и дать права на запуск chmod
755 proftpd.sh. Для второго способа редактируем /etc/inetd.conf,
закомментируем две строки и допишем нашу:
Эта строка позволит загружать демон при старте системы. Без
перезагрузки можно послать процессу inetd kill -HUP.
Настройка
Вооружившись документацией (http://www.proftpd.org/docs/) по используемым
в конфигурационном файле директивам приступаем к настройке. Создаем конфиг и открываем его
для редактирования. Можно открыть в любом текстовом редакторе, избегая
для этих целей Word-a.
su-2.05b# cp /usr/local/etc/proftpd.conf.default
/usr/local/etc/proftpd.conf
su-2.05b# vi /usr/local/etc/proftpd.conf
# Имя сервера
ServerName "Мой FTP Server"
#Как запускается демон (в нашем случае через inetd)
ServerType inetd
DefaultServer on
ServerIdent off
#Если сервер в локалке, то можно руту дать возможность соединяться по
ftp. В /etc/ftpusers закомментируем root
RootLogin on
#Стандартный FTP порт
Port 21
# Маска для ограничения создания директорий и файлов
Umask 022
# Пользователь и группа, под которой работает демон
User nobody
Group nogroup
# Ограничения
MaxClients 15 "Слишком много соединений с сервером"
MaxClientsPerHost 4 "%m клиента уже подключены с Вашего хоста, больше
не разрешено"
MaxLoginAttempts 3 "Слишком много попыток войти"
# Ограничение трафика. В данном случае мы ограничиваем закачку и
скачивание всем пользователям на 150k кроме рута
TransferRate RETR,STOR,APPE 150 user !root
#Возможно определить с каких ip соединения допустимы или запрещены
#UseHostsAllowFile /etc/proftpd.allow
#UseHostsDenyFile /etc/proftpd.deny
# Установим ограничения по времени
TimeoutIdle 180
TimeoutLogin 120
TimeoutNoTransfer 360
TimeoutStalled 640
# Chroot определенные группы на директории
#Для рута
DefaultRoot / wheel
#Для анонимных пользователей (директория определяется ниже)
DefaultRoot /путь.до.папки users
#Для других пользователей имеющих свою группу и доспупные только им
файлы и папки
DefaultRoot /путь.до.папки specialusers
Создаем аналогично файлы приветствий /etc/ftp_connect.msg и
/etc/ftp_login.msg. Создаем пользователя anonftp, каталогом для
анонимного доступа укажем его домашний каталог(см. алиас выше).
Дополнительная информация
При запуске и отладке могут понадобиться некоторые ключи:
--help
--version
--list (список встроенных модулей)
--debug уровень (от 0 до 9)
--config имя-файла
--configtest (проверить синтаксис)
--nodaemon (вывод на stderr а не syslog)
Информацию по состоянию можно отследить пользуясь выводом логов и
дополнительными программами (ftpcount, ftptop, ftpwho).