vsftpd + mysql + virtual users
- Главная
- >
- Статьи и переводы
- >
- vsftpd + mysql + virtual users
- >
Суть механизма: vsftpd общается с pam, а pam общается с mysql.
# cd /usr/ports/ftp/vsftpd/ |
Версия без поддержки SSL.
Поставили, далее модуль pam_mysql.so
# cd /usr/ports/security/pam-mysql |
После установки делает линк
# ln -sf / usr / local / lib / pam_mysql.so / usr / lib / pam_mysql.so |
Ставим mysql.
# /usr/ports/databases/mysql41-server # make install clean |
В /etc/rc.conf добавим:
mysql_enable = "YES" |
Запускаем mysql
# / usr / local / etc / rc.d / mysql-server start |
Создадим базу где будут храниться логины и пароли от пользователей. Владелец базы vsftpd, пароль ftpdpass
# mysql -u root -p |
CREATE DATABASE vsftpd; |
Создаем таблицу:
USE vsftpd;CREATE TABLE ` accounts ` ( |
Далее командой
# adduser
|
создаем пользователя с похожими данными /etc/passwd
vsftpd: * : 1003 : 1003 :User & amp;: / home / vsftpd: / usr / sbin / nologin |
Теперь конфиг фтп сервера:
/ usr / local / etc / vsftpd.conf |
Далее создадим директорию
# mkdir / usr / local / etc / vsftpd_user_conf |
Создаем конфигурационный файл vsftpd, что бы pam функционировал с фпт сервером
# ee / etc / pam.d / vsftpd |
auth required pam_mysql.so user =vsftpd passwd =ftpdpass host =localhost db =vsftpd table =accounts usercolumn =username passwdcolumn =pass crypt = 2 |
В файле /etc/pam.d/vsftpd убедитесь, что бы было только 2 строки(первая начинается с auth required, вторая account required), без переносов.
Добавим тестового пользователя с логином testuser и паролем secret:
USE vsftpd; |
И еще немного прав пользователям на каталоги:
mkdir / home / vsftpd / testuser chown vsftpd:nogroup / home / vsftpd / testuser |
Запускаем:
# / usr / local / etc / rc.d / vsftpd.sh start |
P.S. в качестве фаервола я всегда использую pf, добавляем в /etc/pf.conf правила для фтп сервера:
pass in on $ext_if inet proto tcp from any port 1024 : 65535 to ваш.ip.адрес port 21 flags S / SA keep state |
Строки
pasv_min_port=50000
pasv_max_port=50100
в /usr/local/etc/vsftpd.conf означают, что открываются порты с 50000 до 50100 для пассивного режима работы фтп сервера и максимально может быть только 100 одновременных сессий.
pss: пользователей можно заводить и при помощи обычного phpmyadmin
Для использования FTPS необходимо установить vsftpd с поддержкой SSL и в конфигурации добавить
session_support =YES |
Для создания сертификатов выполнить:
openssl genrsa -des3 -out vsftpd.key 2048 |