Сегодня я хотел бы описать установку модуля mod_evasive,
для веб-сервера Апач. Чем же хорош этот модуль? Наверное все знают что
такое dos (ddos) атака, а многие имели опыт с ней столкунуться. В
настоящее время организовать такую атаку не составит больших денежных
вливаний, а последствия могут быть ощутимые, например для
интернет-магазина. Итак mod_evasive – это имодуль защиты от dos(ddos),
брут форс атак. Но не стоит думать что это панацея, он справиться только
с слабой dos(ddos) атакой, для чего то более сурьезного, необходимо
принимать иные меры.
Устанавливать этот модуль я буду на ОС CentOS 5.5. Подразумевается что Апач, версии 2 у вас уже установлен.
1. Подключаем репозиторий Epel. Об этой операции можно прочесть здесь!
2. Устанавливаем модуль
# yum install mod_evasive
3. Редактируем конфигурационный файл Апача
# vi /etc/httpd/conf/httpd.conf
Добавляем следующии строки:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 6
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
DOSEmailNotify admin@corp.ru
DosWhitelist 90.52.18.19
</IfModule>
Описание настроек:
DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к веб-серверу.
DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени.
DOSSiteCount: число запросов ко всем страницам домена, т.е если
поступило более 50-ти запросов с одного ай-пи на разные страницы домена –
тогда такой ай-пи будет заблокирован.
DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
DOSEmailNotify: может быть использован для уведомления, будет отправлять
сообщение по электронной почте о том что такой-то IP был заблокирован.
DOSSystemCommand: эта директива используется для выполнения какой-нибудь
вашей команды когда IP блокируется. Вы можете использовать это для
добавления IP-адреса в таблицу фаервола.
(пример: "/sbin/iptables -A INPUT -p tcp –dport 80 -s %s -j REJECT” В %s передается от модуля IP)
DOSWhiteList: список белых IP адресов, можно и по маскам (например 192.168.0.*)
4. Теперь протестируем работу модуля. Создадим перловый скрипт:
# vi test
Добавляем такие строки:
#!/usr/bin/perl
use IO::Socket;
use strict;
for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}
Выставляем на файл права
# chmod a+x test
Запускаем скрипт:
# ./test
И видим такое:
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
Ну что ж модуль работает. На этом все.
|