На моих серверах обычно трудится FTP демон Pure-FTPd, в то же время всегда установлен fail2ban для защиты сервера по SSH. Заметил что в фильтрах fail2ban лежит файл pure-ftpd.conf, что как бы намекает: "Реализуй же ты защиту...". Но в jail.conf о pure-ftpd упоминания небыло, заниматься было лень, а тут на днях пробило.
Все действия проводились на Russian Fedora 16 (RFRemix 16).
Считаем что у нас уже установлены Pure-FTPd и fail2ban.

Для начала смотрим в лог pure-ftpd, есть ли в нём не удачные попытки авторизации. Если таковых нет, то попросите друга, или сами сделайте несколько ошибочных вводов пароля. Задача в том чтоб в логе появились сообщения об ошибках авторизации в нужном кол-ве, т.е. в том кол-ве, после которого клиента должно забанить.
# vim /var/log/messages

Видим попытки безуспешной авторизации? Здорово!
Теперь пробуем, увидит ли их fail2ban с нынешними фильтрами
# fail2ban-regex '/var/log/messages' '/etc/fail2ban/filter.d/pure-ftpd.conf'

Скорее всего фильтр ничего не найдёт, скажет что адреса не найдены, или как-то так...
Изменим фильтр, чтоб тот корректно обрабатывал современные логи pure-ftpd.
# vim /etc/fail2ban/filter.d/pure-ftpd.conf

Вот содержимое файла без закоментированных участков:
[Definition]
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$
ignoreregex =

Сохраним файл /etc/fail2ban/filter.d/pure-ftpd.conf и попробуем снова увидит ли ошибочные авторизации fail2ban
# fail2ban-regex '/var/log/messages' '/etc/fail2ban/filter.d/pure-ftpd.conf'

В этот раз должны быть похожие строки:
Addresses found:
[1]
 91.211.192.38 (Mon Oct 08 00:55:19 2012)
 91.211.192.38 (Mon Oct 08 00:55:19 2012)
 91.211.192.38 (Mon Oct 08 00:55:19 2012)

что говорит о том, что фильтра правильно обрабатываются и находят попытки ошибочных авторизаций.

Следующим шагом открываем для редактирования jail.conf
# vim /etc/fail2ban/jail.conf

В самом конце добавляем строки
[pure-ftpd]

enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
action = iptables[name=Pure-FTPd, port=ftp, protocol=tcp]
 sendmail-whois[name=Pure-FTPd, dest=root, sender=fail2ban@example.com]
logpath = /var/log/messages
maxretry = 3

example.com замените на свой домен, не забудьте!

Перезапустим fail2ban
# service fail2ban restart

Если ошибок нет, то на email root должно прийти письмо об удачной активации фильтра Pure-FTPd.
Надеюсь и в этот раз стал вам полезен! Тестируйте...

Комментарии  

dimetrius
0 # dimetrius 15.11.2013 23:09
Вот ещё момент...
В Debian по умолчанию настроено так, что уведомления на email не приходят.

Исправляется довольно просто:
Находим в файле jail.conf строки
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_)s

и внимательно читаем :-)

Если по русски, то заменяем action_ на action_mw, или action_mwl
dimetrius
0 # dimetrius 09.10.2013 14:31
На Debian у меня не срабатывала строчка
Цитата:
# fail2ban-regex '/var/log/messages' '/etc/fail2ban/filter.d/pure-ftpd.conf'
её нужно писать без одинарных кавычек, например:
Цитата:
# fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/pure-ftpd.conf
Как пишет нам fail2ban в подсказках, если указываем файл, то без кавычек, если же регулярное выражение, то в одинарных кавычках.

Увы, комментарии временно отключены. Спам засыпает (