Monday, 11 February 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

No comments:

Post a Comment

Note: only a member of this blog may post a comment.