19 Ноября 2017 06:04 
Навигация
 +  - 
Скачать игры
Сейчас на сайте
18.11.2017
Warhangel
10:11:30
offline
18.11.2017
_MindCa...
11:47:53
offline
17.11.2017
redisko
1 день
offline
17.11.2017
xaxaxa123
1 день
offline
16.11.2017
Letaboy
2 дней
offline
Последние фото
Game of Blocks : WesterosCraft and Game of Thrones
Game of Blocks : Wes...
Альбом: Скриншоты

Вынос трёх пати куполом
Вынос трёх пати куполом
Альбом: Скриншоты



Альбом: Флора

Последние видео
Видео Zamfir Greatest Hits | Best Of Gheorghe Zamfir : Zamfir Greatest Hits | Best Of Gheorghe Zamfir

Музыка:  Zamfir Greatest Hits | Best Of Gheorghe Zamfir

Видео The Best of Ennio Morricone - Greatest Hits : Ennio Morricone - The Best of Ennio Morricone - Greatest Hits (High Quality Audio) 
1. The Ecstasy of Gold (From \"The Good, the Bad and the Ugly\") 0:00 - 3:22
2. The Good, the Bad and the Ugly - Titles 3:22 - 6:04
3. Once upon a Time in the West - Main Theme 6:05 - 9:15
4. For a Few Dollars More - Titles 9:16 - 13:05
5. A Fistful of Dynamite - Main Theme 13:06 - 17:43
6. Cinema Paradiso - Main Theme 17:44 - 20:13
7. Chi Mai (From \"Maddalena\" & \"Le professionel\") 20:14 - 23:48
8. La Califfa - The Lady Caliph / The Queen 23:48 - 26:27
9. My Name is Nobody - Main Theme 26:27 - 29:37
10. L\

Музыка:  The Best of Ennio Morricone - Greatest Hits

Видео StarCraft. Полный фильм 2016. Вся трилогия [1080p] : Все три части трилогии Starcraft 2, объединенные в одном видео. Передана только основная сюжетная линия, вырезаны все вспомогательные миссии и опциональные диалоги.

Игрофильмы:  StarCraft. Полный фильм 2016. Вся трилогия [1080p]

Наша кнопочка
FAQ7.ru
Код:
RSS каналы
Новости
Комменты
Форум
Статьи
Фото
Файлы
Ссылки
Объявления
Реклама
Регистрация сайта в каталогах, раскрутка и оптимизация сайта, контекстная реклама
Автор темы: Warhangel
ID темы: 16
Информация о теме:
Имеются 1 сообщений по данной теме, которая была просмотрена 2519 раз.
Реклама
livecoin Обменник
Просмотр темы
Логин:
Пароль:  
Форум » Тематические » Программирование » PHP
Просмотр темы
Текущий рейтинг: (Всего: 0 голосов)  
Ответить
Иконка 
Система обнаружения и погашения DDOS-атаки http флудом.
Наверх Распечатать сообщение #1
Опубликовано 18-04-2010 18:44
Аватар пользователя

Супер Администратор



Сообщений: 2086
Вас поблагодарили: 17
раз(а) в 17 сообщениях

Зарегистрирован: 24.03.10
Со дня регистрации: 2797
Откуда: Россия
Пол: Мужской

Скрыть награды


Пожаловаться на это сообщение 

Система обнаружения и погашения DDOS-атаки http флудом.

Сразу предупреждаю, система написана на php и предназначена только для ослабления атаки http flood, от другого типа ddos атаки, к примеру: icmp и udp на уровне обычного владельца веб сайта защититься невозможно.

Вкратце о системе: система включает модуль обнаружения DDOS атаки, который производит постоянный мониторинг загруженности сайта, путем отслеживания количества приходящих запросов в секунду, в случае если количество запросов в секунду превысит 10 (это по умолчанию, можно выставить больше), то подключается модуль погашения атаки, который начинает вычислять IP адреса атакующих машин-зомби и заносить их в блэклист, мониторинг при этом отключается по умолчанию на 1 час.

Принцип действия я думаю, понятен, вот сам код:
К примеру, создадим каталог anti_ddos и кидаем все скрипты туда:
index.php (модуль обнаружения DDOS атаки):
PHP код:
<?php
$ad_ddos_query=10; // количество запросов в секунду для обнаружения DDOS атаки
$ad_check_file='check.txt'; // файл для записи текущего состояния во время мониторинга
$ad_temp_file='all_ip.txt'; // временный файл
$ad_black_file='black_ip.txt'; // будут заносится ip машин зомби
$ad_white_file='white_ip.txt'; // заносятся ip посетителей
$ad_dir='anti_ddos'; // каталог со скриптами
$ad_num_query=0; // текущее количество запросов в секунду из файла $check_file
$ad_sec_query=0; // секунда из файла $check_file
$ad_end_defense=0; // время окончание защиты из файла $check_file
$ad_sec=date("s"); // текущая секунда
$ad_date=date("mdHis"); // текущее время
$ad_defense_time=10000; // при обнаружении ddos атаки время в секундах на которое прекращается мониторинг



if(!file_exists("{$ad_dir}/{$ad_check_file}" ;) or !file_exists("{$ad_dir}/{$ad_temp_file}") or !file_exists("{$ad_dir}/{$ad_black_file}") or !file_exists("{$ad_dir}/{$ad_white_file}") or !file_exists("{$ad_dir}/anti_ddos.php")){
die("Не хватает файлов.");
}

require("{$ad_dir}/{$ad_check_file}");

if ($ad_end_defense and $ad_end_defense>$ad_date){
require("{$ad_dir}/anti_ddos.php&qu ot;);
} else {
if($ad_sec==$ad_sec_query){
$ad_num_query++;
} else {
$ad_num_query='1';
}

if ($ad_num_query>=$ad_ddos_query){
$ad_file=fopen("{$ad_dir}/{$a d_check_file}","w");
$ad_end_defense=$ad_date+$ad_defen se_time;
$ad_string='<?php $ad_end_defense='.$ad_end_defense.'; ?>';
fputs($ad_file,$ad_string);
fclose($ad_fp);
} else {
$ad_file=fopen("{$ad_dir}/{$ad_check_file}","w") ;
$ad_string='<?php $ad_num_query='.$ad_num_query.'; $ad_sec_query='.$ad_sec.'; ?>';
fputs($ad_file,$ad_string);
fclose($ad_fp);
}
}
?>



anti_ddos.php (модуль погашения DDOS атаки):
PHP код:
<?php
function getIP() {
if(getenv("HTTP_CLIENT_IP") and preg_match("/^[0-9\.]*?[0-9\.]+$/is",getenv("HTT P_CLIENT_IP")) and getenv("HTTP_CLIENT_IP")!='127.0.0.1') {
$ip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR") and preg_match("/^[0-9\.]*?[0-9\.]+$/is",getenv("HTT P_X_FORWARDED_FOR")) and getenv("HTTP_X_FORWARDED_FOR")!='127.0.0.1') {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
$ip = getenv("REMOTE_ADDR");
}
return $ip;
}
$ad_ip=getIP();

$ad_source=file("{$ad_dir}/{$ad_black_ file}");
$ad_source=explode(' ',$ad_source[0]);
if (in_array($ad_ip,$ad_source)){die();}

$ad_source=file("{$ad_dir }/{$ad_white_file}");
$ad_source=explode(' ',$ad_source[0]);
if (!in_array($ad_ip,$ad_source)){

$ad_source=file("{$ad_dir}/{$ad _temp_file}");
$ad_source=explode(' ',$ad_source[0]);
if (!in_array($ad_ip,$ad_source)){
$ad_file=fopen("{$ad_dir}/{$ad_te mp_file}","a+");
$ad_string=$ad_ip.' ';
fputs($ad_file,"$ad_string");
fclose($ad_fp);
?>

Сайт в данный момент подвергается DDOS атаке, если Вы не машина-зомби атакующая сайт нажмите на кнопку, иначе Ваш IP (<?=$ad_ip?>) будет заблокирован!!!
<form method="post">
<input type="submit" name="ad_white_ip" value="Кнопка">
</form>

<?php
die();
}
els eif ($_POST['ad_white_ip']){
$ad_file=fopen("{$ad_dir}/{$ad_w hite_file}","a+");
$ad_string=$ad_ip.' ';
fputs($ad_file,"$ad_string");
fclose($ad_fp);
}
el se {
$ad_file=fopen("{$ad_dir}/{$ad_black_file}","a+" );
$ad_string=$ad_ip.' ';
fputs($ad_file,"$ad_string");
fclose($ad_fp);
die() ;
}
}
?>


Также для работы скрипта понадобятся 4 файла check.txt, white_ip.txt, black_ip.txt и all_ip.txt создаем их в этом же каталоге и на все ставим права 666 (чтение и запись).

Желательно также во время атаки списки IP адресов атакующих машин формирующихся в файле black_ip.txt переносить постепенно в файл .htaccess и блокировать их оттуда, тогда нагрузка еще значительно снизится.

Пример файла .htaccess
Код:
Deny from 11.11.11.11 22.22.22.22 и т.д. через пробел

Да чуть не забыл, для подключения скрипта, в начале каждого файла, который может быть подвергнут атаке добавляем строчку:
Код:
require("anti_ddos/index.php");
 Offline
 
Посетить сайт автора
Цитировать
Ответить
Здесь присутствуют: 1 (пользователей: 0, гостей: 1)

« Предыдущая тема | Следующая тема »
 RSS Перейти на форум:
Розыгрыши 728х90

Последние объявления
ФотоЗаголовокГородРазмещено
Неликвиды ОАО «Алтай-Кокс»
• Хозяйство - Сырье и материалы Цена: 1 1
Барнаул10.11.2017
(на 1 месяц)
Универсальный гипермаркет Gecsa
• Развлечения - Туризм Цена: 1 1
Казань06.11.2017
(на 24 месяца)
Неликвиды АО «ЕВРАЗ КГОК»
• Хозяйство - Сырье и материалы Цена: 1 1
Другой31.10.2017
(на 1 месяц)
ООО «Торговый дом «ФосАгро» реализует неликвиды
• Хозяйство - Оборудование Цена: 1 1
Другой26.10.2017
(на 1 месяц)
Компания "УралМеталлЭнерго" реализует складские остатки труб
• Хозяйство - Сырье и материалы Цена: 1 1
Челябинск24.10.2017
(на 12 месяцев)
Облако тегов тем форума
Мобильный телефон, Гайд о паладине (Холи,Ретри) PvP MoP 5.1.0, NVIDIA GeForce GTX 980 и 970, Мстители / The Avengers (2012), Adrenaline: скрипт рескилл, таргет, hold, Как установить модели для CS?, куда копировать файлы оружия, игроков, звуков?, Java Service, World of Tanks - об установке шкурок, иконок, ангаров и прочего, Lineage 2 Ghost Hunter. (официальная версия), Адреналин: скрипт академика 1 - 40 лвл, CSourceRu, Квест на Human Knight, Прототип Skynet создан, StarCraft II - обзор грядущего обновления 1.1, Создание уникального питомца
Главная Статьи Файлы Форум Ссылки Новости Фотогалерея Объявления Видео Файлобменник Гороскоп Поиск в сети Радио Пробки
Яндекс.Метрика
Powered by PHP-Fusion copyright © 2002 - 2017 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.