root / my Debian tips&tricks / Настройка ProFTPd |
|
ProFTPd - ftp сервер с поддержкой шифрования. Этот сервер подкупает простой настройкой и возможностью интеграции с mySQL для хранения пользователей. 1. Установим всё необходимое: aptitude install proftpd-basic proftpd-doc proftpd-mod-msg proftpd-mod-mysql proftpd-mod-sqlite proftpd-mod-tar proftpd-mod-vroot 2. Подготовим окружение: 2.1. mySQL -- -- Структура таблицы `grouptable` -- CREATE TABLE IF NOT EXISTS `grouptable` ( `groupname` text, `gid` int(11) NOT NULL AUTO_INCREMENT, `members` text, `description` tinytext, PRIMARY KEY (`gid`), UNIQUE KEY `gid_2` (`gid`), KEY `gid` (`gid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10002 ; -- -- Дамп данных таблицы `grouptable` -- INSERT INTO `grouptable` (`groupname`, `gid`, `members`, `description`) VALUES ('admins', 10000, NULL, 'Administrators'), ('users', 10001, NULL, 'Ordinary users'); -- -- Структура таблицы `usertable` -- CREATE TABLE IF NOT EXISTS `usertable` ( `userid` text, `passwd` text, `homedir` text, `shell` text, `uid` int(11) NOT NULL AUTO_INCREMENT, `gid` int(11) DEFAULT NULL, `count` int(11) NOT NULL DEFAULT '0', `lastlogin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `lastlogout` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `expiration` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `disabled` tinyint(4) DEFAULT '0', `det_name` tinytext, `det_mail` tinytext, `det_adress` tinytext, `det_notes` tinytext, PRIMARY KEY (`uid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10003 ; -- -- Структура таблицы `vhtable` -- CREATE TABLE IF NOT EXISTS `vhtable` ( `servername` varchar(255) NOT NULL DEFAULT '', `docroot` varchar(255) NOT NULL DEFAULT '', `user_id` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`servername`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Структура таблицы `xfer_stat` -- CREATE TABLE IF NOT EXISTS `xfer_stat` ( `userid` text, `file` text, `size` bigint(20) DEFAULT '0', `address_full` text, `address_ip` text, `command` text, `timespent` text, `time` text, `cmd` text, `dunno` text ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 2.2. Проброс портов Если у Вас ftp-сервер стоит за фаерволом, то Вам необходимо пробросить порты для пассивного соединения при TLS. Например пробросим диапазон портов с 45000 по 65534. 2.3. Генерация ключей для tls openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/cert.pem -keyout /etc/proftpd/ssl/key.pem 3. Настройки в proftpd.conf Обратите внимание! Я пишу тут только то, что я добавил/изменил в конфигурационном файле. Поэтому не стирайте свой конфигурационный файл. Просто пройдитесь по нему и измените некоторые параметры в соответствии с моими правками. UseIPv6 off # закрыть пользователей в их домашних каталогах DefaultRoot ~ # порт 21 для ftp Port 21 # а вот собственно и порты, которые мы ранее пробрасывали PassivePorts 45000 65534 # немного логов TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log # включаем конфиги для sql и tls Include /etc/proftpd/sql.conf Include /etc/proftpd/tls.conf 4. А вот sql.conf выкладываю полностью. <IfModule mod_sql.c» SQLBackend mysql SQLEngine on # SQLAuthenticate on SQLAuthenticate users* groups* SQLAuthTypes Backend SQLConnectInfo proftpd_admin@localhost proftpd_admin UC8n6sbNMUVPNrUn SQLUserInfo usertable userid passwd uid gid homedir shell SQLGroupInfo grouptable groupname gid members SQLUserWhereClause "disabled=0" SQLLog PASS updatecount SQLLog EXIT time_logout # xfer Log in mysql SQLLog RETR,STOR transfer1 SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat SQLLOG ERR_RETR,ERR_STOR transfer2 SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat # SQLLogFile /var/log/proftpd/sql.log # Logs TransferLog /var/log/proftpd/xfer.log ExtendedLog /var/log/proftpd/access.log WRITE,READ ExtendedLog /var/log/proftpd/auth.log AUTH ExtendedLog /var/log/proftpd/paranoid.log ALL SQLLogFile /var/log/proftpd/mysql.log </IfModule> 5. Конфигурация tls.conf. <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRSACertificateFile /etc/proftpd/ssl/cert.pem TLSRSACertificateKeyFile /etc/proftpd/ssl/key.pem TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired TLSVerifyClient off TLSRequired off TLSRenegotiate required off </IfModule> 6. Часть конфигурации modules.conf LoadModule mod_tls.c LoadModule mod_sql.c LoadModule mod_sql_mysql.c LoadModule mod_sftp.c LoadModule mod_sftp_sql.c 7 Рестарт ProFTPd /etc/init.d/proftpd stop && /etc/init.d/proftpd start |