
Настройка proftpd с хранением пользователей в MySQL
ProFTPd — FTP-сервер для Linux и UNIX-подобных операционных систем.
ProFTPd использует лишь один конфигурационный файл «proftpd.conf», который располагается по умолчанию в:
- Linux — «/etc/proftpd/proftpd.conf»
- FreeBSD — «/usr/local/etc/proftpd.conf»
Сервер может быть настроен для работы нескольких виртуальных хостов, также поддерживает chroot. Может быть запущен в виде отдельного сервера (демона) или в составе суперсервера inetd. Также поддерживает IPv6.
Расширения: поддерживает модули, добавляющие SSL/TLS шифрование, аутентификацию через LDAP, работу с SQL, туннелирование соединений через SSH.
Установка:
sudo aptitude install proftpd
Конфигурирование:
Файл /etc/proftp/proftp.conf
ServerName "ProFTPD Default Installation" ServerType standalone DefaultServer on # Port 21 is the standard FTP port. Port 21 # Umask 022 Стандартная маска для новых директорий и файлов (777 - 755 = 022) Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit the maximum number of processes per service # (such as xinetd). MaxInstances 30 # Группа и пользователь от которого запускаем сервер User proftpd Group proftpd # Как хранить пароли в базе Plaintext,Crypt,md5 (Plaintext простым текстом) SQLAuthTypes Plaintext # Кого аутентифицируем по sql(только пользователей) users - только пользователей, groups - только группы no - никого SQLAuthenticate users # Минимальный GID и UID аутентифицирумого по sql пользователя SQLMinUserGID 80 SQLMinUserUID 80 # Информация для подключения к базе данных # база_данных@адрес_базы_данных:порт логин пароль SQLConnectInfo proftp@localhost:3306 proftp proftp # Название таблицы и полей пользователей в базе данных # таблица имя_пользователя пароль_пользователя UID GID куда_cheroot'ить # шелл_пользователя SQLUserInfo users_table username password uid gid homedir shell # Использовать системный шелл при авторизации? #(который хранится в /etc/shell) НЕТ! RequireValidShell off # Лог sql сессии SQLLogFile /var/log/proftpsql.log # chroot'ить пользователей в их домашние дериктории DefaultRoot ~ # права для домашних деррикторий пользователей <Directory ~> AllowOverwrite on <Limit WRITE> AllowAll </Limit> <Limit READ> AllowAll </Limit> </Directory> # Конфигурация анонимного пользователя и дериктории для него <Anonymous /home/ftp> User ftp Group ftp # разрешаем пользователя 'anonymous' с правами 'ftp' (делаем алиас) UserAlias anonymous ftp # максимальное колличество подключенных анонимных клиентов MaxClients 10 # 'welcome.msg' отображается при входе на сервер DisplayLogin welcome.msg # '.message' отображается при смене каталога DisplayChdir .message <Limit LOGIN CWD DIRS READ LIST> AllowAll </Limit> # запрещаем запись анонимному пользователю <Limit WRITE> DenyAll </Limit> </Anonymous> </pre>Авторизация через MySQL.
Создание базы:CREATE DATABASE proftp;Создание структуры таблицы с пользователями:DROP TABLE IF EXISTS `proftp.users_table`; CREATE TABLE `users_table` ( `unic_id` int(11) NOT NULL auto_increment, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `groupname` varchar(24) NOT NULL, `uid` int(11) NOT NULL, `gid` int(11) NOT NULL, `homedir` varchar(50) NOT NULL, `shell` varchar(20) NOT NULL, `last_login` int(15) NOT NULL, `login_count` int(15) NOT NULL, `last_err_login` int(15) NOT NULL, `err_login_count` int(15) NOT NULL, PRIMARY KEY (`unic_id`) ) ENGINE=MyISAM COMMENT='Таблица пользователей';Создание учетных записей:INSERT INTO `users_table` VALUES (1,'user1','123','users',65534,65534, '/home/ftp','/sbin/nologin',0,0,0,0); INSERT INTO `users_table` VALUES (2,'user2','123','users',65534,65534, '/home/ftp','/sbin/nologin',0,0,0,0); INSERT INTO `users_table` VALUE (3,'admin','secure%pass','admin',103,1001, '/home/ftp','/sbin/nologin',0,0,0,0);Содание пользователя для доступа к базе данных:GRANT SELECT ON proftp.* TO 'proftp'@'localhost' IDENTIFIED BY 'proftp';Авторизация через локальный файл
Правило iptables
Пассивный режим:iptables -t filter -A INPUT -i ppp0 --protocol tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -i ppp0 --protocol tcp --dport 49152:65534 -j ACCEPTгде ppp0 интерфейс светящий в интернет
Активный режим:Для активного режима достаточно разрешить входящие только для порта данных:
iptables -t filter -A INPUT -i ppp0 --protocol tcp --dport 21 -j ACCEPTСсылки:
proftpd с хранением пользователей в MySQL
Официальный сайт proftp
Bog BOS: FTP-сервер ProFTPD: установка, настройка и использование
FTP – активный и пассивный режимы
Виртуальные, неанонимные пользователи proftpd
FTP-сервер ProFTPD: установка, настройка и использование