Защищаем Apache от DDOS атак - Часть 1

Опубликовано admin в Чт, 24/03/2011 - 10:40
В 1й части мы будем устанавливать модуль Apache mod-evasive на Debian сервер. Этот модуль отслеживает количество подключений с определенного клиента и блокирует IP адрес на определенное время при превышении лимита.

sudo apt-get install libapache2-mod-evasive


Или берем отсюда:

http://packages.debian.org/lenny/libapache2-mod-evasive

И устанавливаем так:

dpkg -i libapache2-mod-evasive_x.x.x.deb


Документация на английском языке:

http://www.helicontech.com/ape/doc/mod_evasive.htm

Создаем файл /etc/apache2/mods-available/mod-evasive.conf с вот такими настройками:

<IfModule mod_evasive20.c>
DOSHashTableSize 4096
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>


Включаем модуль и перезапускаем Apache:

a2enmod mod-evasive
/etc/init.d/apache2 restart


В /usr/share/doc/libapache2-mod-evasive/examples есть скрипт на Perl для проверки модуля — test.pl — копируем его на клиентскую машину и правим адрес сервера:

#!/usr/bin/perl
 
# test.pl: small script to test mod_dosevasive's effectiveness
 
use IO::Socket;
use strict;
 
for(0..100) {
    my($response);
    my($SOCKET) = new IO::Socket::INET( Proto   => "tcp",
    PeerAddr=> "domain.ru:80");
    if (! defined $SOCKET) { die $!; }
    print $SOCKET "GET /?$_ HTTP/1.0\n\n";
    $response = <$SOCKET>;
    print $response;
    close($SOCKET);
}


Запускаем:

chmod 777 test.pl
./test.pl


Без включенного модуля все ответы сервера будут:

HTTP/1.1 200 OK


Со включенным – сервер начнет блокировать доступ на определенное время после превышения количества подключений:

HTTP/1.1 403 Forbidden


P.S.: это спасает лишь от самых примитивных видов атак.


Источник: http://mtaalamu.ru/blog/92.html

( categories: )