proftpd-adm + ProFTPd + Mysql

Unix > proftpd-adm + ProFTPd + Mysql
08.02.2013 16:36:43



Статья:

proftpd-adm + ProFTPd+ Mysql

ProFTPd установим с поддержкой MySQL, для этого имеется целый, отдельно выделенный порт во FreeBSD:

cd /usr/ports/ftp/proftpd-mysql/

make install clean

В конфиге главное выбрать поддержку mysql

 

¦[ ] BAN              Include mod_ban (Requires CTRLS)           ¦ ¦
¦ ¦[ ] CLAMAV           Include mod_clamav                         ¦ ¦
¦ ¦[ ] CTRLS            Include controls                           ¦ ¦
¦ ¦[ ] DIGEST           Include mod_digest                         ¦ ¦
¦ ¦[X] IFSESSION        Include mod_ifsession                      ¦ ¦
¦ ¦[ ] IPV6             Use IPv6                                   ¦ ¦
¦ ¦[ ] LDAP             Use LDAP                                   ¦ ¦
¦ ¦[ ] LDAP_TLS         Use LDAP TLS (Requires LDAP, OPENSSL)      ¦ ¦
¦ ¦[X] MYSQL            MySQL auth (Can be combined with PGSQL)    ¦ ¦
¦ ¦[X] NLS              Use nls (builds mod_lang)                  ¦ ¦
¦ ¦[X] OPENSSL          Include mod_tls                            ¦ ¦
¦ ¦[ ] PGSQL            Postgres auth (Can be combined with MYSQL) ¦ ¦
¦ ¦[ ] QUOTA            Include mod_quota                          ¦ ¦
¦ ¦[ ] QUOTATAB_RADIUS  include mod_quotatab_radius                ¦ ¦
¦ ¦[ ] RADIUS           Include mod_radius                         ¦ ¦
¦ ¦[X] RATIO            Include mod_ratio                          ¦ ¦
¦ ¦[X] README           Include mod_readme                         ¦ ¦
¦ ¦[X] REWRITE          Include mod_rewrite                        ¦ ¦
¦ ¦[ ] TDS              FreeTDS - Sybase & MS-SQL auth (Exclusive) ¦ ¦
¦ ¦[X] WRAP             Include mod_wrap2                          ¦ ¦
¦ ¦[ ] WRAP_FILE        Include mod_wrap2_file                     ¦ ¦
¦ ¦[ ] WRAP_SQL         Include mod_wrap2_sql                      ¦ ¦
+-L----.(+)----------------------------------------------------------+

¦ [ OK ] Cancel

 

Скачиваем http://sourceforge.net/projects/proftpd-adm/

Полученный архив распаковываем: tar xvfz proftpd_admin_vXXX.tar.gz

После распаковки можно приступить к настройке ProFTPd, пример файла настройки находится в том каталоге который получился при распаковке, я укажу относительный путь, в каталоге misc/sample_config, находится файл proftpd.conf, возьмем из него опции отвечающие за подключение к mysql

Вот работоспособный конфиг :

ServerName "web0.selfip.net"

ServerType standalone

ServerIdent on "FTP microsoft v1.0"

DeferWelcome on

DefaultServer on

DisplayLogin .welcome # Textfile to display on login

DisplayConnect .connect # Textfile to display on connection

#DisplayFirstChdir .firstchdir # Textfile to display on first changedir

UseReverseDNS off

IdentLookups off

Port 21

Umask 022

MaxInstances 15

MaxClientsPerHost 3 "Only %m connections per host allowed"

MaxClients 10 "Only %m total simultanious logins allowed"

MaxHostsPerUser 1

User nobody

Group nobody

ScoreboardFile /var/log/scoreboard

# Some logging formats

LogFormat default "%h %l %u %t \"%r\" %s %b"

LogFormat auth "%v [%P] %h %t \"%r\" %s"

LogFormat write "%h %l %u %t \"%r\" %s %b"

TransferLog /var/log/proftpd.xferlog

ExtendedLog /var/log/proftpd.access_log WRITE,READ write

ExtendedLog /var/log/proftpd.auth_log AUTH auth

ExtendedLog /var/log/proftpd.paranoid_log ALL default

SQLLogFile /var/log/proftpd.mysql

AuthOrder mod_sql.c

SQLAuthTypes Backend

#база@ХОСТ ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ -

SQLConnectInfo proftpd@127.0.0.1 ftp ftp

SQLUserInfo usertable userid passwd uid gid homedir shell

SQLGroupInfo grouptable groupname gid members

SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"

SQLLog PASS counter

SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable

SQLLog EXIT time_logout

SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable

SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"

SQLShowInfo PASS "230" "Last login was: %{login_time}"

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

AllowStoreRestart on

AllowRetrieveRestart on

RequireValidShell off

PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"

DefaultRoot ~

DenyFilter \*.*/

<Directory /ftp/*>

AllowOverwrite off

HideNoAccess off

<Limit READ>

AllowAll

</Limit>

<Limit WRITE>

DenyGroup !admins

</Limit>

</Directory>

<Directory /ftp/incoming/*>

AllowOverwrite on

HideNoAccess on

<Limit READ>

DenyGroup !admins

</Limit>

<Limit STOR MKD>

AllowAll

</Limit>

</Directory>

 

Настроим подключение к БД в конфиге формат:

#база@ХОСТ ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ

SQLConnectInfo proftpd@127.0.0.1 ftp ftp

Соотсвественно создадим в Mysql БД , заведём пользователя и настрои права доступа к этой базе.

mysql –user=root -p 
mysql> grant all on proftpd.* to 'ftp'@'localhost' identified by 'ftp';
 

Для вебинтерфейса либо сконфигурируем новый виртуалхост, либо, разместим распакованный каталог в имеющемся виртуалхосте( не забудте обязательно запаролить каталог средствами апача).
Далее, необходимо убедится, что файл configuration.xml доступен для записи. Если нельзя записаться в него, делаем:

chown www:www configuration.xml
 
Теперь из интерфейса можно настроить авторизацию в MySQL(на вкладке конфига), и только после  этого завести новых пользователей