Отбиваем DDOS mod_evasive + firewall на CentOS

Анализ DDoS можно производить конечно своими скриптами, парсить логи. Но лучше предоставить это апачевскому mod_evasive.

Ставим mod_evasive, в конфигурации пишем

DOSHashTableSize 3097
DOSPageCount 15
DOSSiteCount 15
DOSPageInterval 3
DOSSiteInterval 3
DOSBlockingPeriod 300
DOSSystemCommand «/usr/bin/sudo /usr/bin/fwban %s»

DOSPageInterval – интервал для хитов определенной страницы
DOSSiteInterval – интервал для хитов определенного vhost
DOSPageCount – после этого количества хитов по определенному URI в течении интервала DOSPageInterval, айпи будет забанен
DOSSiteCount – после этого количества хитов по определенному vhost в течении интервала DOSSiteInterval, айпи будет забанен

Нам понадобиться скрипт для бана на уровне файрвола «/usr/bin/fwban» (вариант для Linux):

#!/bin/bash
if [ "x$1" = "x" ] ; then
echo «USAGE: $0 IPADDR»
exit
fi
/sbin/iptables -A BAN -s $1 -j DROP

Ему надо поставить права 755.

Так же нам понадобиться утилита sudo. Она стоит практически везде. В «visudo» закомментируем опцию:

#Defaults requiretty

И добавим строку

apache ALL = NOPASSWD: /usr/bin/fwban

где apache – юзер от которого работает апач.

Так же нам понадобиться цепочка BAN в iptables:

iptables -N BAN
iptables -I INPUT -j BAN

Сохраним правила файрвола

/etc/init.d/iptables save

Рестартанем апач. Теперь попробуйте уложить ваш сайт (только не со своего айпи!!!):

ab -n 1000 -c 20 http://yoursite.info/

В логах «жертвы» можно увидеть:

May 6 15:18:25 Server1 mod_evasive[26514]: Blacklisting address 1.2.3.4: possible DoS attack.

А в файрволе:

# iptables-save
—многа букав—
-A BAN -s 1.2.3.4 -j DROP
—многа букав—

Ура! No pasaran.

Да. И конечно, апач лучше бы прикрыть извне nginx’ом.

Да. И данный метод банит айпишнеги перманентно, пока не рестартанет сервер, или не будет сброшена цепочка BAN. Вот такой брутальный метод )

Источник pentarh.com/wp/2011/05/06/anti-ddos-mod_evasive-firewall


Понравилась статья? Поделись с остальными.

Комментарии закрыты.