Пн, 23.10.2017, 10:43
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 1 з 11
Модератор форуму: Bandalak, Ktara, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ ІХ: ІНТЕРНЕТ, МЕРЕЖІ, ХОСТІНГ » 9.8 Рубрика системного адміністратора » Защита сервера от небольших DoS атак
Защита сервера от небольших DoS атак
Jokerz Дата: Пн, 02.02.2009, 20:02 | Повідомлення № 1
Хостер
Повідомлень: 1193
Нагороди: 4
Рейтинг: 97
Поверте даже маленькая атака http флудом на 80 порт апача может вынести из строя сам Apache. Есть такие шутки как спрут. Эта програмулина делает оч мноо соеденений на апач в результатке чего сокеты заканчиваются (потому как все заняты обработкой пустых конектов со спрута) и апач перестает отвечать нормальному пользователю, отказывать в соеденении выдавая ошибки 500, 403 и прочую лабуду.
Как с этим бороться?

Придумали для апача такой модуль который следит за кол-вом конектов к апачу в конкретный промежуток времени. К примеру если делается с одного айпи оч много конектов программой (тем же спрутом) то получаеться что в 1 сек с одного айпи прет более 50 конектов сразу. Вот программа по логам это все вычесляет и блочит айпи.

Сразу скажу что от DDoS атак спасения нету тем более на уровне каких то модулей апача. Тут нужна целая система, ДНС выноситься на выделеный серве, ставиться физический фарвол от сиско перевсем этим делом и систему отслеивания аномалий и плюс широкий канал и мощние сервера.
Так о чем это я.Ага ну да.
И так модуль называеться mod_dosevasive (или mod_evasive хотя по новому так вот)
Описывать установку буду для Cent OS 5 и Apache 2.2.6 (у меня так)
Из описания модуля:
mod_evasive - (mod_dosevasive) HTTP DoS or DDoS attack or brute force attack
Apache модуль для организации защиты от DDoS атак

Вообщем поехали, открываем консольку системы и входим с правами рута:

переходим в папку tmp

Code
cd /tmp

Скачиваем архив мода (http://www.zdziarski.com/projects/mod_evasive/)

Распаковываем

Code
tar xfzv mod_evasive_1.10.1.tar.gz

Переходим в папку мода

Code
cd mod_evasive

Компилируем

Code
/usr/sbin/apxs -c -i -a mod_evasive20.c

Далее переходим в папку установленого мода (в разных ос по разному в редхате так)

Code
cd /usr/lib/httpd/modules

Создаем файлы загрузки

Code
nano -w evasive.load

Вставляем туда эту строчку жмем F2 и ENTER для сохранения

Code
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so

Создаем файл конфига

Code
nano -w evasive.conf

(для удобства все отдельны конфиги у меня в /etc/httpd/conf.d/ тут и потому я содал конфиг там новый а в то что создал в папке модуля заинклудил)

Вставляем этот столбик конфига и так же сохраняем

Code
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>

Активируем модуль

Code
Service httpd restart

Теперь описание настроек:
DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
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 адресов, можно и по маскам (напр. 127.0.0.*)

Так терь бы проверить как оно сие чудо работает.
И так пишем скрипт на перле:
его нужно положить сюды: /cgi-bin/
и запустить, если модуль сработает то в ответ запуска будет 500 ошибка спустя пару сек, и в логах сперва ответ нормальній потом ошибька 403 (типа нету достпа)

Code
#!/usr/bin/perl

use IO::Socket;
use strict;

for(0..1000) {
     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);
}

PeerAddr=> "127.0.0.1:80"); - тут указываем порт и апишку где висит апач.

Запускаем, после смотрим в логи:
там должно быть сперва нормальный ответ потом пошел столбик ответов с ошибкой 403

Вот и все :)

и еще есть в конфиге пунктик (который мона дописать):
DOSEmailNotify:
со значениемтаким:
DOSEmailNotify vasja@mail.ru
и при блокировке будет выслано на мейл письмо с текстом:
To: vasja@mail.ru
Subject: HTTP BLACKLIST ip неверного

mod_evasive HTTP Blacklisted ip неверного

И после чего вы идете чнова в консоль и заносите айпишку в фарвол:
iptables -A INPUT -p TCP -s ip неверного -j DROP

И все дальше уже он ничего не сможет сделать даже пропинговать сервер:)

Додано (21.12.2008, 11:13)
---------------------------------------------
так и иногда сталкиваються с проблемой поисковики, ведь поисковые машины создают как раз больше 2 конектов в сек потому желательно в конфиге создать директиву с такими данными:
# кинем Яшу (yandex.ru) в белый список, разумеется это не все его ip’ы, но все же
DOSWhitelist 213.180.*.*
DOSWhitelist 81.19.*.*
DOSWhitelist 81.176.*.*
DOSWhitelist 81.222.*.*
DOSWhitelist 194.67.18.*
DOSWhitelist 66.249.*.*

# бот САПЕ (sape.ru) агрессивен, так что на всякий пожарный добавим в белый список
DOSWhitelist 217.107.36.*
DOSWhitelist 87.242.74.101
DOSWhitelist 80.251.136.38

И всех поисковиков или сайтов которые нужно (не забывайте втыкать туда после теста еще и свой локальный апи сервер мало ли какие скрипты крутяться у вас на сервере еще сами себя заблочите ;) )

Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!

Додано (02.02.2009, 19:02)
---------------------------------------------
отказался от этой дряни, как показала практика модуль использует не мало оперативки и проца а толку при жтом фигма, если идет атака то пусть один из 20 запросов проскочит к апачу, да и модуль отвечает 403 ошибкой апача, но это тоже ответ! Потому долго модуль под досом не живет, щас на основе nginx развиваю защиту как только доделаю так и опишу как делать:)

Відредаговано: WWW - Нд, 21.12.2008, 12:29
Форум інформатиків » РОЗДІЛ ІХ: ІНТЕРНЕТ, МЕРЕЖІ, ХОСТІНГ » 9.8 Рубрика системного адміністратора » Защита сервера от небольших DoS атак
Сторінка 1 з 11
Пошук:


© Форум інформатиків України, 2007-2017.