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

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


pure-ftpd

Различия

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

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

pure-ftpd [2018/08/22 04:51] (текущий)
Строка 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
pure-ftpd.txt · Последние изменения: 2018/08/22 04:51 (внешнее изменение)