Показать сообщение отдельно
Непрочитано 02.07.2011, 07:49   #1
Аватар для MAZDIK
Пользователь

Автор темы (Топик Стартер) Еще два способа защиты от http флуда (DDOS) fail2ban

Способ №1

Просмотрев логи своего веб сервера (xampp) /opt/lampp/logs/error_log я заметил, что кто-то брутит пытаясь найти что то.
Код:
[Mon Apr 04 23:05:52 2011] [error] [client XX.104.134.251] File does not exist: /opt/lampp/htdocs/pass.txt, referer: http://webxakep.net
[Mon Apr 04 23:05:52 2011] [error] [client XX.104.134.251] File does not exist: /opt/lampp/htdocs/moderator, referer: http://webxakep.net
[Mon Apr 04 23:05:52 2011] [error] [client XX.104.134.251] File does not exist: /opt/lampp/htdocs/modules, referer: http://webxakep.net
[Mon Apr 04 23:05:52 2011] [error] [client XX.104.134.251] File does not exist: /opt/lampp/htdocs/newsadmin, referer: http://webxakep.net
После установки fail2ban в конфиге /etc/fail2ban/jail.conf изменил эти строки:

Код:
[apache-shorewall]

enabled  = true
filter   = apache-noscript
action   = iptables[name=httpd, port=http, protocol=tcp]
logpath  = /opt/lampp/logs/error_log
maxretry = 3
true - включить
apache-noscript - фильтр который лежит в /etc/fail2ban/filter.d
iptables[name=httpd, port=http, protocol=tcp] - фаервол iptables
/opt/lampp/logs/error_log - путь к лог файлу апача
maxretry = 3 - кол-во ошибок
При возникновение 3 ошибок доступ блокируется при помощи файервола iptables.

Также изменил конфиг фильтра в /etc/fail2ban/filter.d
Код:
failregex = [[]client <HOST>[]] (File does not exist|.* not found or unable to stat)
«.*» - обозначает любой текст
Это значит что будет блокироваться вот такие строки:
Код:
[Mon Apr 04 23:04:37 2011] [error] [client XX.104.134.251] script '/opt/lampp/htdocs/moderator.php' not found or unable to stat, referer: http://webxakep.net
[Mon Apr 04 23:04:27 2011] [error] [client XX.104.134.251] File does not exist: /opt/lampp/htdocs/mssql, referer: http://webxakep.net
Способ №2

Во время DDOS в логах апаче /opt/lampp/logs/access_log записывается много таких строк:
Код:
XX.119.73.134 - - [23/Jun/2011:14:22:03 +0600] "GET /index.php HTTP/1.1" 200 -
XX.119.73.134 - - [23/Jun/2011:14:22:03 +0600] "GET /index.php HTTP/1.1" 200 -
XX.119.73.134 - - [23/Jun/2011:14:22:03 +0600] "GET /index.php HTTP/1.1" 200 -
В /etc/fail2ban/jail.conf изменил вот так:
Код:
[apache-badbots]

enabled  = true
filter   = apache-badbots
action   = iptables[name=Bad, port=http, protocol=tcp]
logpath  = /opt/lampp/logs/access_log
bantime  = 1800
maxretry = 250
bantime = 1800 - блокировать на 30 мин
maxretry = 250 - количество строк в логах с одним и тем же IP (меньше ставить не советую)

Конфиг фильтра в /etc/fail2ban/filter.d
Код:
failregex = ^<HOST> -.*"(GET|POST).*
Узнаем кого заблокировали /var/log/fail2ban.log
Код:
2011-06-29 04:16:49,743 fail2ban.actions: WARNING [apache-shorewall] Ban XX.24.139.11
2011-06-29 04:16:50,757 fail2ban.actions: WARNING [apache-shorewall] XX.24.139.11 already banned
2011-06-29 04:26:50,211 fail2ban.actions: WARNING [apache-shorewall] Unban XX.24.139.11
2011-06-29 16:55:38,908 fail2ban.actions: WARNING [apache-badbots] Ban XX.119.73.134
PS: я сам не догоняю выражение "already banned"
MAZDIK вне форума Ответить с цитированием
Сказали спасибо: