Установка PureFTPd с виртуальными пользователями на CentOS
PureFTPd является довольно удобным FTP сервером и удобными настройками, в частности, управлением пользователями. Устанавливать и настраивать будем на Centos 6.4, что с легкостью можно отнести к Red Hat подобным дистрибутивам (Fedora, Red Hat и др).
Настроить сервер можно довольно гибко. В данной статье будет описан способ создания виртуальных пользователей. Так же можно использовать уже имеющихся пользователей в системе, но в моем случае это не совсем удобно. Создавая виртуальных пользователей, мы их можем привязать к системным. Для удобства, будет создана группа ftpgroup и пользователь этой группы — ftpuser.
По порядку
- В первую очередь нужно подключить репозиторий, откуда будем устанавливать дистрибутив. Последнюю версию и нужную архитектуру смотрим по адресу http://repoforge.org/use/1rpm -Uvh http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
- Устанавливаем сам сервер1yum install pure-ftpd
- Для включения виртуальных пользователей необходимо поправить конфигурационный файл /etc/pure-ftpd/pure-ftpd.conf. Надо раскомментировать данную строку, которая указывает на хранилище паролей.1PureDB /etc/pure-ftpd/pureftpd.pdb
- Запустим FTP сервер1/etc/init.d/pure-ftpd start
или1service pure-ftpd start - Теперь нужно создать системную группу и пользователей, к которым будут привязаны виртуальные ftp пользователи. Дадим им идентификаторы 2000, чтобы проще было запомнить.12groupadd -g 2000 ftpgroupuseradd -u 2000 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
- Для управления пользователями есть замечательная утилита pure-pw, с помощью которой мы добавим первого пользователя следующей командой1pure-pw useradd test -u 2000 -g 2000 -d /home/ftpusers/test
После выполнения данной команды будет запрошен пароль. Данным действием мы добавили пользователя test, привязали его к системной группе ftpgroup (gid 2000) и системному пользователю ftpuser (uid 2000). После внесения новых пользователей необходимо выполнить команду: Так же указана директория, к которой будет предоставлен доступ данному пользователю.1pure-pw mkdb
Которая обновит базу данных пользователей. - Последним шагом является включение PureFTPd в автозагрузку сервера1chkconfig pureftpd on
Это самая простая установка сервера, но в итоге получается необходимый функционал. По управлению пользователей будет отдельная статья.
Расширенные настройки pure-ftpd:
- Если вы не используете ipv6, то лучше раскомментировать данную строку:1IPV4Only yes
- Если хотите, чтобы передаваемые данные шифровались, то необходимо раскомментировать блок12TLS 2CertFile /etc/ssl/private/pure-ftpd.pem
При этом, значение TLS можно установить в 1 — разрешены оба типа подключения и 2 — доступно только подключение с шифрованием. Не забываем сгенерировать ключ следующей командой:12mkdir /etc/ssl/private/ -psudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem - В зависимости от настроек сервера — можно так же указать права, которые будут присвоены диекториям/файлам. У меня на одном из серверов каждый виртуальны хост запущен от своего пользователя, но есть один пользователь в группе, который тоже должен иметь доступ к файлам, поэтому я ставлю следующую маску:1Umask 137:027
Что означает, что файлам будут даны права 640, а директориям 750 - Для подключения к ftp в пассивном режиме необходимо указать диапазон портов, используемых pure-ftpd, например:1PassivePortRange 48000 50000
Далее, нам необходимо на firewall открыть доступ к данным портам. Пример конфигурации для iptables:1234bash: iptables --append INPUT -m state --state NEW -m tcp -p tcp --dport 48000:50000 -j ACCEPT#result string-A INPUT -m state --state NEW -m tcp -p tcp --dport 48000:50000 -j ACCEPT - По умолчанию в pure-ftp могут заходить анонимные пользователи, давайте запретим это, добавив:1NoAnonymous yes