Это старая версия документа!


СТАТЬЯ ЕЩЁ НЕ ЗАКОНЧЕНА !!!

Дата написания: май 2018 г.
Автор: Graf

FTP Сервер на базе PureFTPd


Установка и настройка сервера

Перед установкой и настройкой сервера, открываем файл /etc/shells и проверяем в нем наличие строки /bin/false, если ее нет — дописываем. Устанавливаем pure-ftpd через sbopkg предварительно изменив SlackBuild добавив в блок configure:

--with-language=russian \
--with-tls \
--with-rfc2640

Или изменив соответствующие переменные выше блока configure.
Далее, во всех статьях советуют создать отдельную группу и пользователя от имени которого будут работать виртуальные пользователи.

# groupadd ftpgroup
# useradd -g ftpgroup -d /dev/null -s /bin/false ftpuser

Но, у меня стоит задача дать доступ лишь веб-программистам которые могли бы заливать файлы по ftp.
И тут возникает одна оказия. После заливки файлов на веб-ресурс , владельцем их становится ftpuser:ftpgroup, а надо apache:apache. Поэтому ничего создавать я не буду, так-как apache у нас, в основном, бесправный вот пусть он и будет для виртуальных пользователей ftp «папой и мамой». :)
Если ftp-сервер создается для других целей, то целесообразно создать отдельную группу и пользователя (команда выше), а в моих примерах поменять их соответственно.
Так как сам ftp не безопасен, надо его хоть как-то защитить. Для этого создадим сертификат:

# mkdir -p /etc/ssl/private/
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
...
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:MO
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyOrg
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:mydom-ftp.ru  <- DNS имя на которое будем заходить по ftp
Email Address []:admin@mydom.ru

# chmod 600 /etc/ssl/private/pure-ftpd.pem

Создали.
Теперь настроим сам сервер. Для этого переименуем существующий файл /etc/pure-ftpd/pure-ftpd.conf и создадим новый со следующими параметрами:

ChrootEveryone              yes
BrokenClientsCompatibility  no
MaxClientsNumber            5
Daemonize                   yes
MaxClientsPerIP             3
VerboseLog                  no
DisplayDotFiles             no
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 10
PureDB                      /etc/pure-ftpd/pureftpd.pdb
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
TLS                         2
CertFile                    /etc/ssl/private/pure-ftpd.pem
FileSystemCharset           UTF-8
AltLog                      w3c:/var/log/pureftpd.log
PassivePortRange            50000 50100

Пояснения к параметрам и возможные значения указаны в таблице ниже.

Если сервер (допустим -192.168.15.15) за NAT'ом, то необходимо пробросить TCP порты 20, 21 - для активного режима и диапазон TCP портов, например 50000:50100 - для пассивного:

$IPTABLES -t nat -A PREROUTING -d $INET_IP -p tcp -m multiport --port 20,21,50000:50100 -j DNAT --to-destination 192.168.15.15
$IPTABLES -I FORWARD 1 -i $INET_IFACE -o $LAN_IFACE -d 192.168.15.15 -p tcp -m multiport --port 20,21,50000:50100  -j ACCEPT

Если не за NAT'ом, то просто открыть их:

$IPTABLES -A INPUT -p tcp -m multiport --destination-port 20,21,50000:50100 -j ACCEPT

Если выбран неявный (Implicit) метод шифрования, то необходимо ещё открыть (пробросить) TCP порты 989 и 990.

Добавляем виртуального пользователя webadmin1 с домашней директорией /var/www/htdocs/site1, который буде работать от имени реального пользователя и группы apache:apache (ftpuser:ftpgroup)

# pure-pw useradd webadmin1 -u apache -g apache -d /var/www/htdocs/site1

Если параметр CreateHomeDir в конфигурационном файле сервера не закомментирован и установлен в yes, то директория будет создана автоматически при первом входе данного пользователя через FTP-клиент. После выполнения команды будет предложено ввести пароль для виртуального пользователя.
После каждых изменений обновляем /etc/pure-ftpd/pureftpd.pdb (или используем ключ -m):

# pure-pw mkdb

Немного о командах и ключах в конце статьи.
Теперь запустим сервер и проверим работу нашего FTP-сервера:

# /etc/rc.d/rc.pure-ftpd start

Для автоматического запуска, пропишем эту строчку в /etc/rc.d/rc.local
Проверим запустился ли наш сервер.

# ps aux | grep pure
root      5876  0.0  0.0  17460  4740 ?        Ss   09:29   0:00 /usr/sbin/pure-ftpd /etc/pure-ftpd/pure-ftpd.conf

Запустился. Идём настраивать клиентов и проверять работу нашего FTP-сервера.

Установка и настройка клиентов

Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:pureftpd (generated for current page)