Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
system:pureftpd [2016/03/31 00:00] – [Настройка] mirocowsystem:pureftpd [2016/10/02 21:53] (текущий) – [Подключение MySQL] mirocow
Строка 1: Строка 1:
-{{tag>network}}+{{tag>networks networking network pureftpd}}
  
 ====== Pure-FTPd ====== ====== Pure-FTPd ======
Строка 6: Строка 6:
  
 **Функциональные возможности:** **Функциональные возможности:**
-  * Встроенная поддержка [[UTF-8]].+ 
 +  * Встроенная поддержка UTF-8.
   * Возможна работа по FXP протоколу   * Возможна работа по FXP протоколу
   * Поставляется с программой мониторинга **pure-ftpwho**, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.   * Поставляется с программой мониторинга **pure-ftpwho**, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
-  * Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTML или [[XML]].+  * Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTML или XML.
   * Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).   * Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).
   * Создание виртуальных пользователей.   * Создание виртуальных пользователей.
Строка 15: Строка 16:
   * После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).   * После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
   * Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).   * Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).
-<note tip>Для изменения настроек сервера нужно создать файл с названием параметра, например чтобы задать порты для пассивного режима: [[Правила iptables для FTP]]</note> 
-===== Примеры ===== 
-  * Добавить пользователя и установить для него пароль: <file> 
-# pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c Ivanov -y 4 
-</file> 
-  * Доступ к хостингу с полным доступом<file> 
-# pure-pw useradd YourUser -u ftpusers -g www-data -d /var/www/YourDomen.ua -c "Ivanov Ivan" -y 4 
-# chown -R ftpusers:www-data 
-или 
-# pure-pw useradd YourUser -u www-data -g www-data -d /var/www/YourDomen.ua -c "Ivanov Ivan" -y 4 
-</file> 
-  * Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации<file> 
-# pure-pw mkdb 
-</file> 
-  * Просмотр данных пользователя<file> 
-pure-pw show YourLogin 
-</file> 
-  * Изменить пароль<file> 
-pure-pw passwd YourLogin 
-</file> 
  
-====== Использование Pure-FTPd ====== +<note tip>Для изменения настроек сервера нужно создать файл с названием параметранапример чтобы задать порты для пассивного режима: Правила iptables для FTP</note>
-  * **Установка** +
-<file> +
-# aptitude install pure-ftpd +
-</file> +
-Конфигурационные файлы: +
-<file> +
-/etc/default/pure-ftpd-common +
-/etc/pure-ftpd +
-</file> +
-<note tip>У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf - все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра  и его значением внутри.</note> +
-Включим авторизацию PureDB (создадим символическую ссылку), по умолчанию была включена авторизация Unix и PAM +
-<file> +
-# ls -l auth/ +
-lrwxrwxrwx 1 root root 26 2011-03-23 12:54 65unix -../conf/UnixAuthentication +
-lrwxrwxrwx 1 root root 25 2011-03-23 12:54 70pam -> ../conf/PAMAuthentication+
  
-# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/67PureDB +==== Создание пользователей ====
-</file> +
-Механизм Virtual Users, который есть в Pure FTPD, представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным аккаунтом. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и пр. Управление виртуальными пользователями осуществляется с помощью программы pure-pw, параметры пользователей хранятся в /usr/local/etc/pureftpd.pdb. +
-У нас имеется системный пользователь portal , создадим для него одноименного виртуального пользователя. +
-<file> +
-# pure-pw useradd portal -u portal -g portal -d /home/portal/ +
-</file>+
  
-  * **Настройка**. Все операции над пользователями FTP сервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа: +<code> 
-  Создание файла со списком аккаунтов пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов +$ groupadd ftp 
-  Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pureftpd.pdb');+$ useradd -/bin/false -/bin/null -c "pureftpd user" -g ftp ftp 
 +</code>
  
-  * **Создание файла аккаунтов**. Каждая запись файла виртуальных аккаунтов имеет следующий формат: +==== Установка SSL сертификата для TLS ====
-<file> +
-account:pass:uid:gid:name:dir:ul bw: +
-dl bw:ul ratio:dl ratio:max con: +
-files quota:size quota:authorized local IPs:refused +
-local IPs:authorized client IPs:refused client IPs:time +
-</file> +
-Рассмотрим значения полей записи: +
-<file> +
-'account' -- имя аккаунта; +
-'pass'    -- пароль пользователя в зашифрованном виде; +
-'uid'     -- uid пользователя, с правами которого будет работать виртуальный пользователь; +
-'gid'   -- gid пользователя, с правами которого будет работать виртуальный пользователь; +
-'name'    -- полное имя пользователя аккаунта; +
-'dir'   -- директория пользователя аккаунта; +
-'ul bw'   -- скорость upload для данного аккаунта; +
-'dl bw'   -- скорость download для данного аккаунта; +
-'ul ratio' -- соотношение upload к download; +
-'dl ratio' -- соотношение download к upload; +
-'max con'  -- максимальное число одновременных подключений для данного аккаунта; +
-'files quota' -- квота на количество файлов в директории пользователя; +
-'size quota'  -- квота на суммарный размер файлов в директории пользователя; +
-'auth local IPs'  -- указывает ip адрес интерфейса сервера, на который пользователь может подключаться +
-(при наличии нескольких сетевых интерфейсов на сервере); +
-'ref local IPs'   -- указывает ip адрес интерфейса сервера, на который пользователь подключаться не может; +
-'auth client IPs' -- ip адреса, с которых пользователю разрешено подключаться; +
-'ref client IPs'  -- ip адреса, с которых пользователя запрещено подключаться; +
-'time' -- временной промежуток, в течение которого пользователь может получать доступ к аккаунту. +
-</file> +
-<note important>Допускается пустое значение всех полей кроме 'account', 'pass', 'uid', 'gid' и 'dir'.</note> +
-  * **Добавление нового пользователя**+
  
-Добавление аккаунта осуществляется с помощью утилиты 'pure-pw'.  +<code
-Синтаксис команды следующий: +$ mkdir -/etc/ssl/private
- +$ openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 
-<file+$ chmod 600 /etc/ssl/private/*.pem 
-pure-pw useradd login [-f file] +</code>
- -u uid [-g gid] +
- -D/-d dir +
- [-c name] +
- [-t num] [-T num] +
- [-n num] [-N num] +
- [-q num] [-Q num] +
- [-r ip,..] +
- [-R ip,..] +
- [-i ip,..] +
- [-I ip,..] +
- [-y num] +
- [-z hhmm-hhmm] [-m] +
-</file> +
- +
-Рассмотрим значения используемых опций: +
- +
-<file> +
-'login' -- имя добавляемого аккаунта; +
-'-f file' -- задает имя файла списка аккаунтов, отличное от значения  +
-     по умолчанию, т.е. от '/etc/pureftpd.passwd'+
-'-u uid' -- задает uid пользователя; +
-'-g gid' -- задает gid пользователя; +
-'-D/-d dir' -- задает директорию для пользователя аккаунта, +
-    при использовании '-d' автоматически назначается chroot в этой директории,  +
-    при использовании '-D' chroot не будет включен; +
-    При запуске сервера с опцией '-j' директории пользователей будут создаваться  +
-    автоматически при первом их подключении к системе, +
-    в противном случае, вы сами должны будете создать указанную директорию; +
-'-c name' -- задает полное имя пользователя аккаунта; +
-'-t num' -- задает скорость download (в Kb/s); +
-'-T num' -- задает скорость upload (в Kb/s); +
-'-n num' -- задает ограничение на количество файлов в директории пользователя; +
-'-N num' -- задает ограничение на размер файлов в директории пользователя (в Mb); +
-'-q num' -- задает соотношение upload к download; +
-'-Q num' -- задает соотношение download к upload; +
-'-r ip' -- задает ip адреса, с которых пользователю разрешено подключаться, также можно задавать +
- целые подсети,  используя CIDR маску; +
- +
-'-R ip' -- задает ip адреса, с которых пользователю запрещено подключаться; +
-'-i ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес  +
-     того интерфейса, на который данный пользователь может подключаться; +
-'-I ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес  +
-     того интерфейса, на который пользователь подключаться не может; +
-'-y num' -- задает количество одновременных подключений для аккаунта; +
-'-z hhmm-hhmm'  -- задает временной промежуток, в течение которого пользователь может  +
- получать доступ к аккаунту, например '-z 1830-2240' задает временной  +
- промежуток для доступа к аккаунту с 18:30 до 22:40,  причем если пользователь +
-        подключен к серверу во время истечения указанного значения, соединение не будет  +
- прервано. +
-'-m'  -- использовании этой опции совместно с остальными позволяет автоматически  +
- запустить 'pure-pw mkdb' и зафиксировать внесенные изменения в файле  +
- '/etc/pureftpd.pdb'. Работа с 'pure-pw mkdb' будет рассмотрена чуть позже. +
-</file> +
-  * **Изменение параметров аккаунта пользователя**. +
-Изменение параметров аккаунта также осуществляется с помощью pure-pw: +
-<file> +
-'pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]' +
-</file> +
-'attr value' в данном случае -- это те же параметры, которые используются при добавлении нового аккаунта.  +
- +
-Не забывайте использовать параметр '-f passwd file' в том случае,  если список аккаунтов изначально создавался в файле, отличном от '/etc/pureftpd.passwd'+
- +
-====== 530 Sorry, but I can't trust you ====== +
-Для устранения этой ошибки нужно в /etc/pure-ftpd/conf/MinUID изменить значение 1000 на 33 этим мы разрешим системных пользователей начиная с 33, в моем случае это пользователь www-data+
-====== 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> +
-====== Ссылки ====== +
-  * [[wpru>Pure-FTPd]] +
-  * [[Правила iptables для FTP]] +
-  * [[http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users|README.Virtual-Users]] +
-  * [[http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=31|Хранение аккаунтов pure-ftpd в файлах формата puredb]] +
- +
-====== Настройка PureFtpd + MySql ====== +
- +
- +
-  * apt-get install pure-ftpd-common pure-ftpd-mysql +
-  * http://download.pureftpd.org/pure-ftpd/doc/README +
-===== Создание БД ===== +
- +
-  * [[:pureftpd:db|db.sql]] - Дамп SQL +
- +
-===== Добавление пользователя ===== +
- +
-  * adduser site.ru +
- +
-  * INSERT INTO users VALUES ('site.ru',MD5('tmppasswd'),1000, 1100, '/var/www/nginx-sites/site.ru', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0); +
- +
-  * mkdir /var/www/nginx-sites/site.ru +
-  * chown -R site.ru:site.ru /var/www/nginx-sites/site.ru/+
- +
-  * Где пользоватеь: +
-    * site.ru - 1000 +
-  * Где группа: +
-    * site.ru - 1100 +
-====== PureFTPd with MySQL ====== +
- +
-  * [[:/etc/pure-ftpd/db/mysql.conf|/etc/pure-ftpd/db/mysql.conf]]+
  
-====== Настройка ======+==== Настройка ====
  
 Устанавливаем пакет «pure-ftpd-mysql». Настройка происходит с помощью индивидуальных файлов в /etc/pure-ftpd/conf. Название каждого файла отражает параметр, настройки которого он представляет. В содержимом файла представлены необходимые значения. Устанавливаем пакет «pure-ftpd-mysql». Настройка происходит с помощью индивидуальных файлов в /etc/pure-ftpd/conf. Название каждого файла отражает параметр, настройки которого он представляет. В содержимом файла представлены необходимые значения.
Строка 223: Строка 48:
 echo no > /etc/pure-ftpd/conf/UnixAuthentication echo no > /etc/pure-ftpd/conf/UnixAuthentication
 echo no > /etc/pure-ftpd/conf/PAMAuthentication echo no > /etc/pure-ftpd/conf/PAMAuthentication
 +echo clf:/var/log/pure-ftpd/transfer.log > /etc/pure-ftpd/conf/AltLog
 +echo 1000 > /etc/pure-ftpd/conf/MinUID
 +echo /etc/pure-ftpd/db/mysql.conf > /etc/pure-ftpd/conf/MySQLConfigFile
 +echo yes > /etc/pure-ftpd/conf/NoAnonymous
 +echo /etc/pure-ftpd/pureftpd.pdb > /etc/pure-ftpd/conf/PureDB
 +echo no > /etc/pure-ftpd/conf/DontResolve
 </code> </code>
  
-===== Включить логирование =====+=== Включить логирование ===
  
-  $ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility +<code> 
-  $ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog+$ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility 
 +$ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog 
 +</code> 
 + 
 +==== Подключение MySQL ====
  
-====== PureFTP Complete Upload Script ======+Самым удобным способом хранения и конфигурирования FTP является БД MySql. Для подключения хранилища достаточно настроить MySQLConfigFile. 
 + 
 +  * echo /etc/pure-ftpd/db/mysql.conf > /etc/pure-ftpd/conf/MySQLConfigFile 
 +  * [[pureftpd:db]] 
 +  * [[:/etc/pure-ftpd/db/mysql.conf|]] 
 + 
 + 
 +==== PureFTP Complete Upload Script ====
  
 После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>. После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>.
 +
 +=== Конфигурция ===
 +
 +Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common
 +
 +Включает испльзование скрипта
 +<code>
 +$ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript
 +</code>
 +
 +=== Файл скрипта ===
  
 <code> <code>
Строка 247: Строка 100:
 dirname=${fullpath%/*} dirname=${fullpath%/*}
 mv "$fullpath" "$dirname/ended.$filename" mv "$fullpath" "$dirname/ended.$filename"
 +chmod 664 "$dirname/ended.$filename"
 +chown :www-data "$dirname/ended.$filename"
 </code> </code>
  
-===== Конфигурция ===== +=== Настройка pure-ftpd-common ===
- +
-Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common +
- +
-Включает испльзование скрипта +
-<code> +
-$ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript +
-</code> +
- +
-===== Настройка pure-ftpd-common =====+
  
 +nano /etc/default/pure-ftpd-common
 <code> <code>
 STANDALONE_OR_INETD=standalone STANDALONE_OR_INETD=standalone
Строка 267: Строка 114:
 UPLOADSCRIPT=/etc/pure-ftpd/uploadscript.sh UPLOADSCRIPT=/etc/pure-ftpd/uploadscript.sh
 </code> </code>
-===== Проверка =====+ 
 +<note important> 
 +UPLOADUID 1002\\  
 +UPLOADGID = 1002\\  
 +Относятся только к UPLOADSCRIPT.\\ 
 +Пример: /usr/sbin/pure-uploadscript -r /etc/pure-ftpd/uploadscript.sh -B -u 1002 -g 1002\\ 
 +</note> 
 + 
 +==== Проверка ====
  
 <code> <code>