[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от DDOS
Anti_DDOS
В последнее время, мой сайт все чаще подвергается ddos атакам (конкуренция), написал вот такой скрипт защиты


include_once 'files/connect.php';
$antiddos = mysql_query("SELECT * FROM ".TABLES_ANTIDDOS." WHERE `ip`='{$_SERVER['REMOTE_ADDR']}' LIMIT 1");
$antiddos2 = mysql_fetch_array($antiddos);
$idddos = $antiddos2['id'];
$time1ddos = $antiddos2['time1'];
$nubmerddos = $antiddos2['number'];
$blockddos = $antiddos2['block'];
$timeblockddos = $antiddos2['timeblock'];
$secddos = gettimeofday("sec");
if(empty($idddos)){
$insddos= mysql_query("INSERT ".TABLES_ANTIDDOS." SET `ip`='{$_SERVER['REMOTE_ADDR']}', `time1`='$secddos'");
//если ip не засвечено вносим в базу
} else {
if($blockddos == 1){
//если ip заблокировано проверяем время до разблокировки
if($timeblockddos < $secddos){
$updddos= mysql_query("UPDATE ".TABLES_ANTIDDOS." SET `block`='0' WHERE `id`='$idddos'");
//если бан прошел, разблокируем ip
} else {
echo 'Вы были слишком активны, ваш ip заблокирован на 10 минут';
exit;
//если бан существует выводим информацию о блоке, останавливаем скрипт
}
}
else {
//если ip не заблокировано проверяем время переходов
if(($secddos - $time1ddos) < 0.7){
//если время меньше 7 десятых секунды плюсуем к числу 1
$nubmerddos = $nubmerddos+1;
$updddos= mysql_query("UPDATE ".TABLES_ANTIDDOS." SET `time1`='$secddos', `number`='$nubmerddos' WHERE `id`='$idddos'");
if($nubmerddos == 20){
//если число равно 20, блочим ip
$secddos = $secddos + 600;
$updddos= mysql_query("UPDATE ".TABLES_ANTIDDOS." SET `number`='0', `block`='1', `timeblock`='$secddos' WHERE `id`='$idddos'");
}
}
else {
if(($secddos - $time1ddos) > 2){
$updddos= mysql_query("UPDATE ".TABLES_ANTIDDOS." SET `time1`='$secddos' WHERE `id`='$idddos'");
$nubmerddos = $nubmerddos-1;
if($nubmerddos > 0){
//если время между переходами больше 2 секунд а так же число больше 0, отнимаем 1 от числа, вписываем в базу
$updddos= mysql_query("UPDATE ".TABLES_ANTIDDOS." SET `number`='$nubmerddos' WHERE `id`='$idddos'");
}
}
}
}
}



такая простенькая защита на php, но работает стабильно.
Что скажите по данному скрипту? может у вас есть более эфективный вариант защиты?



Спустя 7 часов, 35 минут, 24 секунды (10.03.2012 - 15:15) Anti_DDOS написал(а):
Скрипт опробован, работает на ура, после очередной попытки ddosa забанил 50 хостов, атакующий остановил атаку, увидев что не чего не получается, да и на сайт этот дос не повлиял)
Всем кто искал простенькую защиту на php рекомендую, ресурсов жрет данный скрипт минимально по сравнению с тем что вам предлогают в интернете!

Спустя 42 минуты, 20 секунд (10.03.2012 - 15:57) Игорь_Vasinsky написал(а):
я думаю мало один IP хватать для блокировки, т.к. на одном IP к примеру в моём городе, оч много компов может висеть - и юзеры обломятся ни за что не про что.

Нужно ещё как можно больше данных о ддосере хватать, например разрешение экрана, ось, часовой пояс, браузер, короче всё что тока можно.

Спустя 19 часов, 22 минуты (11.03.2012 - 11:19) twin написал(а):
Вы наверное путаете DOS и DDOS. От последнего этот скрипт шо слону дробинка.

Спустя 6 минут, 39 секунд (11.03.2012 - 11:26) alex12060 написал(а):
Если канал слабый, то эта защита просто так, для вида. Да и ДДОС в 50 зомбаков - это не ДДоС в общем-то smile.gif

Попробуй, закажи ДДоС своего сайта где-нить на 5-6К ботнета, вот и узнаешь, насколько хорошо справился твой скрипт.

Спустя 3 часа, 28 минут, 28 секунд (11.03.2012 - 14:54) Nikitian написал(а):
Можно попытаться и с одного ip даже при такой "защите" повалить сервак. И это будет не проблема скриптов, а сервера.

Спустя 20 дней, 17 часов, 56 минут, 10 секунд (1.04.2012 - 08:50) maximka787 написал(а):
twin прав, тут защита от DOS однозначно. В случае с ddos используется фильтрация на уровне оборудования. Это самый современный подход и также нужно использовать кеширование в помощь серверу. Также может помочь htacess, наполняющийся подозрительными ip, чтобы оградить скрипт от 6 твоих запросов, но проверку ip очень сложно сделать, тк забанить можно легко половину нормальных пользователей.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.