Тут всё стандартно:
apt-get install proftpd
Если распаковoщик спросит вариант запуска, выбирайте standalone.
На этом шаге у вас уже есть полноценный FTP сервер, и вы можете подключать к серверу с системными и созданными пользователями (напр. root)
Напоминаю: смена пароля у пользователя: passwd username
Теперь мы отвяжем пользователей FTP от системных:
Для этого поправим конфигурационный файл nano /etc/proftpd/proftpd.conf
Я привожу настройки, которые вам необходимо поменять:
# отвязываем от системных пользователей RequireValidShell off # права по-умолчанию 775. Защищает от того, что загруженые файлы будут всем на запись. Umask 002 002 # Далее необязательно. если будете давать доступ по ftp только к каталогам с сайтами, то поставьте сюда юзера и группу вебсервера (по-умолчанию www-data www-data) User ftp Group nogroup
Добавим (в самый низ) ссылки на соотв. файлы собственной базы proftpd (Она имеет синтаксис подобный системной)
AuthUserFile /etc/proftpd/ftpd.passwd AuthGroupFile /etc/proftpd/ftpd.group
Перезапустим FTP-сервер: service proftpd restart
или /etc/init.d/proftpd restart
На этом работа с конфигурационным файлом окончена
Установим, права какого пользователя давать.
Допустим, мы решили давать нашему пользователю права «как у апача». Установим ID этого пользователя, просто посмотрев в файле /etc/passwd
cat /etc/passwd | grep www-data # вы получите что-то вида www-data:x:33:33:www-data:/var/www:/bin/sh
33 и будет искомым ID.
Чтобы добавить пользователя выполните(если вы перейдёте в папку /etc/proftpd, аргумент –file можно не указывать):
ftpasswd –passwd –file=/etc/proftpd/ftpd.passwd –name=u1 –home=/home/stat.serverstat.ru –uid=33 –shell=/bin/false
Это добавит FTP пользователя u1 с домашней папкой /home/stat.serverstat.ru . Пользователь будер работать с правами системного пользователя с ID равным –uid (его мы выяснили на первом шаге) .
Изменения в настройках авторизации вступают в силу мнгновенно.
Также у proftpd есть механизм лимитов (ftpquota
), просмотра активных сессий (ftpwho
) и многое другое, подробнее см. http://www.proftpd.org/docs/
Можно дополнительно защитить общение с сервером, включением TLS.
Сгенерируем сертификат [Все параметры кроме Common Name(имя сервера) нам неважны] (и поставим на него безопасные права.):
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/proftpd.cert.pem -keyout /etc/proftpd/proftpd.key.pem chown 0640 /etc/proftpd/proftpd.cert.pem chown 0600 /etc/proftpd/proftpd.key.pem
Далее скопируем на всякий случай оригинальный конфиг модуля tls: cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf.old
И внесём изменения в файл /etc/proftpd/tls.conf
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/proftpd/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/proftpd.key.pem TLSVerifyClient off # если хотите всё таки разрешить обычное соединение, поставьте TLSRequired off TLSRequired on </IfModule>
Добавим Include /etc/proftpd/tls.conf
в конец файла /etc/proftpd/proftpd.conf
и перезапустим proftpd.
Теперь, выбрав в настройках explict FTP (или протокол ftpes:) вы можете пользоваться защищенным соединением по стандартному 21 порту.