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 | |