Содержание

Настройка Pure-FTPd

Домашняя страница Pure-FTPd.

Pure-FTPd — свободный FTP-сервер для операционных систем семейства UNIX, распространяется по лицензии BSD. Основное внимание уделяется безопасности и простоте настройки.

Функциональные возможности:

Шаг 1: Инсталляция Pure-FTPd в Debian, Ubuntu, CentOS

CentOS:

yum install pure-ftpd

Debian, Ubuntu

apt install pure-ftpd

Запустим установленный, но еще не защищенный, FTP-сервер.

systemctl start pure-ftpd;
systemctl enable pure-ftpd;

Шаг 2: Установка и настройка Pure-FTPd сервера

На этом этапе сервер Pure-FTPd запущен и готов к работе. Проверим работу FPT сервера на localhost:

$ ftp localhost
Trying [::1]:21 ...
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 18:51. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:admin):
У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf - все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра. То есть для изменения настроек сервера нужно создать файл с названием параметра и значением внутри.

Шаг 3: Виртуальные пользователи PureDB

Механизм Virtual Users в Pure-FTPD (README.Virtual-Users), представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным системным пользователем. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и прочее.

Включим авторизацию из база данных пользователей PureDB (создадим символическую ссылку), по умолчанию была настроена авторизация Unix(no - выключена) и PAM (yes - включена). При аутентификации важен порядок загрузки, потому добавим цифру 60 в название создаваемой символической ссылки, чтобы проверка пользователя начиналась именно с проверки из PureDB

ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60PureDB
ls -l /etc/pure-ftpd/auth/
 
lrwxrwxrwx 1 root root 26 Sep 17 12:32 60PureDB -> /etc/pure-ftpd/conf/PureDB
lrwxrwxrwx 1 root root 26 Sep 17 12:29 65unix -> ../conf/UnixAuthentication
lrwxrwxrwx 1 root root 25 Sep 17 12:29 70pam -> ../conf/PAMAuthentication

В моем случае запущен Nginx. Чтобы выяснить от какого пользователя он запускается, можно посмотреть в его конфигурационном файле или выполнить команду:

ps -ef | grep nginx

Как мы видим он у меня запущен от пользователя www-data (также часто встречается запуск от пользователя nginx). Теперь выясним uid нашего пользователя www-data, введя команду

id www-data
 
uid=33(www-data) gid=33(www-data) groups=33(www-data)

В /etc/pure-ftpd/conf/MinUID изменим значение 1000 на uid пользователя www-data, то есть 33. Если этого не сделать вы получите ошибку, при попытке подключиться к FTP серверу: 530 Sorry, but I can't trust you.

Шаг 4: Создание виртуальных пользователей

Все операции над пользователями FTP сервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа:

  1. Создание файла со списком пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов
  2. Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию /etc/pure-ftpd/pureftpd.pdb);

Подключимся, например при помощи ftp- клиента FileZilla и создадим тестовые файл и директорию, чтобы проверить какие будут выставлены права

ls -l /var/www
drwxr-xr-x  2 www-data www-data 4096 May 11 19:37 testdir/
-rw-r--r--  1 www-data www-data    0 May 11 19:37 testfile

Все! Настройка FTP сервера завершена.

Шаг 5: Включение шифрования SSL/TLS (опционально)

Современные реалии требуют всё шифровать. Давайте и мы сделаем протокол FTP более защищенным. И обязательно запищим пароль от FTP сервера на листочке и приклеим к монитору (шутка :-))!

Преамбула, такова, что протокол FTP передает все ПАРОЛИ и данные в открытом виде (в текстовом виде). То есть любой сниффер позволяет прочитать ваш логин и пароль. А мы возьмем и зашифруем и логин и пароль!

apt install openssl

Итак, для начала нам нужно создать SSL сертификат и подключить его к нашему серверу Pure-FTPd. По соглашению, будем хранить сертификаты в /etc/ssl/private. Вы можете выбрать произвольную директорию.

openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem -days 3650

Запущенная команда задаст несколько вопросов, ответьте на них в произвольной форме.

Country Name (2 letter code) [AU]:UA
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:dieg.info
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:dieg.info
Email Address []:darkfire@dieg.info

Зададим права на файл сертификата

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

Выберем один из трех режимов работы для FTP сервера. Если вы хотите разрешить сессии как FTP, так и TLS, выполните команду:

echo 1 > /etc/pure-ftpd/conf/TLS

Если же вы хотите разрешить только сессии TLS (без FTP), выполните:

echo 2 > /etc/pure-ftpd/conf/TLS

Чтобы запретить TLS совсем (разрешить только FTP), либо удалите файл /etc/pure-ftpd/conf/TLS, либо выполните:

echo 0 > /etc/pure-ftpd/conf/TLS

Затем перезапустите службу Pure FTPd, чтобы изменения вступили в силу:

systemctl restart pure-ftpd

Теперь можно соединиться с сервером. Если соединение производится первый раз, вам будет предложено принять новый SSL-сертификат сервера.

Использование утилит Pure-FTPD

pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c "John Smith"
pure-pw mkdb
pure-pw show YourLogin
pure-pw passwd YourLogin
+------+---------+-------+------+-------------------------------------------+
| PID  |  Login  |For/Spd| What |                 File/IP                   |
+------+---------+-------+------+-------------------------------------------+
| 2356 | testftp | 00:00 | IDLE |                                           |
|  ''  |    ''   |   ''  |  ''  | ->             77.122.92.88.kha.volia.net |
+------+---------+-------+------+-------------------------------------------+

Дополнительные настройки Pure-FTPd

Изменение этого параметра затронет лог-файл /var/log/syslog, а файл /var/log/auth.log не будет изменен, что важно при настройки Fail2ban. Fail2ban по умолчанию просматривает файл auth.log.

Читайте также