Перейти к собственно контенту

Архив

Метка: fail2ban

Поставил тут на один из серверов с ОС Ubuntu, который дико брутили и ддосили программу fail2ban,накатал для нее фильтры под nginx, но в логах после запуска вижу следующее:

2012-09-02 00:32:55,872 fail2ban.jail : INFO Jail 'nginx-auth' started
2012-09-02 00:32:55,873 fail2ban.actions.action: ERROR iptables -N fail2ban-SSH
iptables -A fail2ban-SSH -j RETURN
iptables -I INPUT -p all -j fail2ban-SSH returned 400
2012-09-02 00:32:55,874 fail2ban.actions.action: ERROR iptables -N fail2ban-LIMIT
iptables -A fail2ban-LIMIT -j RETURN
iptables -I INPUT -p all -j fail2ban-LIMIT returned 400
2012-09-02 00:32:55,879 fail2ban.actions.action: ERROR iptables -N fail2ban-AUTH
iptables -A fail2ban-AUTH -j RETURN
iptables -I INPUT -p all -j fail2ban-AUTH returned 200

Причем вроде все работает как надо, но лог смущает. Чтобы избавиться от ошибки открываем файл /usr/bin/fail2ban-client
и перед строкой
beautifier.setInputCmd(c) вставляем строку
time.sleep(0.1) , то есть код выглядит уже вот так

def __processCmd(self, cmd, showRet = True):
beautifier = Beautifier()
for c in cmd:
time.sleep(0.1)
beautifier.setInputCmd(c)
try:
client = CSocket(self.__conf["socket"])
ret = client.send(c)

Перезапускаем fail2ban и смотрим лог:

2012-09-02 00:35:40,571 fail2ban.jail : INFO Creating new jail 'nginx-auth'
2012-09-02 00:35:40,571 fail2ban.jail : INFO Jail 'nginx-auth' uses poller
2012-09-02 00:35:40,672 fail2ban.filter : INFO Added logfile = /var/www/mobilmax/logs/nginx_access.log
2012-09-02 00:35:40,773 fail2ban.filter : INFO Set maxRetry = 1
2012-09-02 00:35:40,975 fail2ban.filter : INFO Set findtime = 600
2012-09-02 00:35:41,076 fail2ban.actions: INFO Set banTime = 604800
2012-09-02 00:35:42,489 fail2ban.jail : INFO Jail 'ssh' started
2012-09-02 00:35:42,593 fail2ban.jail (далее…)

!!!! Из-за неправильного отображения данных конфигов в WordPress выложил их здесь.
Устанавливаем fail2ban
deathstar# cd /usr/ports/secuity/py-fail2ban && make install clean
Правим конфиг
deathstar# ee /usr/local/etc/fail2ban/jail.conf
У меня он выглядит так
[DEFAULT]
# Какие IP игнорировать
ignoreip = 127.0.0.1
# Время бана в секундах
bantime = 600
# время проверки,за которое событие успеет повторится, чтоб отловить и забанить
findtime = 600
# кол-во неверных попыток
maxretry = 1
backend = auto

[ssh-ipfw]
enabled = true
# использовать фильтр из примеров
filter = bsd-sshd
# использовать /action.d/bsd-ipfw.conf
action = ssh-ipfw[localhost=78.24.219.97]
# Уведомление в Jabber :))
jabber-whois[name="SSH,IPFW", dest=deathstar@deathstar.name]
# Какой лог парсить
logpath = /var/log/auth.log
# Какой Ip игнорировать
ignoreip = 127.0.0.1

[exim-ipfw]
enabled = true
filter = exim
action = exim-ipfw[localhost=78.24.219.97]
jabber-whois[name="Exim,IPFW", dest=deathstar@deathstar.name]
logpath = /var/log/exim/mainlog
ignoreip = 127.0.0.1

[nginx-ipfw]
enabled = true
filter = nginx
action = nginx-ipfw[localhost=127.0.0.1]
jabber-whois[name="Nginx,IPFW", dest=deathstar@deathstar.name]
logpath = /home/deathstar/www/deathstar.name.access.log
ignoreip = 127.0.0.1

Для уведомления в Jabber должен быть установлен и настроен sendxmpp ( о нем я писал в предыдущих статьях)
Создаем файл /usr/local/etc/fail2ban/action.d/jabber-whois.conf с таким содержимым

[Definition]
actionstart = printf %%b "[Fail2Ban] : started
The jail
has been started successfully.\n
" | /usr/local/bin/sendxmpp ""

actionstop = printf %%b "[Fail2Ban] : stopped
The jail
has been stopped.\n
" | /usr/local/bin/sendxmpp ""

actioncheck =

actionban = printf %%b "[Fail2Ban] : banned
The IP
has just been banned by Fail2Ban after
(далее…)