Pure-FTPd: Установка и настройка под Ubuntu

Цитата с оф сайта проекта: Pure-FTPd - это свободный (BSD), безопасный, качественный,  отвечающий стандартам FTP сервер, который не содержит бесполезных свистелок-перделок - его основная задача - простота использования. Pure-FTPd предоставляет простые решения для наиболее часто встречающихся задач, а также много уникальных функций, которые могут быть полезны как обычным пользователям, так и хостинг провайдерам.

Установка pure-ftpd

Сначала, используя apt устанавливаем pure-ftpd пакет - он доступен в репозиториях по умолчанию:

sudo apt-get update
sudo apt-get install pure-ftpd

По завершении установки демон  будет запущен и слушать на 21 порту:

Подход к конфигурации демона pure-ftpd отличается от других программ тем, что параметры демона задаются полностью параметрами командной строки, а для формирования этих параметров, написана программа-обертка. Сама конфигурация pure-ftpd представляет из себя набор однострочных конфигурационных файлов - отдельный файл для каждого параметра.

Вот как выглядит конфигурация pure-ftpd:

# cd /etc/pure-ftpd/conf/
# ls -al

Результат выполнения команды будет следующего вида:

Каждый конфигурационный  файл описывает отдельный параметр командной строки демона pure-ftpd. Например, файл AltLog содержит формат и путь к журналу передачи (tranfer log file):

cat AltLog

Содержимое выглядит приблизительно так:

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

Настройка основных параметров сервера (сервер слушает на порту 21 на всех доступных интерфейсах и будет использвать IP 12.34.56.78 и порты 4500-4600 для пассивного режима - следует настроить перенаправление на NAT маршрутизаторе, если сервер находится за ним):

sudo -i
echo ,21 > Bind
echo 12.34.56.78 > ForcePassiveIP
echo 4500 4600 > PassivePortRange

Настройка параметров безопасности:

echo yes > ChrootEveryone
echo yes > ProhibitDotFilesRead
echo yes > ProhibitDotFilesWrite
echo yes > NoChmod
echo yes > BrokenClientsCompatibility

Настройка ограничений:

echo 4 > MaxClientsPerIP
echo 20 > MaxClientsNumber

Теперь нужно решить какие будут использоваться методы авторизации. Имеются следующие варианты:

  • Unix Authentication (любой пользователь, имеющий системную учетную запись сможет зайти на FTP сервер)
  • PureDB авторизация использует отдельную базу виртуальных пользователей pure-ftpd.

Предпочтительнй использовать второй вариант, который мы и настроим. Итак, отключим Unix и PAM вторизацию, установим путь к PureDB базе пользователей и добавим PureDB как метод вторизации путем создаия символической ссылки в директории /etc/pure-ftpd/auth:

echo no > PAMAuthentication
echo no > UnixAuthentication
echo /etc/pure-ftpd/pureftpd.pdb > PureDB
ln -s /etc/pure-ftpd/conf/PureDB ../auth/50pure

Добавим системную группу и пользователя, с правами которых будут храниться файлы, выгружаемые на сервер виртуальными пользователями. Из соображений безопасности, этот пользователь не должен иметь домашнней директории  (-d /bin/null) и не иметь доступа к командной оболочке (-s /bin/false) :

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

Добавление поддержки TLS/SSL

Сгенерируем сертификат безопасности:

sudo apt-get install openssl
echo 1 > TLS
sudo openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Изменяем права доступа на сертификат, чтоб он не был доступен никому, кроме рутового пользователя:

sudo chmod 600 /etc/ssl/private/pure-ftpd.pem

В последний раз перезапускаем сервер для применения нашей свежей конфигурации:

sudo service pure-ftpd restart

Вот и все. Наш сервер настроен, осталось только добавить пользователей.

Добавление пользователей в базу pureftpd.

Создадим нового пользователя, назовем его "pureusertest":

sudo pure-pw useradd pureusertest -u ftpuser -g ftpgroup -d /home/pureftp/pureusertest -N 10

Программа попросит ввести пароль и его подтверждение.

Не забудьте выполнить команду pure-pw mkdb: она нужна для того, чтоб применить изменения, сделанные в базе виртуальных пользователей, по умолчанию находящуюся по пути /etc/pure-ftpd/pureftpd.passwd:

sudo pure-pw mkdb

Формат базы пользователей -  двочный, для ускорения поиска в базе имеется индекс.

Получение информации о пользователях pure-ftpd

Просмотр списка пользователей:

pure-pw list

Получение информации, касающейся определенного пользователя:

pure-pw show pureusertest

Если вы обратили внимание, что строка "Directory: /home/pubftp/pureusertest/./" заканчивается на ./ - не стоит переживать по этому поводу. Это всего-лишь chroot инструкция для данного пользователя, что обозначает, что он не может попасть в директории, находящиеся "выше".

Изменение пароля пользователя:

sudo pure-pw passwd pureusertest

После изменения пароля, не забудьте выполнить команду pure-pw mkdb:

sudo pure-pw mkdb

Вот и все. Pure-FTPd настроен. Если есть вопросы, замечания - пишите в комментах.

Тэги: 

There are 3 Comments

Классная статья, именно то, что я искал. Автору респект!

man pure-ftpd-wrapper

sudo echo yes > AllowUserFXP

Твори, или уйди в сторону и не мешай творить другим.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Добавить комментарий

You must have Javascript enabled to use this form.