Принцип действия я думаю, понятен, вот сам код: К примеру, создадим каталог 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"); } 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}/{$ad_check_file}","w"); $ad_end_defense=$ad_date+$ad_defense_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("HTTP_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("HTTP_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_temp_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(); } elseif ($_POST['ad_white_ip']){ $ad_file=fopen("{$ad_dir}/{$ad_white_file}","a+"); $ad_string=$ad_ip.' '; fputs($ad_file,"$ad_string"); fclose($ad_fp); } else { $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"); © ZiK
А ты не подумал что при ддосе бот сначало коннектится к серверу а уже только потом выполняется скрипт?
к тому же, например, в картинку или в css/js/etc файлы уже не вставишь, хотя эти файлы тоже могут быть подвергнуты атаке
это полный бред ... Тебя от дддоса ничего не спасёт ибо еси это норм ддос то он атткует сервер а не скрипт ....
А что ? Нормально... Где написано что тушение пожара огнеметом это неправильно? А почему не используется JavaScript ?