Настройка Pure-FTPd
Домашняя страница Pure-FTPd.
Pure-FTPd — свободный FTP-сервер для операционных систем семейства UNIX, распространяется по лицензии BSD. Основное внимание уделяется безопасности и простоте настройки.
Функциональные возможности:
- Встроенная поддержка UTF-8.
- Поставляется с программой мониторинга pure-ftpwho, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
- Сообщения сервера на данный момент переведены на 21 язык.
- Создание виртуальных пользователей.
- Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).
- После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
- Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).
- Создание псевдонимов (алиасы) для директорий (т.е. работать как shortcuts).
Шаг 1: Инсталляция Pure-FTPd в Debian, Ubuntu, CentOS
yum install pure-ftpd
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):
- Конфигурационные файлы и директории:
/etc/default/pure-ftpd-common /etc/pure-ftpd
- Включим chroot-jail. Можно или запустить PureFTPd с ключом -A или задать параметр.
echo yes > /etc/pure-ftpd/conf/ChrootEveryone
- Поскольку мы будем настраивать авторизацию через PureDB, надо запретить PAM:
echo no > /etc/pure-ftpd/conf/PAMAuthentication
Шаг 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. Работа с виртуальными пользователями происходит в два этапа:
- Создание файла со списком пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов
- Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию /etc/pure-ftpd/pureftpd.pdb);
- Создадим нашего первого пользователя tester
pure-pw useradd tester -u www-data -g www-data -d /var/www -c "Name User" -y 4 pure-pw mkdb # что бы изменения были сразу же внесены в файл 'pureftpd.pdb' используйте ключ -m chown -R www-data:www-data /var/www
Подключимся, например при помощи 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"
- Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации
pure-pw mkdb
- Просмотр данных пользователя
pure-pw show YourLogin
- Изменить пароль
pure-pw passwd YourLogin
- Пример мониторинга Pure-FTPd, при помощи встроенной утилиты pure-ftpwho:
+------+---------+-------+------+-------------------------------------------+ | PID | Login |For/Spd| What | File/IP | +------+---------+-------+------+-------------------------------------------+ | 2356 | testftp | 00:00 | IDLE | | | '' | '' | '' | '' | -> 77.122.92.88.kha.volia.net | +------+---------+-------+------+-------------------------------------------+
Дополнительные настройки Pure-FTPd
- Umask. Для параноика umask 177 077. The default are 133 (files are readable -but not writable- by other users) and 022 (same thing for directory, with the execute bit on). If new files should only be readable by the user, use 177:077. If you want uploaded files to be executable, use 022:022 (files will be readable by other people) or 077:077 (files will only be readable by their owner).
echo '177 077' > /etc/pure-ftpd/conf/Umask
- MaxLoad. Максимальная параллельная загрузка:
echo 4 > /etc/pure-ftpd/conf/MaxLoad
- DontResolve. Записывать в лог IP, а не имя клиента. Это приведет к ускорению работы Pure-FTPd так как не будет использоваться DNS.
echo 'yes' > /etc/pure-ftpd/conf/DontResolve
- Bind изменить IP,port Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:
echo '10.26.95.227,21000' > /etc/pure-ftpd/conf/Bind
- Приоритеты аутентификации
# Пожалуйста, отметьте, что LDAPConfigFile, MySQLConfigFile, # PAMAuthentication и UnixAuthentication могут использоваться только # один раз, но они могут использоваться вместе. Например, если вы # используете MySQLConfigFile, затем UnixAuthentication, то идёт запрос # к MySQL. Если в БД такой пользователь не найден, то пробуется # системный пользователь в /etc/passwd и /etc/shadow. Если SQL # аутентификация неудачна по причине неправильного пароля, то происходит # остановка дальнейшего поиска пользователя. Методы аутентификации # будут использоваться в порядке в котором они заданы
- Запретить анонимный доступ - echo yes > /etc/pure-ftpd/conf/NoAnonymous
- Более полный лог - echo yes > /etc/pure-ftpd/conf/VerboseLog
- Показывать системные файлы (вида .имяфайла) - echo yes > /etc/pure-ftpd/conf/DisplayDotFiles
- Время простою до отключения 15 минут - echo 15 > /etc/pure-ftpd/conf/MaxIdleTime
Читайте также
- fail2ban - защита от брутфорса портов FTP
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах