Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

21.11.2008, 00:51
|
|
Постоянный
Регистрация: 23.12.2005
Сообщений: 363
Провел на форуме: 1024832
Репутация:
233
|
|
Анти ДДОС
Принцип действия я думаю, понятен, вот сам код:
К примеру, создадим каталог 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
|
|
|

21.11.2008, 00:54
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
А ты не подумал что при ддосе бот сначало коннектится к серверу а уже только потом выполняется скрипт?
|
|
|

21.11.2008, 00:58
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
Это не анти ддос, это анти http-flood. Лучше уж php + ip tables
|
|
|

21.11.2008, 07:49
|
|
Новичок
Регистрация: 06.05.2007
Сообщений: 11
Провел на форуме: 65891
Репутация:
0
|
|
в начале каждого файла, который может быть подвергнут атаке добавляем строчку:
к тому же, например, в картинку или в css/js/etc файлы уже не вставишь, хотя эти файлы тоже могут быть подвергнуты атаке
|
|
|

21.11.2008, 08:47
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
это полный бред ... Тебя от дддоса ничего не спасёт ибо еси это норм ддос то он атткует сервер а не скрипт ....
|
|
|

21.11.2008, 09:37
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
Провел на форуме: 2127116
Репутация:
383
|
|
А что ? Нормально...
Где написано что тушение пожара огнеметом это неправильно?
А почему не используется JavaScript ?
|
|
|

30.11.2008, 14:48
|
|
Новичок
Регистрация: 24.11.2008
Сообщений: 15
Провел на форуме: 284596
Репутация:
67
|
|
Смешно =)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|