Ерунды то не говори HTTP флуд – это когда на сайт идет куча запросов по http-протоколу которые сервер не успевает обрабатывать. Если хорошенько подумать то что больше будет загружать сервер – открытие странички сайта к примеру с кучей запросов к мускл как часто бывает, картинками и т.д. или выполнения двух строчек на пхп которые займут сотые доли секунды. Я думаю второе, основной сайт то уже грузиться не будит. К примеру допустим что нас атакует 500 машин, в секунду сервер обработает в среднем полсотни таких запросов, и тогда уже через 10 секунд все сервера будут в блэке, переносим их все в .htaccess и про атаку можно забыть.
А механизм определения откуда спиздил? случайно не с ipb? Хуля толку, если твой скрипт, заддержит ддос тока на один запрос. Хакер отсылает в заголовке HTTP_CLIENT_IP любой адресс, жмёт на твою кнопку антиддоса, его ип записывается в белые...И дальше начинает ддосить, посылая еще в пакете данные ип.
PHP: <? session_start(); if($_SESSION['AntiDdos'] == time()) { echo('Хрен вам, ддосерам'); } else { $_SESSION['AntiDdos'] = time(); echo('Ддоса, как я вижу, нет?'); } ?> Только что написал лучшую защиту от ддоса
Да хоть год. Средство универсальное, новое, нестандартное, хакеры даже не додумаются что против них поставили такую защиту. эт по типу как говорят буржуи (one day explait).
Занятный топик. Комично выглядят те, кто пытаются доказать, что этот способ неспособен предотвратить ддос. К чему эти выражения "статистический или сигнатурный анализ трафика"? И так понятно что кроме 10k ботов ничего не сделаешь. Я этот скрипт слегка модифицировав взял себе ибо у меня на проектах часто встречаются увесистые скрипты с комлпексными обращениями к бд. Естевственно что против профи ничего не сделаешь, однако есть это детский ддос (коим он является в большинстве случаев), то по крайней мере этот скрипт снимет его точно. Сколько раз мы сами заваливали форумы и гостевухи отправляя на них тысячи post/get запросов?! Этот скрипт способен это предовратить
Мое мнение по всему этому - защита подобного типа может быть полезна, но в случаях самых простых атак. Она не защитит от атаки, но, возможно, хоть немного, но снизит нагрузку на сервер. По реализации: я думаю, что оптимальным вариантом будет система очков. В базе хранить (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 стоят порядка больше, чем стипендия студента.
2 Developer ты д*рак? это что тебе крестики нолики что ли?=\ твоя бд первой ляжет и вместе с ней вся твоя система и тогда вообще никто не зайдет на сайт. у тебя/знакомых стипендия 20$?
какое громкое название.... И КАКИМ ЭТО ТЕОРЕТИЧЕСКИМ ИЛИ ПРАКТИЧЕСКИМ СПОСОБОМ МОЖНО С ПОМОЩЬЮ http избавиться от syn-flood атаки на 80-й порт??? БРЕД!!! Там не будет не то что http заголовков там и реальных IP не будет , или тут придумывают защиту от скрипт-кидисов???
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) > 10) ban(); setcookie('ddos', $cook, time() + 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
Это пять.... Я не знаю как работают боты, но имхо это существа не умеют работать с куками Аффтор жжод? В среднем на сайте каждая страничка выполняет 10 запросов к БД (при использовании кэширования - от 0 до 5). Система, которую я предлагаю - добавляет всего 1 легкий запрос к БД. Нагрузка возрастает на 5-20%. Это ничто. Многие хостинги держат такие системы как PHP-Nuke с 200 запросами на страницу и 1к посещаемостью, а тут типа 5 запросов, состояние норм, 6 запросов - все, пздц, слишком большая нагрузка? На счет .htaccess - хватит работать на публику, я прекрасно знаю, как пишется название этого файла, да и к тому же я не статью пишу, а ответный пост и от ошибок никто не застрахован. Умник. Существует такое понятие, как рациональность. То что я предлагаю, имхо, оправдывает затраты. Это простейшая защита, но для ее построения и использования ресурсы/затраты нужны минимальные.
А что во всех топиках и форумах где приведен этот скрипт исходник с ошибками? 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.