Re: fail2ban - Настройка
Posted: Thu Feb 27, 2014 3:43 pm
Извиняюсь, за задержку с ответом. Озадачил и исчез :)
Решил врубиться сам и вроде получилось. Как честный человек делюсь:
Идем в /etc/rc.d/init.d/proftpd
Находим
daemon proftpd $PROFTPD_OPTIONS 2>/dev/null
Если их два то для двух до этой строки вставляем:
export LC_MESSAGES="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
Выглядит результат как то так:
Идем /etc/fail2ban/jail.conf
Отправку почты специально отключил - и так хватает писем - пусть просто блокирует.
Фильтр привожу полностью, поскольку не помню корректировал ли его
Идем в /etc/fail2ban/filter.d/proftpd.conf
И вот это сочетание заработало - блокирует.
Одна из проблем, как оказалось, что proftpd как то при загрузке определяет локаль системы (у меня русская), и правила потом отрабатываются криво - то есть не видит он ошибок, поэтому и блокировок не создает в iptables.
Решил врубиться сам и вроде получилось. Как честный человек делюсь:
Идем в /etc/rc.d/init.d/proftpd
Находим
daemon proftpd $PROFTPD_OPTIONS 2>/dev/null
Если их два то для двух до этой строки вставляем:
export LC_MESSAGES="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
Выглядит результат как то так:
Code: Select all
prog="proftpd"
start() {
echo -n $"Starting $prog: "
export LC_MESSAGES="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
daemon proftpd $PROFTPD_OPTIONS 2>/dev/null
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
}
Code: Select all
[proftpd-iptables]
enabled = true
filter = proftpd
action = iptables[name=ProFTPD, port=ftp, protocol=tcp]
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
Фильтр привожу полностью, поскольку не помню корректировал ли его
Идем в /etc/fail2ban/filter.d/proftpd.conf
Code: Select all
# Fail2Ban fitler for the Proftpd FTP daemon
#
[INCLUDES]
before = common.conf
[Definition]
_daemon = proftpd
__suffix_failed_login = (User not authorized for login|No such user found|Incorrect password|Password expired|Account disabled|Invalid shell: '\S+'|User in \S+|Limit (access|configuration) denies login|Not a UserAlias|maximum login length exceeded).?
failregex = ^%(__prefix_line)s%(__hostname)s \(\S+\[<HOST>\]\)[: -]+ USER .*: no such user found from \S+ \[\S+\] to \S+:\S+ *$
^%(__prefix_line)s%(__hostname)s \(\S+\[<HOST>\]\)[: -]+ USER .* \(Login failed\): %(__suffix_failed_login)s\s*$
^%(__prefix_line)s%(__hostname)s \(\S+\[<HOST>\]\)[: -]+ SECURITY VIOLATION: .* login attempted\. *$
^%(__prefix_line)s%(__hostname)s \(\S+\[<HOST>\]\)[: -]+ Maximum login attempts \(\d+\) exceeded *$
ignoreregex =
# Author: Yaroslav Halchenko
# Daniel Black - hardening of regex
Одна из проблем, как оказалось, что proftpd как то при загрузке определяет локаль системы (у меня русская), и правила потом отрабатываются криво - то есть не видит он ошибок, поэтому и блокировок не создает в iptables.