Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Погашение DDOS-атаки http флудом (https://forum.antichat.xyz/showthread.php?t=48981)

ant0ha 13.09.2007 21:36

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

Идея написания подобной системы возникла у меня, после того как в очередной раз один из моих сайтов подвергся DDOS атаке, в то время я висел на обычном хостинге, где за каждый мегабайт трафика приходилось платить, и сумма в итоге итак выходила не маленькая, а тут еще эта DDOS атака, хорошо еще, что я в тот момент был рядом и вовремя успел отключить доступ к сайту. Тут конечно же в аську стукнул тот самый ддосер с требованиями заплатить, его я само собой послал подальше. Как понимаете, отключение сайта и пережидание атаки это не выход, она может возобновиться когда угодно, и вас рядом может не оказаться, поэтому с этим нужно бороться.

Сразу предупреждаю, система написана на 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");
} 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_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");
Вот в общем и все, буду рад если будут дополнения =)

© ant0ha

groundhog 14.09.2007 10:18

Цитата:

Система обнаружения и погашения DDOS-атаки http флудом
Не слишком ли громкое название? Без обид - эта поделка не имеет никакого отношения к системам обнаружения и погашения DDOS-атак. Это нонсенс защищаться от DDOS атак на атакуемом узле, да и ещё и внутри самого ресурса... Т.е. в данном случае, ты выбрал самое неподходящее место для реализации защиты. Меры защиты тем эффективнее, чем ближе они к атакующим узлам. Так что, именно в данном случае эффективнее будет уклонение от атаки... И я тысячу раз повторял, ни одна поделка вроде этой никогда не будет эффективнее чем статистический или сигнатурный анализ трафика, причём аппаратными средствами. Ты не препятствуешь атаке никак, твой апач как порождал соединения, так он их и будет порождать, ещё и будет файловую систему месить добавляя и удаляя что-то из файлов... Единственное - ты немного снизишь трафик, т.к. вместо полноценных страниц боты будут получать мат от твоей поделки. Хотя с другой стороны - чем меньше они в одном потоке будут получать, тем чаще они такие потоки будут порождать... В общем, курам насмех такие "защищалки"...

Alexsize 14.09.2007 10:39

Цитата:

Сообщение от groundhog
Не слишком ли громкое название? Без обид - эта поделка не имеет никакого отношения к системам обнаружения и погашения DDOS-атак. Это нонсенс защищаться от DDOS атак на атакуемом узле, да и ещё и внутри самого ресурса... Т.е. в данном случае, ты выбрал самое неподходящее место для реализации защиты. Меры защиты тем эффективнее, чем ближе они к атакующим узлам. Так что, именно в данном случае эффективнее будет уклонение от атаки... И я тысячу раз повторял, ни одна поделка вроде этой никогда не будет эффективнее чем статистический или сигнатурный анализ трафика, причём аппаратными средствами. Ты не препятствуешь атаке никак, твой апач как порождал соединения, так он их и будет порождать, ещё и будет файловую систему месить добавляя и удаляя что-то из файлов... Единственное - ты немного снизишь трафик, т.к. вместо полноценных страниц боты будут получать мат от твоей поделки. Хотя с другой стороны - чем меньше они в одном потоке будут получать, тем чаще они такие потоки будут порождать... В общем, курам насмех такие "защищалки"...

Ты так хорошо рассуждаешь... знаешь, когда на твой сайт начинаеться ДДОС атака ты уже не думешь, что
Цитата:

Меры защиты тем эффективнее, чем ближе они к атакующим узлам.
Ибо если подумать головным мозгом, то при ботнете в 10к ботов ты таких "мер" принять не сможешь никогда. Я тебе даже больше скажу: лично ты таких мер не сможешь принять и при ботнете в 10 ботов. Так что не забывай - критикуя, предлагай. Просто обосрать чужой способ может каждый.

madnet 14.09.2007 10:45

Впринципе groundhog прав, плюс еще небольшой нюанс, я не весь скрипт просматривал, а только поверхностно, но если я не ошибся, то процедура определения IP, которую ты любезно одолжил у существующего скрипта, явно не преднозаченого для ДДОС блокировки, позволяет подделать IP, вследствии чего его можно генерировать рандомно хоть с одного хоста и хер ты кого забаниш!

Да и еще, максимум, что можно сделать определив такой ДДОС это отключить автоматически в панеле пользователя доступ к сайту, тем самым сэкоомив денюшку, но все это конечно косается детского ддоса ибо от серъезного ты таким способом не закроешся, а еще можно в ответ на каждый из IP ддосеров посылать свой БОТНЕТ и убивать их поодному =) (шутка).

groundhog 14.09.2007 11:13

Цитата:

Ибо если подумать головным мозгом, то при ботнете в 10к ботов ты таких "мер" принять не сможешь никогда. Я тебе даже больше скажу: лично ты таких мер не сможешь принять и при ботнете в 10 ботов. Так что не забывай - критикуя, предлагай. Просто обосрать чужой способ может каждый.
Alexsize, умерь свой пыл, брат. Я написал какая мера защиты - интеграция на уровне провайдера комбинированных статистических и сигнатурных анализаторов трафика, которые при каждой новой волне будут банить ботов, причём банить будут на близлежащих маршрутизаторах, а не на сервере с атакуемым ресурсом. И чем глобальнее будет такая схема, тем эффективнее будет мера борьбы - только одна волна будет проходить в одну подсеть с одного бот-нета.

Цитата:

Ибо если подумать головным мозгом, то при ботнете в 10к ботов ты таких "мер" принять не сможешь никогда. Я тебе даже больше скажу: лично ты таких мер не сможешь принять и при ботнете в 10 ботов. Так что не забывай - критикуя, предлагай.
Моском подумать не могу - ибо зохавали. Тот способ, что я предложил как раз и расчитан на глобальные атаки, фишка в том, что такая атака будет проходить только одной волной, при том, что такая волна по мере достижения атакуемого ресурса будет растворяться... Поэтому ты мне "...даже больше не говори...", а иди учи мат. часть.

Цитата:

Просто обосрать чужой способ может каждый.
Я тебя тоже люблю.

И прислушайся к совету madnet... Как он верно подметил - переменные берутся из среды окружения... Такие переменные элементарно подделываются программными методами... Так что эта пукалка защитит только от ботнета в 10 ботов, а реального ботовода с гигантским ботнетом она только повеселит...

ant0ha 14.09.2007 13:25

Цитата:

Сообщение от groundhog
Это нонсенс защищаться от DDOS атак на атакуемом узле, да и ещё и внутри самого ресурса... Т.е. в данном случае, ты выбрал самое неподходящее место для реализации защиты. Меры защиты тем эффективнее, чем ближе они к атакующим узлам. Так что, именно в данном случае эффективнее будет уклонение от атаки...

Это единственное место, где можно развернуть защиту в данном случае, и уклонение от атаки это не выход, если есть возможность с ней бороться.
Цитата:

Сообщение от groundhog
И я тысячу раз повторял, ни одна поделка вроде этой никогда не будет эффективнее чем статистический или сигнатурный анализ трафика, причём аппаратными средствами. Ты не препятствуешь атаке никак, твой апач как порождал соединения, так он их и будет порождать, ещё и будет файловую систему месить добавляя и удаляя что-то из файлов... Единственное - ты немного снизишь трафик, т.к. вместо полноценных страниц боты будут получать мат от твоей поделки. Хотя с другой стороны - чем меньше они в одном потоке будут получать, тем чаще они такие потоки будут порождать... В общем, курам насмех такие "защищалки"...

Если сайт крупный, иначе смысл его ддосить, то потребление трафика будет в сотни-тысячи раз меньше, и потом уже после двух запросов ддос машина будет добавлена в блеклист и от нее не будит никакого толку.
Цитата:

Сообщение от madnet
процедура определения IP, которую ты любезно одолжил у существующего скрипта, явно не преднозаченого для ДДОС блокировки, позволяет подделать IP, вследствии чего его можно генерировать рандомно хоть с одного хоста и хер ты кого забаниш!

Этот момент не совсем понял, насчет подделки IP, можно поподробнее?
Цитата:

Сообщение от madnet
а еще можно в ответ на каждый из IP ддосеров посылать свой БОТНЕТ и убивать их поодному =) (шутка)

Лучше стенка на стенку, боты против ботов вот это будет зрелище =)
Цитата:

Сообщение от groundhog
Я написал какая мера защиты - интеграция на уровне провайдера комбинированных статистических и сигнатурных анализаторов трафика, которые при каждой новой волне будут банить ботов, причём банить будут на близлежащих маршрутизаторах, а не на сервере с атакуемым ресурсом. И чем глобальнее будет такая схема, тем эффективнее будет мера борьбы - только одна волна будет проходить в одну подсеть с одного бот-нета.

При чем тут на уровне провайдера, им вообще до твоего сайта дела никакого нет, им проще твой аккаунт на пару дней вырубить.

groundhog 14.09.2007 13:41

Цитата:

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

Цитата:

Если сайт крупный, иначе смысл его ддосить, то потребление трафика будет в сотни-тысячи раз меньше, и потом уже после двух запросов ддос машина будет добавлена в блеклист и от нее не будит никакого толку.
Ты хоть понимаешь абсурдность этого утверждения? Соединения будут проходить чаще, ресурсы ВЕБ-СЕРВЕРА будут истощяться. Веб-сервер будет продолажать принимать запросы от ботов, и будет продолжать дёргать твою страницу! По умолчанию, одному запускаемому скрипту в PHP5 отводится 128 Мб памяти, прикинь во что это выльется при большом количестве запросов? Понту от твоего блек-листа? Кто его обрабатывает? Веб сервер? Или твой скрипт? Так твой скрипт по прошествии некоторого времени просто не будет выполняться из-за того что веб-сервер сдохнет!

Цитата:

Этот момент не совсем понял, насчет подделки IP, можно поподробнее?
Ты берёшь переменные, которые посылаются в хидерах запроса, то, что там посылается - фигня подделать.

Цитата:

При чем тут на уровне провайдера, им вообще до твоего сайта дела никакого нет, им проще твой аккаунт на пару дней вырубить.
Пральна мыслишь, чувак. Так оно и будет, и провайдерский одмин будет долго ржать, узнав как ты от доса защищался...

Всё это я говорю к тому, что не надо громких названий, и надо быть серьёзнее, а если вы не представляете о чём идёт речь - так лучше вообще про это не писать! Предлагаю переименовать тему в "DDOS-пукалка или как рассмешить провайдерского одмина".

Ponchik 14.09.2007 13:47

Некоторые файерволлы поддерживают функцию блокировки IP через командную чтроку, ну тоесть на компе стоит фаер, выполняем команду filewall -banip 11.222.33.444 и он банит его, токо я непомню какие фаерволлы поддерживают такие функции...
Так вот... Вместо того, чтобы заносить в .htaccess можно банить сразу доступ к компу, и тогда уже реально защититься от самого настояещего DDoS (если атакуют 2-3 компа :D)

Deem3n® 14.09.2007 13:59

Ога mod_evasive и снорт отдыхают. ппц

ant0ha 14.09.2007 14:01

Цитата:

Сообщение от groundhog
Ога, и платить деньги за левый трафик...

Трафа практически не будет, уклон какраз и был на это.
Цитата:

Сообщение от groundhog
Ты хоть понимаешь абсурдность этого утверждения? Соединения будут проходить чаще, ресурсы ВЕБ-СЕРВЕРА будут истощяться. Веб-сервер будет продолажать принимать запросы от ботов, и будет продолжать дёргать твою страницу! По умолчанию, одному запускаемому скрипту в PHP5 отводится 128 Мб памяти, прикинь во что это выльется при большом количестве запросов? Понту от твоего блек-листа? Кто его обрабатывает? Веб сервер? Или твой скрипт? Так твой скрипт по прошествии некоторого времени просто не будет выполняться из-за того что веб-сервер сдохнет!

Повторюсь
Цитата:

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

Сообщение от groundhog
Ты берёшь переменные, которые посылаются в хидерах запроса, то, что там посылается - фигня подделать.

И что ты предлагаешь брать просто REMOTE_ADDR, а как же тогда прокси?
Цитата:

Сообщение от groundhog
Всё это я говорю к тому, что не надо громких названий, и надо быть серьёзнее, а если вы не представляете о чём идёт речь - так лучше вообще про это не писать! Предлагаю переименовать тему в "DDOS-пукалка или как рассмешить провайдерского одмина".

Я и не писал что она от всех DDOS атак спасет, вот http флуд она погасит.

groundhog 14.09.2007 14:10

Цитата:

И что ты предлагаешь...
Моё предложение - прекратить этот цирк и закрыть тему.

fucker"ok 14.09.2007 14:10

Лучше сразу добавлять злые адреса в .httaccess , а то так ещё php-cgi будет вызываться. Обычно на хостингах есть лимит на память, и тп. Когда меня ДДОСили, то ДДОС включили всего на несколько минут, а сервер запросы обрабатывал до утра, пока я deny from all не сделал и переждал. Так-что если ДДОС серьёзный, то тут никакая подобная защита не спасёт. Надо писать в суппорт и пусть они на рутере отрубают досеров.
Но все-равно от малолеток с программой "взлом интернета" и такой способ сгодиться.
++
Цитата:

icmp и udp на уровне обычного владельца веб сайта защититься невозможно.
А это уже не твоя проблема будет, а всего сервера. Чтобы вывести твой сайт из строя им придётся весь сервер задосить, что куда сложнее, чем превысить лимиты памяти для конкретного пользователя :)

tolsty7 14.09.2007 14:15

Название, конечно, громкое, но на лицо - оперативное решение насущной проблемы.

groundhog 14.09.2007 14:20

Цитата:

Название, конечно, громкое, но на лицо - оперативное решение насущной проблемы.
Не вижу решения... Таким "решением" моя бабушка от Митника в своё время защищалась, и то безуспешно... В то время как тебя досят - писать в файл? Это по вашему решение? Уж хоть бы, как правильно заметил, фукерок - .htaccess на эту директорию создавали при привышении нагрузки...

tolsty7 14.09.2007 14:33

Цитата:

Сообщение от groundhog
Не вижу решения...

Спросим автора - достиг ли он целей, которые ставил когда писал скрипт?

Егорыч+++ 14.09.2007 14:53

Безусловно подобный скрипт не погасит атаку никак. Но это не значит, что на самом сервере ничего сделать нельзя. Просто надо немного по другому подойти к этому делу.

ant0ha 14.09.2007 14:54

Цитата:

Сообщение от tolsty7
Спросим автора - достиг ли он целей, которые ставил когда писал скрипт?

Иначе бы я его тут не выложил, от 100-200 машин реально спасет, больше испытывать не приходилось, да и зачастую, если ддосят не на заказ в атаке одновременно больше машин и не участвует, а чтобы припугнуть этого количества вполне достаточно.

IIAHbI4 14.09.2007 15:01

index.php

remote file include.

PHP код:

Line 33$ad_file=fopen("{$ad_dir}/{$ad_check_file}","w");

 
Line 39$ad_file=fopen("{$ad_dir}/{$ad_check_file}","w"); 

SQL inj

Цитата:

Line 9: $ad_sec_query=0; // $check_file

Line 26: if($ad_sec==$ad_sec_query){

Line 27: $ad_num_query++;

Line 29: $ad_num_query='1';

Line 32: if ($ad_num_query>=$ad_ddos_query){


Line 40: $ad_string='<?php $ad_num_query='.$ad_num_query.'; $ad_sec_query='.$ad_sec.'; ?>';

ant0ha 14.09.2007 17:15

Цитата:

Сообщение от IIAHbI4
remote file include.

Смотри внимательней, эти параметры заданы в начале, их не подделать:
PHP код:

$ad_dir='anti_ddos'// каталог со скриптами 
$ad_check_file='check.txt'// файл для записи текущего состояния во время мониторинга 

Цитата:

Сообщение от IIAHbI4
SQL inj

Издеваешься =), там sql не используется.

Ch3ck 14.09.2007 19:03

Во-первых: Где-то этот принцип я видел уже...
Во-вторых: по-моему, тоже самое, что и
PHP код:

<?php
$ip
=$_SERVER['REMOTE_ADDR'];
if(
$ip=='127.0.0.1'){
echo(
"На*** надо...");
} else { echo(
Дорогая!); }
?>


ant0ha 15.09.2007 00:23

Цитата:

Сообщение от Basurman
Мое мнение - от этого скрипта сервак загнется быстрее

Ерунды то не говори

HTTP флуд – это когда на сайт идет куча запросов по http-протоколу которые сервер не успевает обрабатывать. Если хорошенько подумать то что больше будет загружать сервер – открытие странички сайта к примеру с кучей запросов к мускл как часто бывает, картинками и т.д. или выполнения двух строчек на пхп которые займут сотые доли секунды. Я думаю второе, основной сайт то уже грузиться не будит.

К примеру допустим что нас атакует 500 машин, в секунду сервер обработает в среднем полсотни таких запросов, и тогда уже через 10 секунд все сервера будут в блэке, переносим их все в .htaccess и про атаку можно забыть.

k1b0rg 17.09.2007 11:33

А механизм определения откуда спиздил? случайно не с ipb?
Хуля толку, если твой скрипт, заддержит ддос тока на один запрос. Хакер отсылает в заголовке HTTP_CLIENT_IP любой адресс, жмёт на твою кнопку антиддоса, его ип записывается в белые...И дальше начинает ддосить, посылая еще в пакете данные ип.

ant0ha 17.09.2007 13:40

HTTP_CLIENT_IP убрал из первого поста
Цитата:

Сообщение от k1b0rg
А механизм определения откуда спиздил? случайно не с ipb?

хз откуда, он не тока в ipb используется

NOmeR1 17.09.2007 18:34

PHP код:

<?
session_start
();
if(
$_SESSION['AntiDdos'] == time())
{
 echo(
'Хрен вам, ддосерам');
}
else
{
 
$_SESSION['AntiDdos'] = time();
 echo(
'Ддоса, как я вижу, нет?');
}
?>

Только что написал лучшую защиту от ддоса :)

KEZ 19.09.2007 21:48

от такого уровня HTTP DDoS'а спасет SSL-протокол на сервере.

k1b0rg 19.09.2007 21:57

Цитата:

$apachectl stop
вот 100% защита от http флуда

ant0ha 19.09.2007 22:39

Цитата:

Сообщение от k1b0rg
от такого уровня HTTP DDoS'а спасет SSL-протокол на сервере.

не спорю, но ssl далеко не везде есть

Цитата:

Сообщение от k1b0rg
вот 100% защита от http флуда

а если тебя неделю досить будут

gemaglabin 19.09.2007 22:43

Почему ssl защитит от хттп флуда?Да вы гоните

k1b0rg 19.09.2007 23:09

Цитата:

а если тебя неделю досить будут
Да хоть год. Средство универсальное, новое, нестандартное, хакеры даже не додумаются что против них поставили такую защиту. эт по типу как говорят буржуи (one day explait).

ant0ha 19.09.2007 23:20

Цитата:

Сообщение от gemaglabin
Почему ssl защитит от хттп флуда?Да вы гоните

сделать вход на сайт только по ssl, по нему же вроде не досят ... хотя могу и ошибаться

George767 12.10.2007 21:43

Занятный топик. Комично выглядят те, кто пытаются доказать, что этот способ неспособен предотвратить ддос. К чему эти выражения "статистический или сигнатурный анализ трафика"? И так понятно что кроме 10k ботов ничего не сделаешь. Я этот скрипт слегка модифицировав взял себе ибо у меня на проектах часто встречаются увесистые скрипты с комлпексными обращениями к бд. Естевственно что против профи ничего не сделаешь, однако есть это детский ддос (коим он является в большинстве случаев), то по крайней мере этот скрипт снимет его точно.

Сколько раз мы сами заваливали форумы и гостевухи отправляя на них тысячи post/get запросов?! Этот скрипт способен это предовратить

Developer 12.02.2008 13:06

Мое мнение по всему этому - защита подобного типа может быть полезна, но в случаях самых простых атак. Она не защитит от атаки, но, возможно, хоть немного, но снизит нагрузку на сервер.

По реализации: я думаю, что оптимальным вариантом будет система очков. В базе хранить (IP, LastAccess, Points). При каждом новом запросе смотреть время предыдущего. Если запрос был 10 секунд назад - очки не набавлять, если 5 сек назад - накинуть 1 очко, если 4 сек назад - 2 очка, 3 сек назад - 4 очка, 2 сек назад - 8 очков, 1 сек назад - 16 очков, менее секунды назад - 32 очка. В конфигах выставить значение, при котором баниться IP. И так, если один IP в течение нескольких (напр. 5) минут набирает X (напр. 50) очков, то его IP заносится в .htacces (deny from ip), или же первые три раза предлагается ввести число на картинке, если три раза оно введено неправильно или не введено - опять же, заносим IP в .htacces. Что это нам даст? Сначала отрицательные стороны - это один лишний запрос к БД (но эти запросы очень легкие и при нормальной работе сайта абсолютно никакой роли не играют), генерация картинки (но они выполняется всего 3 раза) и запись в файл (Которая происходит один раз для одного IP). Теперь что мы получаем - адреса, которые слишком часто делают запросы к серверу - будут заблокированы на N минут (очистка списка забаненных со временем - уже другой скрипт, который желательно запускать кроном). Если IP находится в списке заблокированных .htacces, это немного снизит нагрузку на сервер (на каждый запрос с заблокированного IP будет выделяться намного меньше ресурсов, тобишь не будет запускаться интерпретатор PHP, выполняться скрипты, производиться чтение файлов и базы данных; в данном случае будет только открываться новое соединение с сервером).

Из этого всего можно сделать вывод: это лучше, чем ничего. Вреда это серверу не причинит в штатном режиме работы (для новостного сайта с 10 запросами к БД использование такой псевдо-зашиты повысит нагрузку максимум на 5%), зато в ситуации DDoS это, возможно, чем-то и поможет.

Если за вас взялись серьезных дядки - то кроме мега дорогого оборудования и высококвалифицированных специалистов вас ничего не спасет, лучший вариант в данном случае - ждать, когда серьезным дядкам перестанут платить деньги за атаку вашего сайта, ибо 24 часа DDoS стоят порядка больше, чем стипендия студента.

gibson 14.02.2008 19:22

2 Developer ты д*рак? это что тебе крестики нолики что ли?=\ твоя бд первой ляжет и вместе с ней вся твоя система и тогда вообще никто не зайдет на сайт.
Цитата:

.htacces
Цитата:

ибо 24 часа DDoS стоят порядка больше, чем стипендия студента.
у тебя/знакомых стипендия 20$?

Delimiter 15.02.2008 00:01

какое громкое название.... И КАКИМ ЭТО ТЕОРЕТИЧЕСКИМ ИЛИ ПРАКТИЧЕСКИМ СПОСОБОМ МОЖНО С ПОМОЩЬЮ http избавиться от syn-flood атаки на 80-й порт???

БРЕД!!! Там не будет не то что http заголовков там и реальных IP не будет , или тут придумывают защиту от скрипт-кидисов???

Isis 15.02.2008 02:54

PHP код:

<?php
    error_reporting
(0);

    
$google        strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot")        !== false;
    
$yandex        strpos($_SERVER['HTTP_USER_AGENT'], "Yandex")            !== false;
    
$rambler    strpos($_SERVER['HTTP_USER_AGENT'], "StackRambler")    !== false;
    
$aport        strpos($_SERVER['HTTP_USER_AGENT'], "Aport")            !== false;
    
$msn        strpos($_SERVER['HTTP_USER_AGENT'], "MSN")            !== false;
    
$yahoo        strpos($_SERVER['HTTP_USER_AGENT'], "Yahoo")            !== false;
    
$ip            strpos($_SERVER['REMOTE_ADDR'], '66.249.64.')            !== false;
    
$ip2        strpos($_SERVER['REMOTE_ADDR'], '81.19.64.')            !== false;
    
$ip3        strpos($_SERVER['REMOTE_ADDR'], '89.208.19.')            !== false;
    
$ip4        strpos($_SERVER['REMOTE_ADDR'], '213.180.206.')        !== false;
    
$ip5        strpos($_SERVER['REMOTE_ADDR'], '72.30.0.')            !== false;
    
$ip6        strpos($_SERVER['REMOTE_ADDR'], '87.250.230.')        !== false;
    
$ip7        strpos($_SERVER['REMOTE_ADDR'], '213.180.216.')        !== false;
    
$ip8        strpos($_SERVER['REMOTE_ADDR'], '222.0.0.')            !== false;
    
$ip9        strpos($_SERVER['REMOTE_ADDR'], '89.169.147.')        !== false;

    if(!
$google || !$yandex || !$rambler || !$aport || !$msn || !$yahoo || !$ip || !$ip2 || !$ip3 || !$ip4 || !$ip5 || !$ip6 || !$ip7 || !$ip8 || !$ip9)
    {
        
$dir 'xekers/';

        
$cook strrev(sha1('xek' md5(getenv('HTTP_USER_AGENT'))));

        function 
ban()
        {
            
system("/bin/sudo pfctl -t isis -T add " escapeshellarg($_SERVER["REMOTE_ADDR"]));
        }

        if (empty(
$_COOKIE['ddos']))
        {
            
$counter = @file($dir $_SERVER["REMOTE_ADDR"]);
            if(
count($counter) > 10ban();
            
setcookie('ddos'$cooktime() + 9800);
            
$f = @fopen($dir $_SERVER["REMOTE_ADDR"], "a");
            
fwrite($f"request\r\n<br />");
            
fclose($f);
            
header('Location: ' $_SERVER['PHP_SELF']);
            die();
        }

        if (
$_COOKIE['ddos'] !== $cook)
        {
            
ban();
            die();
        }

        if (
$_COOKIE['ddos'] == $cook)
        {
            
system("/bin/sudo pfctl -t isis -T del " $_SERVER["REMOTE_ADDR"]);
            @
unlink($dir $_SERVER["REMOTE_ADDR"]);
        }
    }
?>

© Isis :)

Developer 15.02.2008 18:08

Цитата:

if (empty($_COOKIE['ddos']))
Это пять.... Я не знаю как работают боты, но имхо это существа не умеют работать с куками :)
Цитата:

2 Developer ты д*рак? это что тебе крестики нолики что ли?=\ твоя бд первой ляжет и вместе с ней вся твоя система и тогда вообще никто не зайдет на сайт.
Аффтор жжод? :D В среднем на сайте каждая страничка выполняет 10 запросов к БД (при использовании кэширования - от 0 до 5). Система, которую я предлагаю - добавляет всего 1 легкий запрос к БД. Нагрузка возрастает на 5-20%. Это ничто. Многие хостинги держат такие системы как PHP-Nuke с 200 запросами на страницу и 1к посещаемостью, а тут типа 5 запросов, состояние норм, 6 запросов - все, пздц, слишком большая нагрузка?

На счет .htaccess - хватит работать на публику, я прекрасно знаю, как пишется название этого файла, да и к тому же я не статью пишу, а ответный пост и от ошибок никто не застрахован. Умник.

Существует такое понятие, как рациональность. То что я предлагаю, имхо, оправдывает затраты. Это простейшая защита, но для ее построения и использования ресурсы/затраты нужны минимальные.

kisnik 06.07.2008 12:29

А что во всех топиках и форумах где приведен этот скрипт исходник с ошибками?
PHP код:

$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);

открывает дескриптор $ad_file, а закрытие $ad_fp.
Это типа для ламеров что ли.

А вот этот мод , что хуже? И може кто его выложить для windows.


Время: 05:06