24.03.2013, 14:53
#1
Разведчик
Регистрация: 24.03.2013
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отслежка DDoS для сервера [Любого]
Всем привет, думаю многие DEV-ы сталкивались с DDoS Флудом и спам ботов эт конечно не приятно от школьников / Полудурков, ловить такого рода атак решил выложить небольшой скрит для отлова таких людей, так скажем гайд думаю кому то будет полезен и интересен отследить все и так приступим.
1)Создаем файл .php
Прописываем там:
Код:
<?php foreach ( $HTTP_COOKIE_VARS as $key => $value ) {$key=$value;}
$user_ip_dat = "user_ip.dat";
$user_id_dat = "user_id.dat"; if ( empty ($user_ip)){
if ( getenv ('HTTP_X_forWARDED_for')){
$user_ip= getenv ('HTTP_X_forWARDED_for'); } else {$user_ip= getenv ('REMOTE_ADDR'); }
} else {$user_ip= getenv ('REMOTE_ADDR'); }
$user_agent = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
$user_host = gethostbyaddr ("$user_ip"); $user_date = date ('d\.m\.Y, H:i');
$date = date ('d\.m\.Y');
$general = file ("user_ip.dat");
$count_ip = count ($general); for ( $i = $count_ip; $i >= 0; $i--){ if ($break == "yes"){ break; } list ($user_id_abs,$user_ip_abs,$user_host_abs,$user_agent_abs,$hit,$user_date_abs) = explode ("<>", $general[$i]);
$user_date_abs = substr ( $user_date_abs, 0, 10); if ($user_ip == $user_ip_abs and $user_date_abs == $date){ if ( empty ($user_id) or $user_id == ""){
$user_id = substr ( $user_ip, 0, 3); $user_id .= time (); setcookie ("user_id", $user_id, time () 33333333, "/", "$SERVER_NAME", 0); $i_abs = $i;
$hit_abs = $hit 1;
$agent = "old";
break;
} else { $gener = file ("user_id.dat");
$count_id = count ($gener); for ( $ii = 0; $ii <= $count_id; $ii ){ list ($user_id_abs,$c_name_abs,$c_city_abs,$c_homepage_abs,$c_mail_abs) = explode ("<>", $gener[$ii]); if ($user_id_abs == $user_id){ $i_abs = $i; $hit_abs = $hit 1; $agent = "old"; $break = "yes"; break;
} if ($ii == $count_id){
$i_abs = $i;
$hit_abs = $hit 1;
$agent = "old";
$break = "yes";
break;
}
}
}
} if ($user_ip == $user_ip_abs and $user_date_abs != $date){ if ( empty ($user_id) or $user_id == ""){
$user_id = substr ( $user_ip, 0, 3); $user_id .= time (); setcookie ("user_id", $user_id, time () 33333333, "/", "$SERVER_NAME", 0);
} $hit_abs = 1; $agent = "new"; break;
} if ($i == 0){ if ( empty ($user_id) or $user_id == ""){ $user_id = substr ( $user_ip, 0, 3); $user_id .= time (); setcookie ("user_id", $user_id, time () 33333333, "/", "$SERVER_NAME", 0);
} $hit_abs = 1; $agent="new";
}
} if ( $agent == "new" ){$user_date= date ('d\.m\.Y, H:i'); $user_file = fopen ("user_ip.dat","a "); fputs ($user_file,"$user_id<>$user_ip<>$user_host<>$user_agent<>$hit_abs<>$user_date\n"); fclose ($user_file);
} if ( $agent == "old" ){ $generaladd = file ($user_ip_dat); $fp = fopen ("user_ip.dat","w"); $lines = count ($generaladd); for ( $i = 0 ; $i <= $lines ; $i ){ if ($i != $i_abs) { fputs ($fp,$generaladd[$i]); } else { fputs ($fp,"$user_id<>$user_ip<>$user_host<>$user_agent<>$hit_abs<>$user_date\n"); }
} fclose ($fp);
} ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Статистики</title>
</head> <body> <?php echo"<table align=center width=100% ><tr> <td align=center><font color=ff0000>Ваш IP</font></td> <td align=center><font color=ff0000>Ваш HOST</font></td> <td align=center><font color=ff0000>Последнее посещение</font></td> <td align=center><font color=ff0000>Браузер</font></td> <td align=center><font color=ff0000>Хитов</font></td> </tr><tr> <td align=center>$user_ip</td> <td align=center>$user_host</td> <td align=center>$user_date</td>"; if ( eregi ("MSIE", $user_agent)) { if ( eregi ("Opera", $user_agent)) { echo"<td align=center>Opera</td>"; } else { echo"<td align=center>Explore</td>"; }} else { echo"<td align=center>Netscape</td>"; } echo" <td align=center>$hit_abs</td> </tr> </table>"; ?>
</body>
</html>
2)Создаем 2 файла:
В своем роде это базы данных, где будет храниться вся информация.
Код:
Файлы 'user_ip.dat' и 'user_id.dat' должны быть пустыми.
Код:
Файлы 'user_ip.dat' , 'user_id.dat' , 'имя_файла.php' должны быть в одной дериктории.
Скрипт не проверял ! но он должен работать, так как заканчиваю свой сайт нет времени проверять =)
Ссылка : [
Ссылки могут видеть только зарегистрированные пользователи. ]
Если модераторы сочтут нужным то просьба закрепить тему.
От спасибо не откажусь
27.06.2013, 11:18
#2
Разведчик
Регистрация: 06.03.2013
Сообщений: 23
Популярность: 573
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 7 сообщениях
Re: Отслежка DDoS для сервера [Любого]
Отслежка хорошо. Теперь осталось добавить отправку в баню флудера на пару часов и будет просто класс. А так спасибо за скрипт.
________________
То чувство, кода тебя называют
мальчиком...
Играю везде, во все и сразу.
08.08.2013, 21:58
#3
Сержант
Регистрация: 02.09.2012
Сообщений: 123
Популярность: 32496
Сказал(а) спасибо: 393
Поблагодарили 116 раз(а) в 89 сообщениях
Re: Отслежка DDoS для сервера [Любого]
И добавление спамера в черный список(по айпи)
________________
15.08.2013, 19:05
#4
Разведчик
Регистрация: 02.08.2013
Сообщений: 12
Популярность: 208
Сказал(а) спасибо: 7
Поблагодарили 24 раз(а) в 11 сообщениях
Re: Отслежка DDoS для сервера [Любого]
Для сайта или форума подойдёт? ipb
07.09.2013, 22:20
#5
Разведчик
Регистрация: 23.03.2013
Сообщений: 2
Популярность: 927
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 7 сообщениях
Re: Отслежка DDoS для сервера [Любого]
Сделай скрипт на черный список автоматом.
13.09.2013, 13:44
#6
Пехотинец
Регистрация: 14.07.2009
Сообщений: 54
Популярность: 4020
Сказал(а) спасибо: 243
Поблагодарили 411 раз(а) в 165 сообщениях
Re: Отслежка DDoS для сервера [Любого]
акутуально для dos'a, тысячи айпишников вот так вот парсить - просто жесть.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
G roup I ntenet S ecurity i n R ussia
[Ссылки могут видеть только зарегистрированные пользователи. ]
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 12:44 .