Базовая настройка и ознакомление ProFTPD Ubuntu 9.04
ProFTPd — FTP-сервер для Linux и UNIX-подобных операционных систем.
Установка
sudo apt-get install proftpdВыбрать типа запуска: standalone ('самостоятельно')
Теория
В ProFTPD можно создавать виртуальные сервера, которые описываются секцией <VirtualHost> (например для разных ip или портов)
Что бы включить анонимный доступ нужно добавить в описание сервера секцию <Anonymous>
Что бы определить единые параметры (основного и всех виртуальных) серверов их нужно записать в секции <Global>
Настройка
Рассмотрим начальный (из Ubuntu) конфиг, выставим пару своих параметров и прокомментируем происходящее.
Используются учетные записи из системы и пользователи при подключение попадают в свой домашний каталог.
proftpd.conf
# # /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>
Обсуждение