вторник, 1 июля 2014 г.

Настройка ftp-сервера с помощью ProFTPD

Рассмотрим примерный конфигурационный файл настройки 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
Обратите внимание, что опций гораздо больше, чем показано на рисунке!
Опции ProFTPD
Далее необходимо произвести собственно установку:
# 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:
  1. ftpwho – показывает текущую информацию о процессе для каждого сеанса FTP
  2. ftpcount – показывает текущее число соединений для каждой proftpd конфигурации сервера
  3. 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 - показывает информацию о текущих процессах для каждой сессии

Комментариев нет:

Отправить комментарий