Установка и настройка ProFTPD на Debian


Итак, у нас задача установить и настроить ProFTPD сервер на Debian Linux, допустим, для того, чтобы получать доступ к сайтам расположенным на нашем сервере в каталоге /home. Сайты расположены каждый в своей директории, и настроены виртуальные хосты.
Для установки наберём следующую команду:

apt-get install proftpd

Система загрузит нужные для установки модули с сервера debian и приступит к установке. Во время установки в систему будет добавлен пользователь ftp и создана его домашняя директория /home/var.

Если Вас не устраивает лишняя директория в /home, Вы можете поступить как я, и переместить его домашнюю директорию, например, в /var/ftp. Делается это командами:

# меняем домашнюю директорию пользователя ftp на /var/ftp
usermod –d /var/ftp ftp
# копируем файл welcome.msg в нужную директорию
cp /home/var/welcome.msg /var/ftp
# удаляем папку из /home и файл
rm /home/ftp/welcome.msg rmdir /home/ftp

Ненужную директорию спрятали, теперь переходим непосредственно к конфигурированию и настройке ProFTPD сервера.
Открывает для редактирования файл /etc/proftpd/proftpd.conf в помощью любого текстового редактора, например, nano:

nano /etc/proftpd/proftpd.conf

Далее я привожу пример файл proftpd.conf с подробными пояснениями:

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
# 

# Includes DSO modules
Include /etc/proftpd/modules.conf

UseIPv6				  on  # включаем использование IP version 6
ServerName			      "FTP" # имя ftp сервера что угодно
ServerType		       standalone # если часто юзают фтп то выбираем то что стоит
DeferWelcome		   	  off 

RootLogin                       off  # запрещаем подключать от пользователя root

# определять имя хоста клиента по IP адресу (желательно отключать для ускорения доступа)
UseReverseDNS			  off 
# использование протокола ident (RFC 1413) для идентификации подслединившегося клиента; 
# рекомендуется отключить, все равно этот протокол никто больше не использует; 
# область действия - основной сервер, Global, VirtualHost
IdentLookups			              off 

MultilineRFC2228		             on
DefaultServer			             on
ShowSymlinks			 on

TimeoutNoTransfer		           600
TimeoutStalled		           600
TimeoutIdle			         1200

DisplayLogin                    welcome.msg
DisplayChdir               	.message true
ListOptions                	 "-l"

DenyFilter			      *.*/

# Автоматическое удаление недогруженного файла.
DeleteAbortedStores              on   

# директория на которую устанавливается сервер 
# (сейчас указана home директория подлюченного пользователя)
DefaultRoot                     ~   

# авторизовывать клиента только если он имеет основной shell из списка /etc/shells; 
# область действия - основной сервер, Global, VirtualHost, Anonymous (ВАЖНО!!!)
RequireValidShell		        off  

# Порт сервера
Port				         21

# PassivePorts          49152 65534  # диапазон для пассивного режима ftp

# 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


# DynMasqRefresh 28800


# максимальное число одновременно запускаемых процессов в режиме standalone
MaxInstances			   30  

# Пользователь и группа от которого работает сервер 
User				    proftpd
Group				    nogroup

# права с которыми будут создаваться файлы и папки
Umask				   022  022  

# разрешить перезаписывать существующие файлы, 
# область действия - server config, VirtualHost, Anonymous, Directory, Global, .ftpaccess
AllowOverwrite			   on 

# держать ли открытыми файлы /etc/passwd и /etc/group во время работы proftpd, включая chroot
# PersistentPasswd		  off  

# This is required to use both PAM-based authentication and local passwords
# AuthOrder			mod_auth_pam.c* mod_auth_unix.c

# UseSendFile			  off

# обрабатывать ли сайт ftpusers в котором перечислены пользователи, 
# которым нужно запретить доступ по ftp 
UseFtpUsers                      on  

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log


QuotaEngine off



Ratios off


# 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. 

DelayEngine on



ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock



AdminControlsEngine off


#
# Подключение файлов конфигурации для авторизиции по разным протоколам
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# Используется для FTPS соединений
#
#Include /etc/proftpd/tls.conf

# Базовая конфигурация и директории для анонимных пользователей 

# 
#   User				ftp
#   Group				nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias			anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser	on ftp
#   DirFakeGroup on ftp
# 
#   RequireValidShell		off
# 
#   # Limit the maximum number of anonymous logins
#   MaxClients			10
# 
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin			welcome.msg
#   DisplayChdir		.message
# 
#   # Limit WRITE everywhere in the anonymous chroot
#   
#     
#       DenyAll
#     
#   
# 
#   # Uncomment this if you're brave.
#   # 
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask				022  022
#   #            
#   #            DenyAll
#   #            
#   #            
#   #            AllowAll
#   #            
#   # 
# 
# 

Подробнее хотел бы пояснить следующих несколько директив: RootLogin, UseFtpUsers, DefaultRoot и RequireValidShell.

RootLogin – включает/отключает доступ по ftp пользователю root. Рекомендую отключить эту директиву и не использовать доступ от root в целях безопасности, так как по ftp передаются не зашифрованный пароль.
UseFtpUsers – обрабатывать ли файл ftpusers. В данном файле находится имена пользователей, которым запрещён доступ по ftp. Включаем его на всякий случай.
DefaultRoot – директория для доступа. Устанавливаем его в «~», то есть при заходе по ftp, пользователь будет попадать в свой домашний каталог и не сможет подняться выше него.
RequireValidShell – разрешить/запретить авторизовывать клиента только если он имеет основной shell из списка /etc/shells. Лично я, споткнулся именно на этой директиве. Дальше Вы поймёте почему.:)

Итак, остался последний шаг, а именно добавления своего ftp пользователя в систему. К примеру, мы хотим подключаться по ftp от пользователя “alexey” с паролем “56s4a27e”. Добавляем его в систему. Сразу запрещаем доступ это пользователя к системе через shell и указываем домашнюю директорию /home. Делается это следующей командой:

useradd –home /home –shell /bin/false –group nogroup alexey

Когда пользователь добавлен, перезагружаем proftpd сервер, командой:

/etc/init.d/proftpd restart

Если перезагрузка сервера прошла успешно, продолжаем дальше. Если же нет, ищем ошибки в файле конфигурации proftpd.conf. Пробуем подключится через любой ftp менеджер, например, через Total Commander используя имя пользователя “alexey” с паролем “56s4a27e”.

Добавил: admin
Дата добавления: 10-01-2011

Комментарии:
Гость   19 Января 2015 в 10:06
The exieptrse shines through. Thanks for taking the time to answer.
Гость   27 Декабря 2014 в 11:28
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=логин --shell=/bin/false --home=/var/www/папка --uid=105 --gid=33 я так добавляю и редактирую
Гость   2 Декабря 2014 в 00:55
где смотреть таймаут? И как его отключить?
Гость   28 Ноября 2013 в 16:21
Для Debian 7 Wheezy команда создания пользователя будет следующей: useradd -d "/path/to/dir" -s "/bin/false" -g "group" username Ну и пароль не забудьте создать: passwd username
admin   11 Ноября 2012 в 08:29
Извиняюсь! Опечатка вышла. Действительно недописал имя пользователя.
Гость   11 Ноября 2012 в 01:12
Что то я не вижу чтобы после useradd где то написан логин alexey
Гость   16 Мая 2012 в 23:20
Проблема в том, что вы нигде не назначаете пользователю пароль
admin   21 Февраля 2012 в 08:57
Файл ftpusers лежит в директории /etc/, а пользователя Linux можно создать командой useradd. Там же написано
Гость   20 Февраля 2012 в 11:02
Немного не понял про создание пользователя - как его создать? и где лежит файл ftpusers?
admin   5 Февраля 2012 в 14:43
Извините, опечатка вышла. Правильно: DenyFilter *.*/. Директива позволяет предотвратить попытку взломать сервер командой "ls */../*/../*/...".
Ваш комментарий:


Проверочный код:*