Инструменты пользователя

Инструменты сайта


pure-ftpd

Различия

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

Ссылка на это сравнение

pure-ftpd [2018/08/22 11:51]
pure-ftpd [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Использование Pure-FTPd ======
 +~~Title: Pure-FTPd ~~
 +{{htmlmetatags>
 +metatag-description=(Настройка сервера Pure-FTPd. Дополнительные настройки Pure-FTPd Umask, MaxLoad, DontResolve и т.д.)
 +}}
  
 +{{ ::pureftpd.png?nolink&400 |}}
 +
 +  * Homepage: [[http://www.pureftpd.org|Pure-FTPd]]
 +  * [[Правила iptables для FTP]]
 +  * [[Fail2ban]] - защита от брутфорса портов FTP
 +
 +Pure-FTPd — свободный FTP-сервер для операционных систем семейства UNIX, распространяется по лицензии BSD. Основное внимание уделяется безопасности и простоте настройки. 
 +
 +**Функциональные возможности:**
 +  * Встроенная поддержка [[UTF-8]].
 +  * Поставляется с программой мониторинга **pure-ftpwho**, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
 +  * Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTML или [[XML]].
 +  * Сообщения сервера на данный момент переведены на 21 язык.
 +  * Создание виртуальных пользователей.
 +  * Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).
 +  * После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
 +  * Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).
 +  * Создание псевдонимов (алиасы) для директорий (т.е. работать как shortcuts).
 +
 +===== Инсталляция Pure-FTPd в Debian, Ubuntu =====
 +Рассмотрим кратко установку и настройку Pure-FTPd сервера.
 +  * Инсталляция. После её окончания Pure-FTPd запущен и готов к работе.<file bash>
 +$ sudo aptitude install pure-ftpd
 +...
 +Starting ftp server: Running: /usr/sbin/pure-ftpd -l pam -8 UTF-8 -E -u 1000
 + -O clf:/var/log/pure-ftpd/transfer.log -B
 +
 +$ ftp localhost
 +Connected to localhost.
 +220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
 +220-You are user number 1 of 50 allowed.
 +220-Local time is now 11:24. Server port: 21.
 +220-This is a private system - No anonymous login
 +220-IPv6 connections are also welcome on this server.
 +220 You will be disconnected after 15 minutes of inactivity.
 +Name (localhost:admin):
 +</file>
 +
 +<note tip>У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf - все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра. То есть для изменения настроек сервера нужно создать файл с названием параметра и значением внутри.</note>
 +
 +
 +  * Конфигурационные файлы и директории:<file bash>
 +/etc/default/pure-ftpd-common
 +/etc/pure-ftpd
 +</file>
 +  * Включим chroot-jail. Можно или запустить PureFTPd с ключом -A или задать параметр.<file bash>
 +echo yes > /etc/pure-ftpd/conf/ChrootEveryone
 +</file>
 +  * Поскольку мы будем настраивать авторизацию через PureDB, надо запретить PAM:<file bash>
 +echo no > /etc/pure-ftpd/conf/PAMAuthentication
 +</file>
 +
 +===== Virtual Users PureDB =====
 +  * [[http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=31|Хранение аккаунтов pure-ftpd в файлах формата puredb]]
 +
 +**Механизм Virtual Users в Pure-FTPD** ([[http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users|README.Virtual-Users]]), представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным системным пользователем. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и прочее. 
 +
 +  * Включим авторизацию из база данных пользователей PureDB (создадим символическую ссылку), по умолчанию была настроена авторизация Unix(no - выключена) и PAM (yes - включена). При аутентификации важен порядок <wrap em>(:!: security)</wrap> загрузки, потому добавим цифру 60 в название создаваемой символической ссылки, чтобы проверка пользователя начиналась именно с проверки из PureDB<file bash>
 +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
 +</file>
 +
 +  * Создадим системного пользователя ftpuser без [[shell]]  и добавим его в группу www-data (в которую входит веб сервер Apache, чтобы права были вида ftpuser:www-data)<file bash>
 +useradd -g www-data -d /home/ftpuser -m -s /bin/false ftpuser
 +id ftpuser
 +uid=1001(ftpuser) gid=33(www-data) groups=33(www-data)
 +id www-data
 +uid=33(www-data) gid=33(www-data) groups=33(www-data)
 +</file>
 +
 +  * **Создание виртуальных пользователей**. Все операции над пользователями FTP сервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа:
 +  - Создание файла со списком пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов
 +  - Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pureftpd.pdb');
 +  * Создадим нашего первого пользователя tester<file bash>
 +pure-pw useradd tester -u ftpuser -g www-data -d /var/www/joo -c "John Smith" -y 4
 +pure-pw mkdb # что бы изменения были сразу же внесены в файл 'pureftpd.pdb' используйте ключ -m
 +chown -R ftpuser:www-data /var/www/joo
 +</file>Подключимся и создадим тестовые файл и директорию, чтобы проверить какие будут выставлены права<file bash>
 +ls -l /var/www/joo/
 +drwxr-xr-x 2 ftpuser www-data 4096 Sep 17 14:04 test1
 +-rw-r--r-- 1 ftpuser www-data    0 Sep 17 14:04 test2
 +</file>
 +  * **Все!** Настройка завершена.
 +
 +===== Утилиты Pure-FTPD =====
 +  * Добавить пользователя и установить для него пароль: <file>
 +pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c "John Smith"
 +</file>
 +  * Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации<file bash>
 +pure-pw mkdb
 +</file>
 +  * Просмотр данных пользователя<file bash>
 +pure-pw show YourLogin
 +</file>
 +  * Изменить пароль<file bash>
 +pure-pw passwd YourLogin
 +</file>
 +
 +====== Дополнительные настройки 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).<file bash>
 +echo '177 077' > /etc/pure-ftpd/conf/Umask
 +</file>
 +
 +  * **MaxLoad**. **Максимальная параллельная загрузка:**<file bash>
 +echo 4 > /etc/pure-ftpd/conf/MaxLoad
 +</file>
 +  * **MinUID**. **530 Sorry, but I can't trust you**. Для устранения этой ошибки нужно в /etc/pure-ftpd/conf/MinUID изменить значение 1000 на 33 этим мы разрешим системных пользователей начиная с 33, в моем случае это пользователь www-data. <wrap em>Этого не следует делать.</wrap>
 +
 +  * **DontResolve**. Записывать в лог IP, а не имя клиента. Это приведет к ускорению работы Pure-FTPd так как не будет использоваться [[DNS]].<file bash>
 +echo 'yes' > /etc/pure-ftpd/conf/DontResolve
 +</file>
 +<note important>Изменение этого параметра в [[Ubuntu]] затронет лог-файл /var/log/syslog, а файл /var/log/auth.log не будет изменен, что важно при настройки [[Fail2ban]]. Fail2ban по умолчанию просматривает файл auth.log.</note>
 +
 +  * **Bind изменить IP,port** Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:<file bash>
 +echo '10.26.95.227,21000' > /etc/pure-ftpd/conf/Bind
 +</file>
 +  * Приоритеты аутентификации<file bash>
 +# Пожалуйста, отметьте, что LDAPConfigFile, MySQLConfigFile,
 +# PAMAuthentication и UnixAuthentication могут использоваться только
 +# один раз, но они могут использоваться вместе. Например, если вы
 +# используете MySQLConfigFile, затем UnixAuthentication, то идёт запрос
 +# к MySQL. Если в БД такой пользователь не найден, то пробуется 
 +# системный пользователь в /etc/passwd и /etc/shadow. Если SQL
 +# аутентификация неудачна по причине неправильного пароля, то происходит
 +# остановка дальнейшего поиска пользователя. Методы аутентификации
 +# будут использоваться в порядке в котором они заданы
 +</file>
 +  * **Запретить анонимный доступ** - 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