Рассмотрим примерный конфигурационный файл настройки ProFTP, работающий в пассивном режиме на сервере под управлением FreeBSD. На момент написания статьи версия демона ftp была proftpd-1.3.3d, версия ОС – FreeBSD 8.0-RELEASEдля архитектуры i386. Как создать анонимного пользователя ftp я уже описывал в этой статье. Установка ProFTPD не должна вызвать у вас затруднений. |
Сперва нам необходимо найти, где расположен порт во FreeBSD:
# whereis proftpd
proftpd: /usr/ports/ftp/proftpd
Теперь переходим в каталог /usr/ports/ftp/proftpd и собираем порт ProFTPD с необходимыми нам опциями:
# cd /usr/ports/ftp/proftpd
# make config
Обратите внимание, что опций гораздо больше, чем показано на рисунке!
Далее необходимо произвести собственно установку:
# make install clean
После установки не забываем внести изменения в /etc/rc.conf, чтобы разрешить запуск установленного демона ftp. Для этого вашим любимым редактором внесите в указанный файл стоку proftpd_enable=“YES”:
# nano -w /etc/rc.conf
...
proftpd_enable="YES"
...
В каталоге /usr/local/etc в момент установки записался примерный файл конфигурации ProFTPD – proftpd.conf.sample. Скопируем его и изменим под наши нужды.
# cp /usr/local/etc/proftpd.conf.sample /usr/local/etc/proftpd.conf
Дополнительную информацию о настройке ProFTPD ищите на официальном сайте. Ниже приведен простейший файл конфигурации для работы с ftp локальных пользователей FreeBSD и организации доступа для анонимного пользователя.
Нижеприведенная настройка предполагает, что что у вас в системе уже создан анонимный пользователь ftp, а также присутствуют пользователь/группа nobody/nogroup.
# nano -w /usr/local/etc/proftpd.conf
# Описываем свой сервер
ServerName "FTP-server"
# Это отдельно стоящий сервер (режим работы - автономный)
ServerType standalone
# Указываем, на каком IP-адресе будет работать ftp
DefaultAddress 192.168.0.10
# Сервер будет работать только на указанном IP-адресе
SocketBindTight on
# Выключаем приветствие, выдаваемое клиенту после соединения
ServerIdent off
# Имя файла, где хранится информация о текущих сессиях
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
# Указываем стандартный порт для работы
Port 21
# Интервал портов для работы в пассивном режиме (min max)
PassivePorts 50000 50100
# Не использовать протокол IPv6 (лучше собрать порт без оной)
UseIPv6 off
# Umask для создаваемых файлов и директорий
Umask 022
# Максимальное число одновременно запускаемых процессов в режиме standalone
MaxInstances 30
# Ограничение максимальной длины команды (число символов)
CommandBufferSize 512
# Общее максимальное число соединений и выводимое предупреждение при достижении этого числа
MaxClients 10 "Too many connections"
# Максимальное число соединений с одного хоста и предупреждение при достижении этого числа
MaxClientsPerHost 3 "%m client are already connected from your host"
# Максимальное число попыток ввода пароля и предупреждение при достижении этого числа
MaxLoginAttempts 3 "Too many of attempts to connected"
# Выводимое сообщение при запрещении входа на ftp
AccessDenyMsg "ATTENTION! All connections are loged"
# Выводимое сообщение
AccessGrantMsg "Now apload/download files"
# Выводимое сообщение при отклонении соединения с ftp
DisplayGoAway "Go Away!"
# Уровень логирования
SyslogLevel notice
# Не проверять реверсные ответы DNS
UseReverseDNS off
# Отключаем использование протокола идентификации RFC1413
IdentLookups off
# Файл лога передачи файлов
TransferLog /var/log/proftpd-transfer.log
# Файл общего системного лога ProFTPD
SystemLog /var/log/proftpd-error.log
# Файл лога записи/чтения файлов с ftp
ExtendedLog /var/log/proftpd-extended.log read,write
# Указываем пользователя/группу от имени которых будет запущен ProFTPD
User nobody
Group nogroup
# Перенаправляем каждого ftp-пользователя в его домашнюю директорию
DefaultRoot ~
# Разрешаем перезаписывать файлы
AllowOverwrite on
# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
DenyAll
</Limit>
# Задержка простоя (в секундах)
TimeoutIdle 3600
# Задержка ожидания авторизации (в секундах)
TimeoutLogin 3600
# Задержка после авторизации, если не начал прием/передачу файлов (в секундах)
TimeoutNoTransfer 3600
# Задержка во время пересылки файла (в секундах)
TimeoutStalled 3600
# Максимальная длительность сессии (в секундах)
TimeoutSession 3600
# Не использовать PAM-аутентификацию
AuthPAM off
# Описываем работу ProFTPD при анонимном доступе, указав каталог /home/ftp
<Anonymous /home/ftp>
# Имя/группа для анонимного пользователя
User ftp
Group nogroup
# Указываем анонимных пользователей (uid)
UserAlias anonymous ftp
# Даем доступ только пользователям, упомянутым в директиве UserAlias
AuthAliasOnly on
# Не проверять валидность shell у анонимного пользователя
RequireValidShell off
# Не спрашивать пароль у анонимных пользователей
AnonRequirePassword off
# Указываем максимальное число анонимных пользователей и сообщение при достижении этого числа
MaxClients 5 "Soory, max %m users - try again later"
# Ограничения на вход для анонимных пользователей
<Limit LOGIN>
# Пускаем всех
AllowAll
</Limit>
# Ограничение на запись для анонимных пользователей
<Limit WRITE>
# Запрещаем всем
DenyAll
</Limit>
</Anonymous>
Теперь нам необходимо создать три файла для логов работы ProFTPD:
# touch /var/log/proftpd-error.log
# touch /var/log/proftpd-extended.log
# touch /var/log/proftpd-transfer.log
И, собственно, запустить установленный и настроенный ProFTPD:
# /usr/local/etc/rc.d/proftpd start
Проверить работу демона ProFTPD можно командой:
# netstat -tan | grep LIST | grep 21
tcp4 0 0 192.168.0.10.21 *.* LISTEN
Следует еще упомянуть несколько полезных команд для мониторинга работы ProFTPD:
- ftpwho – показывает текущую информацию о процессе для каждого сеанса FTP
- ftpcount – показывает текущее число соединений для каждой proftpd конфигурации сервера
- ftptop – отображает рабочее состояние на proftpd соединениях сервера
Напоследок напоминаю, что если на вашем сервере установлен файервол, то вам необходимо дать разрешения на доступ к вашему сконфигурированному ftp-серверу. Покажу это на примере pf:
# less /etc/pf.conf
ext_if="em0"
ext_addr="12.34.56.78"
int_if="bge0"
int_addr="192.168.0.10"
localnet="{192.168.0.0/16}"
set skip on lo0
set block-policy drop
scrub in all
block all
block in quick from urpf-failed
pass in on $int_if from $localnet to $int_addr
pass out on $int_if from $int_addr to $localnet
# Разрешаем на внешнем сетевом интерфейсе доступ от всех к внешнему ip-адресу по портам 21, 25 и 80
pass in on $ext_if proto tcp from any to $ext_addr port {21,25,80}
# Разрешаем исходящий трафик на внешнем сетевом интерфейсе от внешнего ip-адреса ко всем
pass out on $ext_if proto {tcp,udp,icmp} from $ext_addr to any
# Разрешаем трафик с логированием на внешнем сетевом интерфейсе по протоколу tcp от всех к портам
# 50000 - 50100, которые мы указали для работы proftpd в пассивном режиме
pass in log quick on $ext_if inet proto tcp from any to $ext_if port 50000 >< 50100
pass quick on lo0 all
Вот и все, удачи!
После установки Proftpd можно воспользоваться возможностями следующих утилит:
- ftpcount - показывет текущее количество соединений.
- ftpshut - выключает все серверы proftpd в указанное время.
- ftptop - отображает статус запущенных соединений.
- ftpwho - показывает информацию о текущих процессах для каждой сессии
Комментариев нет:
Отправить комментарий