Базовая настройка и ознакомление ProFTPD Ubuntu 9.04
ProFTPd — FTP-сервер для Linux и UNIX-подобных операционных систем.
Установка
sudo apt-get install proftpd
Выбрать типа запуска: standalone ('самостоятельно')
Теория
В ProFTPD можно создавать виртуальные сервера, которые описываются секцией <VirtualHost> (например для разных ip или портов)
Что бы включить анонимный доступ нужно добавить в описание сервера секцию <Anonymous>
Что бы определить единые параметры (основного и всех виртуальных) серверов их нужно записать в секции <Global>
Настройка
Рассмотрим начальный (из Ubuntu) конфиг, выставим пару своих параметров и прокомментируем происходящее.
Используются учетные записи из системы и пользователи при подключение попадают в свой домашний каталог.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#
########################################################################################################
# ProFTPD config
########################################################################################################
## Протокол IP v6
# default = on
UseIPv6 off
## Запуск как демона
ServerType standalone
## Запуск через inetd
#ServerType inetd
## Максимальное количество порожденных процессов (1 подключение = 1 процесс)
# Работает только в standalone mode.
# default = none
MaxInstances 99
## Протокол RFC2228
# default = off
MultilineRFC2228 on
## Максимально число подключений к серверу в секунду
# default = none
MaxConnectionRate 1
########################################################################################################
# Global config
########################################################################################################
<Global>
## Использование протокола ident (RFC 1413) для идентификации клиента. Может увеличить время подключения
# Не актуально !!!
# default = on
IdentLookups off
## Показывать символические ссылки
# default = on
ShowSymlinks off
## Максимальное число попыток ввода пароля до разрыва соединения
# default = 3
#MaxLoginAttempts 3
## Фильтр команд
# Чтобы предотвратить попытку положить или взломать демон proftpd командой "ls */../*/../*/...",
# включите директиву фильтра DenyFilter \*.*/
# Можно использовать для дополнительной фильтрации директиву PathDenyFilter "(^|/)[-.]"
# default = none
DenyFilter \*.*/
</Global>
########################################################################################################
# Основной сервер
########################################################################################################
# Includes DSO modules
Include /etc/proftpd/modules.conf
## Имя сервера
# default = "ProFTPD"
ServerName "ftp test"
## Вывод информации о сервере (= off тогда будет выводится только ip адрес [hostname])
# off : тогда будет выводится только ip адрес [hostname])
# default = on "ProFTPD [version] Server (server name) [hostname]"
#ServerIdent off
## Альтернатива (при этом не показывает ServerName и ip)
ServerIdent on "My ftp server v1.0"
## Показывать ServerName и ip адрес только после авторизации
# on : ??? не вывелось и после авторизации
# default = off
DeferWelcome on
## Определяет сервер 'по умолчанию'
# on : Сервер примет все запросы (которые не предназначены для любого другого сервера)
# Т.е. в данном случае сервером по умолчанию является основной сервер
# Указать этот параметр можно только одни раз в одном из виртуальных серверов или основном
# off : ничего
# default = off
DefaultServer on
## Время (секунд), по истечению которого сервер будет закрывать соединение
# без приема/передачи файлов, а также получения списка директории (для GUI клиентов это можно понимать как переход по папкам)
# default = 300
TimeoutNoTransfer 600
# ??? замирание во время пересылки файла, лаги
# default = 3600
TimeoutStalled 300
# без передачи каких-либо файлов, команд (включая команды управления)
# default = 600
TimeoutIdle 1200
# общая продолжительность сессии
# default = none
TimeoutSession 86400
# ожидание логина/пароля при подключении
# default = 300
TimeoutLogin 30
# Время ожидания ответа
# так как у большинства клиентов значение время ожидания ответа сервера равняется 60 сек.
# и чтобы не натолкнуться на таймаут клиента, TimeoutLinger не должен превышать 60 сек.;
# default = 60 (раньше 180)
TimeoutLinger 30
## Текстовый файл, содержимое которого будет показано после входа пользователя
# адрес файла может быть относительно директории входа или абсолютный
# пользователь должен обладать правами на чтение
DisplayLogin welcome.msg
## Сообщение после перехода в директорию
# адрес файла может быть относительно директории входа или абсолютный
# опция true - показывать сообщение только при первом входе в директорию
#DisplayChdir .message true
## Параметры добавляются для команды просмотра каталога
# default = none
ListOptions "-lha"
## Разрешить перезаписывать существующие файлы
# default = off
AllowOverwrite on
## Фильтр файлов
# default = none
PathDenyFilter "(\\.ftpaccess|\\.htaccess)$"
## Порт
Port 21
# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts 49152 65534
# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress 1.2.3.4
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
## !!! Запрещает выход пользователя выше указанной директории
DefaultRoot ~
# Set the user and group that the server normally runs at.
User proftpd
Group nogroup
## Маска прав на файлы и директории
# 003 022 (маска) = 644 755 (реальные права)
Umask 033 022
## Максимально число подключений
# default = none
MaxClients 20 "Занято"
## Максимальное число подключений с одного ip
# default = none
MaxClientsPerHost 5 "С вашего адреса разрешено не больше %m подключений"
## Максимальное число подключений под одним пользователем
# default = none
MaxClientsPerUser 1 "Ваша учетная запись уже используется"
## Авторизовать пользователя только если он имеет основной shell из списка /etc/shells
# default = on
#RequireValidShell on
# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd off
# This is required to use both PAM-based authentication and local passwords
# AuthOrder mod_auth_pam.c* mod_auth_unix.c
## Использование системных вызовов sendfile
# on : при этом утилиты: ftptop, ftpwho - не сомгут отобразить прогресс/скорость скачки (download)
# default = on
#UseSendFile off
## Лог
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf
## Обработка пользователей 'anonymous' производится в этой секции,
# Так же, здесь могут быть переопределены некоторые параметры. Другие будут унаследованы
<Anonymous ~ftp>
User ftp
Group nogroup
## Пользователь "anonymous" заходит как "ftp"
UserAlias anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
# т.к. пользователя anonymous'a нету то и шела у него нету
RequireValidShell off
## Ограничение количества анонимных пользователей
# ! внимание ! ограничения пересекаюся с основным конфигом
#MaxClients 2 "Больше ни каких анонимусов" #В данном случае такое ограничение - не больше двух анонимных пользователей, не сработает
# Если на сервере уже подключены два и более 'нормальных' пользователей, поэтому будем использовать MaxClientsPerUser
MaxClientsPerUser 2 "Больше ни каких анонимусов"
MaxClientsPerHost 1 "Не больше %m анонимуса с хоста"
# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Uncomment this if you're brave.
# <Directory incoming>
# # Umask 022 is a good standard umask to prevent new files and dirs
# # (second parm) from being group and world writable.
# Umask 022 022
# <Limit READ WRITE>
# DenyAll
# </Limit>
# <Limit STOR>
# AllowAll
# </Limit>
# </Directory>
</Anonymous>
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
Обсуждение