Yvision.kzYvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
11:04, 07 мая 2011

Немного о защите от ddos-атак

Сегодня я хотел бы описать установку модуля mod_evasive, для веб-сервера Апач. Чем же хорош этот модуль? Наверное все знают что такое dos (ddos) атака, а многие имели опыт с ней столкнуться. В настоящее время организовать такую атаку не составит больших денежных вливаний, а последствия могут быть ощутимые, например для интернет-магазина. Итак mod_evasive – это модуль защиты от dos(ddos), брут форс атак. Но не стоит думать что это панацея, он справиться только с слабой dos(ddos) атакой, для чего то более серьезного, необходимо принимать иные меры.

Устанавливать этот модуль я буду на ОС CentOS 5.5. Подразумевается что Апач, версии 2 у вас уже установлен.

 

1. Подключаем репозиторий Epel.

 

Вот линк: http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

 

Импортируем так:

# rpm -Uhv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

 

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>

 


Описание настроек: DOSH * ashTableSize: это размер хэш-таблицы которая обрабатывает запросы к веб-серверу.

  • 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

Ну что ж модуль работает.  На этом все!


 
0
200
1