Pure-FTPd (виртуальные + локальные + TLS) на FreeBSD

Продолжаем освоение Pure-ftpd, но теперь уже на системе FreeBSD.  Попробуем связать возможность авторизации виртуальных и локальных пользователей, а также настроим возможность использовать защищенное соединение TLS.Настройку будем проводить на системе:

freebsd# uname -a
FreeBSD freebsd 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan 3 07:15:25 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386

Задача:

Настроить pure-ftpd для авторизации как пользователям системы , так и виртуальным. Также надо предусмотреть возможность использования TLS

Установка и настройка Pure-FTPd

Первым делом обновляем порты

portsnap fetch && portsnap update

Ищем, где в портах находится pure-ftpd

cd /usr/ports
make search name=pure-ftpd

Собираем

cd /usr/ports/ftp/pure-ftpd/
make config

Выбираем следующие опции

[ ] ANONDELETEРазрешить анонимным пользователям удалитять файлы
[ ] ANONRENAMEРазрешить анонимным пользователям переименовать файлы
[ ] ANONRESUMEРазрешить анонимный пользователь возобновлять загрузку файлов
[X] DOCSДокументация
[X] EXAMPLESПримеры
[X] LARGEFILE — Поддержка загрузки файлов больших размером (более 2 ГБ)
[ ] LDAPподдержка пользователей в LDAP-каталогах
[ ] MYSQLподдержка пользователей в базе данных MySQL
[X] PAMПоддержка аутентификации PAM
[X] PERUSERLIMITпозволяет задавать ограничения для каждого пользователя
[ ] PGSQLподдержки пользователей в базе данных PostgreSQL
[X] PRIVSEPВключить разделение привилегий
[X] SENDFILE — поддержка системных вызовов SendFile
[X] THROTTLINGпозволяет установить ограничение скорости для пользователей
[X] TLSподдержка TLS
[ ] UPLOADSSCRIPT — поддержка uploadscript демон
[X] UTF8поддержка кодировки UTF8
[X] VIRTUALCHROOT — позволяет ограничить пользователя только своим каталогом

в реальности это выглядит:

Проверяем все ли правильно в конфиге

make showconfig

Устанавливаем

make install clean

После установки в папке /usr/local/etc появятся файлы конфигурации:

  1. pure-ftpd.conf.sample
  2. pureftpd-ldap.conf.sample
  3. pureftpd-mysql.conf.sample
  4. pureftpd-pgsql.conf.sample

Переходим в каталог с конфигами:

cd /usr/local/etc

Убирая слово sample, копируем нужный конфиг:

cp pure-ftpd.conf.sample pure-ftpd.conf

Редактируем конфиг

vi /usr/local/etc/pure-ftpd.conf

Вот пример моего конфига:

freebsd# cat /usr/local/etc/pure-ftpd.conf
ChrootEveryone              yes
# TrustedGID                100
BrokenClientsCompatibility  no
MaxClientsNumber            50
Daemonize                   yes
MaxClientsPerIP             8
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
# FortunesFile              /usr/share/fortune/zippy
DontResolve                 yes
MaxIdleTime                 15
# LDAPConfigFile                /etc/pureftpd-ldap.conf
# MySQLConfigFile               /etc/pureftpd-mysql.conf
# PGSQLConfigFile               /etc/pureftpd-pgsql.conf
PureDB                        /usr/local/etc/pureftpd.pdb
# ExtAuth                       /var/run/ftpd.sock
# PAMAuthentication             yes
UnixAuthentication            yes
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
# PassivePortRange          30000 50000
# ForcePassiveIP                192.168.0.1
# AnonymousRatio                1 10
# UserRatio                 1 10
AntiWarez                   yes
# Bind                      127.0.0.1,21
# AnonymousBandwidth            8
# UserBandwidth             8
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         yes
#TrustedIP                  10.1.1.1
#LogPID                     yes
# AltLog                     clf:/var/log/pureftpd.log
# AltLog                     stats:/var/log/pureftpd.log
# AltLog                     w3c:/var/log/pureftpd.log
#NoChmod                     yes
#KeepAllFiles                yes
#CreateHomeDir               yes
#Quota                       1000:10
#PIDFile                     /var/run/pure-ftpd.pid
#CallUploadScript yes
MaxDiskUsage               99
#NoRename                  yes
CustomerProof              yes
# PerUserLimits            3:20
# NoTruncate               yes
TLS                      1
# TLSCipherSuite           HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
# IPV4Only                 yes
# IPV6Only                 yes
# FileSystemCharset        big5
# ClientCharset            big5

вот параметры отличающие мой конфиг от дефалтного

NoAnonymous yes — запрещаем авторизацию анонимным пользователям
PureDB /usr/local/etc/pureftpd.pdb — указываем путь до базы с информацией о виртуальных пользователях
AnonymousCanCreateDirs yes — запрещаем анонимным пользователям создавать директории 
TLS 1 — поддерживать как обычные, так и зашифрованные сессии
UnixAuthentication yes — разрешаем авторизацию локальным пользователям, за исключением списка /etc/ftpusers

Настраиваем виртуального пользователя pure-ftpd

pw groupadd ftpgroup
pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc
pure-pw useradd websait -u ftpuser -d /usr/local/www
pure-pw mkdb
chmod 775 /usr/local/www/

Настраиваем SSL/TLS на pure-ftpd

Создаем директорию:

mkdir -p /etc/ssl/private
Генерируем RSA PRIVATE KEY и CERTIFICATE
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
На все вопросы нажимаем «ENTER»
Устанавливаем необходимые права
chmod 600 /etc/ssl/private/*.pem

Добавляем локального пользователя:

useradd
После создания пользователя, корнем его ftp будет домашняя директория
Добавляем в автозагрузку
echo 'pureftpd_enable="YES"' >> /etc/rc.conf

Запускаем Pure-ftpd

/usr/local/etc/rc.d/pure-ftpd start

Проверяем работу

sockstat | grep pure

Тестируем работу сервера Pure-ftpd

Вот список FTP-клиентов рекомендованный Pure-ftpd:

  1. CoreFTP Lite (Windows) http://www.coreftp.com/
  2. SmartFTP (Windows) http://www.smartftp.com/
  3. IglooFTP Pro (Windows, Linux) http://www.iglooftp.com/
  4. FlashFXP (Windows) http://www.flashfxp.com/
  5. SDI FTP (Windows) http://www.sdisw.com/
  6. LFTP (Unix, MacOS X) http://lftp.yar.ru/
  7. RBrowser (MacOS X) http://www.rbrowser.com/
  8. Glub Tech Secure FTP Client (Unix, MacOS X, Windows) http://secureftp.glub.com/
  9. FileZilla (Windows, OSX, Linux) http://filezilla-project.org/
  10. Cyberduck (OSX) http://cyberduck.ch/
  11. WinSCP (Windows) http://winscp.net/

Я, остановлюсь пожалуй на FileZilla. Запускаем и добавляем ftp сервер 

Сохраняемся и пробуем подсоединиться к ftp.

 ВСЁ!

Документация для вкуривания:

  1. http://download.pureftpd.org/pub/pure-ftpd/doc/README.TLS
  2. http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
  3. man pure-pw
  4. man pure-ftpd
Share

You may also like...

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *