FastNetMon

Показаны сообщения с ярлыком fail2ban. Показать все сообщения
Показаны сообщения с ярлыком fail2ban. Показать все сообщения

понедельник, 11 февраля 2013 г.

Защита серверов на Debian Squeeze от брутфорса посредством fail2ban

Ставим:
apt-get install -y fail2ban
Сервис сразу же запустится и будет добавлен в автозапуск.

Также fail2ban сразу создаст свою цепочку, через которую будет пропускать трафик (забаниваемые адрес) конкретного сервера (и как следвствие - крайне низкий оверхед, что плюс):

sudo iptables -nvL
Chain INPUT (policy ACCEPT 845 packets, 149K bytes)
 pkts bytes target     prot opt in     out     source               destination      
    0     0 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination      
Chain OUTPUT (policy ACCEPT 815 packets, 336K bytes)
 pkts bytes target     prot opt in     out     source               destination      
Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination      
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           



Открываем конфиг:
vi /etc/fail2ban/jail.conf

Там будет ряд блоков с заголовками вида - [ssh], это блоки правил, описывающих, какие именно сервисы контролируются и защищаются от брутфорса. Стандартно включен лишь один - ssh, он нам и нужен. Обращаю внимание! Что здесь нужно исправить порт, если он у Вас отличается от стандартного (я рекомендую это сделать!).


[ssh]
enabled = true
port    = 1022
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6


Теперь самое важное - внесите свой IP адрес (если он постоянный) в белый список fail2ban, это делается в том же файле в блоке:
ignoreip = 127.0.0.1 178.xx.yy.zz

Применяем измененный конфиг (если внесли туда коррективы):

/etc/init.d/fail2ban restart

Лог работы сервиса fail2ban можно смотреть так:

tail -f /var/log/fail2ban.log

Теперь настало время проверить fail2ban в деле - пробуем 6 раз ввести неверно ssh пароль со внешнего хоста, чтобы нас забанило.

Забаненые айпи можно смотреть вот так (либо в фаероволле):

sudo fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list: /var/log/auth.log
|  |- Currently failed: 1
|  `- Total failed: 7
`- action
   |- Currently banned: 1
   |  `- IP list: 188.40.74.10
   `- Total banned: 1

Раазбанивать ошибочно забаненых юзеров вот так (криво, да, но прямой механизм в fail2ban появится лишь к 0.9 версии, да и-то не факт):

sudo iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 77613 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination      
1      974 75898 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 1022
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination      
Chain OUTPUT (policy ACCEPT 75761 packets, 30M bytes)
num   pkts bytes target     prot opt in     out     source               destination      
Chain fail2ban-ssh (1 references)
num   pkts bytes target     prot opt in     out     source               destination      
1       25  2596 DROP       all  --  *      *       188.xx.xx.xx         0.0.0.0/0        
2      949 73302 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Разбаниваем (очень аккуратно, чтобы ):

sudo iptables -D fail2ban-ssh 1


Источник: http://debianclusters.cs.uni.edu/index.php/Fail2Ban:_Preventing_Brute_Force_SSH

вторник, 13 апреля 2010 г.

Как узнать о ротации лог файла, который Вы читаете?

Пока из вариантов - следить за его размером при каждой итерации чтения, если уменьшился - значит прошла ротация. Но можно узнать, как это сделали в fail2ban, который писан на Python:

2010-04-11 06:45:49,427 fail2ban.filter : INFO Log rotation detected for /var/log/auth.log
2010-04-11 06:45:49,558 fail2ban.filter : INFO Log rotation detected for /var/log/mail.log
2010-04-11 06:45:49,630 fail2ban.filter : INFO Log rotation detected for /var/log/mail.log
2010-04-11 06:45:52,431 fail2ban.filter : INFO Log rotation detected for /var/log/auth.log
2010-04-11 06:45:52,562 fail2ban.filter : INFO Log rotation detected for /var/log/mail.log
2010-04-11 06:45:52,634 fail2ban.filter : INFO Log rotation detected for /var/log/mail.log

четверг, 25 февраля 2010 г.

При старте системы некорректно стартует fail2ban

В логах вот такая фигня:
tail -f /var/log/fail2ban.log
2010-02-25 01:17:49,943 fail2ban.jail : INFO Jail 'sasl' started
2010-02-25 01:17:50,086 fail2ban.actions.action: ERROR iptables -N fail2ban-dovecot
iptables -A fail2ban-dovecot -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 110,143,993,995 -j fail2ban-dovecot returned 200
2010-02-25 01:17:50,087 fail2ban.actions.action: ERROR iptables -N fail2ban-sasl
iptables -A fail2ban-sasl -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 25,587 -j fail2ban-sasl returned 200
2010-02-25 01:17:50,090 fail2ban.actions.action: ERROR iptables -N fail2ban-proftpd
iptables -A fail2ban-proftpd -j RETURN
iptables -I INPUT -p tcp -m multiport --dports ftp -j fail2ban-proftpd returned 200


Кто подскажет, почему так?

UPDATE:
И это тоже баг fail2ban: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 а фикс взят отсюда: http://sourceforge.net/tracker/?func=detail&aid=2870788&group_id=121032&atid=689044

Фиксим.
vi /etc/fail2ban/action.d/iptables-multiport.conf


И корректируем actionstart следующим образом (добавляем sleep....):

14 actionstart = sleep ${RANDOM:0:1}.${RANDOM: -1:1}
15 iptables -N fail2ban-
16 iptables -A fail2ban- -j RETURN
17 iptables -I INPUT -p -m multiport --dports -j fail2ban-


И аналогично поступаем с actionstop:

23 actionstop = sleep ${RANDOM:0:1}.${RANDOM: -1:1}
24 iptables -D INPUT -p -m multiport --dports -j fail2ban-
25 iptables -F fail2ban-
26 iptables -X fail2ban-


После этого попробуйте перезапустить машину и все должно подняться успешно. Бага вызвана тем, что fail2ban мультипоточный и при запуске нескольких процессов происходит race-condition - попытка добавить забаниваемого юзера до того, как правило fail2ban-name будет создано. Вот так, да.

UPDATE:
Все заработало! На 8ядерном i7 полет нормальный, 4 правила после ребута поднимаются на ура.

UPDATE:
при повторном ребуте также все окей!

Исправленное правило для fail2ban для защиты Postfix / Debian

Необходимо заменить содержимое файла /etc/fail2ban/filter.d/sasl.conf на следующее (в стандартной версии баг в регулярном выражении):


# Fail2Ban configuration file
#
# Author: Yaroslav Halchenko
#
# $Revision: 510 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT
#

# Example:
# Feb 25 00:38:07 v1 postfix/smtpd[11100]: warning: unknown[95.79.205.2]: SASL PLAIN authentication failed: authentication failure

# fixed by FastVPS version:
failregex = : warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: authentication failure$

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =