пятница, 10 января 2014 г.

Protect your server from butforce with Fail2ban

 Простая в использовании утилита, позволяющая блокировать попытки брутфорса.

yum install fail2ban

#Создадим jail.local, который будет переопределять правила jail.conf
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Основной файл настроек: jail.conf
ignoreip - наш ip, не фильтруется.
bantime - длительность бана.
Maxretry - количество попыток авторизации, после которого ip получает бан.
Findtime - время в секундах, в течении которого фиксируется auth error для каждого ip. Т.е. если Findtime=60,Maxretry=3, то после трех попыток в течении 60 сек ip отправляется в бан.
usedns = yes - если вместо ip в логе имя хоста, fail2ban будет разрешать хост в ip.
[ssh-iptables]


enabled  = true

filter   = sshd

action   = iptables[name=SSH, port=ssh, protocol=tcp]

           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]

logpath  = /var/log/secure

maxretry = 5
filter : This section by default set to sshd and refers the config file (/etc/fail2ban/filter.d/sshd.conf) containing the rules that fail2ban uses to find matches.
action : This action tells the fail2ban to ban a matching IP address once a filter matches in the /etc/fail2ban/action.d/iptables.conf file. If your server have mail setup, you can add email address, where fail2ban sends you a email alerts whenever it bans an IP address. The sender section refers to file /etc/fail2ban/action.d/sendmail-whois.conf file.
С помощью fail2ban можно также блокировать DNS DDoS, для этого необходимо задействовать правила

[named-refused-udp] и [named-refused-tcp] 

Мы можем создавать сои собственные правила с регулярными выражениями. Для их тестирования можно воспользоваться командой:
fail2ban-regex /var/log/auth.log "Failed [-/\w]+ for .* from "
Тестируемые правила необходимо заключать в двойные кавычки иначе получим ошибку. Например, если мы хотим заблокировать тех, кто пытается попасть в директории phpmyadmin|mail|forum|login|cgi-bin|wp-login, то правило будет выглядеть так:
^<host> - - \[.*\] \"(GET|POST) /(phpmyadmin|mail|forum|login|cgi-bin|wp-login|mysql).* HTTP\/.*$
Важная особенность - все правила регистрозависимые. Чтобы сделать их caseisensitive нужно добавить (?i) в начало каждого правила.
^(?i)<host> - - \[.*\] \"(GET|POST) /(phpmyadmin|mail|forum|login|cgi-bin|wp-login).* HTTP\/.*$
Можно добавлять сразу несколько правил в один фильтр, добавляя каждое с новой строки.

Чтобы проверить добавляются ли правила в iptables, запустите
iptables -L
Перезагрузк iptables удалит забаненyые ip.
Все остальное довольно интуитивно понятно.

http://www.fail2ban.org/wiki/index.php/MANUAL_0_8

Комментариев нет:

Отправить комментарий