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

В 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.: это спасает лишь от самых примитивных видов атак.
  • +1
  • 15 сентября 2009, 19:10
  • Sergei_T

Комментарии (2)

RSS свернуть / развернуть
+
+1
Предупреждаю — этот способ только от школоты )))
avatar

Sergei_T

  • 15 сентября 2009, 19:16
+
0
Это точно, что только от школоты. Когда-то (пару лет назад) пробовал этот mod-evasive, работал он как-то глючно. Для более серьёзных атак, ориентированных на приложение (а не на забивание канала жертвы), стоит перед апачем ставить что-то более проворное типа nginx или lighttpd.
avatar

sysadm

  • 13 декабря 2012, 19:25

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.