Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Pure-FTPd - [Настройка pure-ftpd-common]

$
0
0

Pure-FTPd

Homepage: Pure-FTPd

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

  • Встроенная поддержка UTF-8.
  • Возможна работа по FXP протоколу
  • Поставляется с программой мониторинга pure-ftpwho, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
  • Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTMLили XML.
  • Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).
  • Создание виртуальных пользователей.
  • Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).
  • После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
  • Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).

Для изменения настроек сервера нужно создать файл с названием параметра, например чтобы задать порты для пассивного режима: Правила iptables для FTP

Примеры

  • Добавить пользователя и установить для него пароль:
    # pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c Ivanov -y 4
  • Доступ к хостингу с полным доступом
    # 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
  • Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации
    # pure-pw mkdb
  • Просмотр данных пользователя
    pure-pw show YourLogin
  • Изменить пароль
    pure-pw passwd YourLogin

Использование Pure-FTPd

  • Установка
# aptitude install pure-ftpd

Конфигурационные файлы:

/etc/default/pure-ftpd-common
/etc/pure-ftpd

У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf - все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра и его значением внутри.
Включим авторизацию PureDB (создадим символическую ссылку), по умолчанию была включена авторизация Unix и PAM
# 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

Механизм Virtual Users, который есть в Pure FTPD, представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным аккаунтом. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и пр. Управление виртуальными пользователями осуществляется с помощью программы pure-pw, параметры пользователей хранятся в /usr/local/etc/pureftpd.pdb. У нас имеется системный пользователь portal , создадим для него одноименного виртуального пользователя.

# pure-pw useradd portal -u portal -g portal -d /home/portal/
  • Настройка. Все операции над пользователями FTPсервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа:
  1. Создание файла со списком аккаунтов пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов
  2. Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pureftpd.pdb');
  • Создание файла аккаунтов. Каждая запись файла виртуальных аккаунтов имеет следующий формат:
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

Рассмотрим значения полей записи:

'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' -- временной промежуток, в течение которого пользователь может получать доступ к аккаунту.

Допускается пустое значение всех полей кроме 'account', 'pass', 'uid', 'gid' и 'dir'.
  • Добавление нового пользователя

Добавление аккаунта осуществляется с помощью утилиты 'pure-pw'. Синтаксис команды следующий:

pure-pw useradd login [-f file]
			-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]

Рассмотрим значения используемых опций:

'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' будет рассмотрена чуть позже.
  • Изменение параметров аккаунта пользователя.

Изменение параметров аккаунта также осуществляется с помощью pure-pw:

'pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]'

'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.

echo'yes'>/etc/pure-ftpd/conf/DontResolve

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

Bind изменить IP,port

Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:

echo'10.26.95.227,21000'>/etc/pure-ftpd/conf/Bind

Ссылки

Настройка PureFtpd + MySql

Создание БД

Добавление пользователя

  • 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

Настройка

Включить логирование

$ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility
$ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog

PureFTP Complete Upload Script

После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>.

#!/bin/sh
touch "$1.complete"

иди

#!/bin/bash
fullpath=$1
filename=$(basename "$1")
dirname=${fullpath%/*}
mv "$fullpath" "$dirname/ended.$filename"

Конфигурция

Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common

Включает испльзование скрипта

$ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript

Настройка pure-ftpd-common

STANDALONE_OR_INETD=standalone VIRTUALCHROOT=false UPLOADUID= UPLOADGID= UPLOADSCRIPT=<path/to/complete_upload_script.sh>

Проверка

$ ps aux | grep pure-uploadscript
ftpuser 18671 0.0 0.0 11912 672 ? Ss 19:40 0:00 /usr/sbin/pure-uploadscript -r <upload script path here> -B -u 1021 -g 1022

Viewing all articles
Browse latest Browse all 1318