![]() |
Погашение DDOS-атаки http флудом
Система обнаружения и погашения DDOS-атаки http флудом
Идея написания подобной системы возникла у меня, после того как в очередной раз один из моих сайтов подвергся DDOS атаке, в то время я висел на обычном хостинге, где за каждый мегабайт трафика приходилось платить, и сумма в итоге итак выходила не маленькая, а тут еще эта DDOS атака, хорошо еще, что я в тот момент был рядом и вовремя успел отключить доступ к сайту. Тут конечно же в аську стукнул тот самый ддосер с требованиями заплатить, его я само собой послал подальше. Как понимаете, отключение сайта и пережидание атаки это не выход, она может возобновиться когда угодно, и вас рядом может не оказаться, поэтому с этим нужно бороться. Сразу предупреждаю, система написана на php и предназначена только для ослабления атаки http flood, от другого типа ddos атаки, к примеру: icmp и udp на уровне обычного владельца веб сайта защититься невозможно. Вкратце о системе: система включает модуль обнаружения DDOS атаки, который производит постоянный мониторинг загруженности сайта, путем отслеживания количества приходящих запросов в секунду, в случае если количество запросов в секунду превысит 10 (это по умолчанию, можно выставить больше), то подключается модуль погашения атаки, который начинает вычислять IP адреса атакующих машин-зомби и заносить их в блэклист, мониторинг при этом отключается по умолчанию на 1 час. Принцип действия я думаю, понятен, вот сам код: К примеру, создадим каталог anti_ddos и кидаем все скрипты туда: index.php (модуль обнаружения DDOS атаки): PHP код:
PHP код:
Желательно также во время атаки списки IP адресов атакующих машин формирующихся в файле black_ip.txt переносить постепенно в файл .htaccess и блокировать их оттуда, тогда нагрузка еще значительно снизится. Пример файла .htaccess Код:
Deny from 11.11.11.11 22.22.22.22 и т.д. через пробелКод:
require("anti_ddos/index.php");© ant0ha |
Цитата:
|
Цитата:
Цитата:
|
Впринципе groundhog прав, плюс еще небольшой нюанс, я не весь скрипт просматривал, а только поверхностно, но если я не ошибся, то процедура определения IP, которую ты любезно одолжил у существующего скрипта, явно не преднозаченого для ДДОС блокировки, позволяет подделать IP, вследствии чего его можно генерировать рандомно хоть с одного хоста и хер ты кого забаниш!
Да и еще, максимум, что можно сделать определив такой ДДОС это отключить автоматически в панеле пользователя доступ к сайту, тем самым сэкоомив денюшку, но все это конечно косается детского ддоса ибо от серъезного ты таким способом не закроешся, а еще можно в ответ на каждый из IP ддосеров посылать свой БОТНЕТ и убивать их поодному =) (шутка). |
Цитата:
Цитата:
Цитата:
И прислушайся к совету madnet... Как он верно подметил - переменные берутся из среды окружения... Такие переменные элементарно подделываются программными методами... Так что эта пукалка защитит только от ботнета в 10 ботов, а реального ботовода с гигантским ботнетом она только повеселит... |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Всё это я говорю к тому, что не надо громких названий, и надо быть серьёзнее, а если вы не представляете о чём идёт речь - так лучше вообще про это не писать! Предлагаю переименовать тему в "DDOS-пукалка или как рассмешить провайдерского одмина". |
Некоторые файерволлы поддерживают функцию блокировки IP через командную чтроку, ну тоесть на компе стоит фаер, выполняем команду filewall -banip 11.222.33.444 и он банит его, токо я непомню какие фаерволлы поддерживают такие функции...
Так вот... Вместо того, чтобы заносить в .htaccess можно банить сразу доступ к компу, и тогда уже реально защититься от самого настояещего DDoS (если атакуют 2-3 компа :D) |
Ога mod_evasive и снорт отдыхают. ппц
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Лучше сразу добавлять злые адреса в .httaccess , а то так ещё php-cgi будет вызываться. Обычно на хостингах есть лимит на память, и тп. Когда меня ДДОСили, то ДДОС включили всего на несколько минут, а сервер запросы обрабатывал до утра, пока я deny from all не сделал и переждал. Так-что если ДДОС серьёзный, то тут никакая подобная защита не спасёт. Надо писать в суппорт и пусть они на рутере отрубают досеров.
Но все-равно от малолеток с программой "взлом интернета" и такой способ сгодиться. ++ Цитата:
|
Название, конечно, громкое, но на лицо - оперативное решение насущной проблемы.
|
Цитата:
|
Цитата:
|
Безусловно подобный скрипт не погасит атаку никак. Но это не значит, что на самом сервере ничего сделать нельзя. Просто надо немного по другому подойти к этому делу.
|
Цитата:
|
index.php
remote file include. PHP код:
Цитата:
|
Цитата:
PHP код:
Цитата:
|
Во-первых: Где-то этот принцип я видел уже...
Во-вторых: по-моему, тоже самое, что и PHP код:
|
Цитата:
HTTP флуд – это когда на сайт идет куча запросов по http-протоколу которые сервер не успевает обрабатывать. Если хорошенько подумать то что больше будет загружать сервер – открытие странички сайта к примеру с кучей запросов к мускл как часто бывает, картинками и т.д. или выполнения двух строчек на пхп которые займут сотые доли секунды. Я думаю второе, основной сайт то уже грузиться не будит. К примеру допустим что нас атакует 500 машин, в секунду сервер обработает в среднем полсотни таких запросов, и тогда уже через 10 секунд все сервера будут в блэке, переносим их все в .htaccess и про атаку можно забыть. |
А механизм определения откуда спиздил? случайно не с ipb?
Хуля толку, если твой скрипт, заддержит ддос тока на один запрос. Хакер отсылает в заголовке HTTP_CLIENT_IP любой адресс, жмёт на твою кнопку антиддоса, его ип записывается в белые...И дальше начинает ддосить, посылая еще в пакете данные ип. |
HTTP_CLIENT_IP убрал из первого поста
Цитата:
|
PHP код:
|
от такого уровня HTTP DDoS'а спасет SSL-протокол на сервере.
|
Цитата:
|
Цитата:
Цитата:
|
Почему ssl защитит от хттп флуда?Да вы гоните
|
Цитата:
|
Цитата:
|
Занятный топик. Комично выглядят те, кто пытаются доказать, что этот способ неспособен предотвратить ддос. К чему эти выражения "статистический или сигнатурный анализ трафика"? И так понятно что кроме 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 ты д*рак? это что тебе крестики нолики что ли?=\ твоя бд первой ляжет и вместе с ней вся твоя система и тогда вообще никто не зайдет на сайт.
Цитата:
Цитата:
|
какое громкое название.... И КАКИМ ЭТО ТЕОРЕТИЧЕСКИМ ИЛИ ПРАКТИЧЕСКИМ СПОСОБОМ МОЖНО С ПОМОЩЬЮ http избавиться от syn-flood атаки на 80-й порт???
БРЕД!!! Там не будет не то что http заголовков там и реальных IP не будет , или тут придумывают защиту от скрипт-кидисов??? |
PHP код:
|
Цитата:
Цитата:
На счет .htaccess - хватит работать на публику, я прекрасно знаю, как пишется название этого файла, да и к тому же я не статью пишу, а ответный пост и от ошибок никто не застрахован. Умник. Существует такое понятие, как рациональность. То что я предлагаю, имхо, оправдывает затраты. Это простейшая защита, но для ее построения и использования ресурсы/затраты нужны минимальные. |
А что во всех топиках и форумах где приведен этот скрипт исходник с ошибками?
PHP код:
Это типа для ламеров что ли. А вот этот мод , что хуже? И може кто его выложить для windows. |
| Время: 05:06 |