Pull to refresh

Comments 43

Интересный модуль, обязательно протестирую!
Буквально вчера в 23:50 закончилась DDoS атака на один из ресурсов который я администрирую :)

От атаки удалось отбиться средствами iptables (ограничение на кол-во одновременных коннектов с одного IP + ограничение на connection rate с одного IP) + кеширование атакуемых страниц.

Всерьёз начинал думать про защиту через cookies, но атака к этому момент уже закончилась (правда не в виде модуля, а через встроенный perl).
сейчас нет времени и возможностей провести нагрузочное тестирование, но было бы интересно, насколько % изменяется производительность nginx с данным модулем и без него.

для встроенного perl даже есть аналогичный модуль, но он не спасет от парсинга контента regexp'ом + нужно вкомпиливать поддержку perl.
С радостью бы потестировал. Ни у кого нет ботнета, на пару дней погонять?
Имеется небольшой (около 100Мб/сек) — пишите в личку. Только как-нибудь подтвердите, что сервер ваш, а то мало ли что…
прямо сейчас идёт ддос атака, будем тестировать
Выдаёт 403 Forbidden. Настройки использую 1 в 1 из первого примера, nginx 1.1.4. ЧЯДНТ?
давайте ваш контакт в почту, secret выставили? что в логах?
сообщество потом уведомите чего и как, ок?
проблема была в том, что nginx собран с поддержкой ipv6
спасибо за тест — ошибка исправлена, теперь можно оставлять поддержку IPv6.
По-моему, проще за 15-30 минут накопить статистику ботов и на firewall'e делать ресет соединения для этих IP/network.
Поведение ботов очень сильно отличается от поведения обычных посетителей.
за это время вам могут положить сервер
Нет. LA незначительно успеет повысится.
А дальше скрипт в автоматическом режиме банит, без участия человека.
UFO just landed and posted this here
LA за какой промежуток времени? :)
1? 5? или 15 минут?
Каждый день, вижу ддосы, которые за 1 минуту до 1500, LA за текущий момент, который высчитывается средним за одну минуту.
Вы не правы и все тут :)
смотря ка кбудут досить и как написан ресурс
завалить можно и за секунды

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

Слабенькие на Вас атаки.
Конкретно вчера имел дело с DDOS'ом, в моём случае блокировал IP адреса каждые 5 минут (по логам nginx'а), практически не помогало — новые адреса появлялись практически в течении всего времени атаки, в большинстве случаев время «активной» жизни каждого адреса исчислялось единицами минут (потом смотрел по счетчикам на iptables).
И было всего порядка 100 IP адресов, с которых атака шла постоянно.
Медленно блокировали.
На VDS iptables с большими списками перестает работать, жалуется на нехватку памяти.
На VPS (виртуалка, причём на чём-то вроде openVZ/Virtuozzo) или действительно на VDS (выделенный сервер)?
В первом случае понятно — хостер поставил ограничения за пределы которых вы не можете выйти.
Но во втором -очень странно. Имея полноценные рутовые права можно совершенно спокойно увеличить максимальный размер таблицы iptables. Другой вопрос, что если надо блокировать много IP адресов и не требуется потом отслеживать активность каждого конкретного адреса, то есть значительно более эффективные способы.
Правильное направление, удачи вам в дальнейшей разработке! Многие очень недооценивают возможности кук при борьбе с ддосом, а с их помощью можно отбивать достаточно мощные аттаки. Ну по крайней мере не дать сайту сложится какое-то время и хоть как, но отвечать на нормальные запросы.
Да, красивое решение. Желаю успехов в развитии!
Очень часто всякие лоики не ставят user agent, в nginx это можно использовать себе на руку:

if ($http_user_agent = ''") {
return 403;
}
иногда работает, но это все-таки грабли ;)
тьфу, костыли, а не грабли.
а что будем делать с full browser stack?
когда доля DoS ботов с full browser stack перевалит за 30%, можно будет озаботиться капчей, но я выше описал свои мысли на тему — «мы выполним JavaScript».
captcha это сразу -30% посетителей. как ни странно боты капчу лучше отгадывают чем большинство граждан этой страны. true story ;)

идея заставить клиента делать существенные вычисления на своей стороне чтобы уменьшить плечо атаки, это вполне разумно. вот только одна загвоздка — что делать когда клиентов ОЧЕНЬ много (десятки, а возможно и сотни тысяч)?

стоит-ли лезть в прилжение и создавать всем клиантам, в том числе и хорошим, такие хлопоты? если можно
ограничить клиента по количеству запросов написав тривиальный частотный анализатор запросов, и отлавливая буратин по распределению. работает, вообще без проблем если не забывать про ajax
статистический анализатор, ограничения L4 уровня никто не отменял — всё это необходимо, модуль выполняет другую задачу — не дает лечь бэкэндам, пока анализаторы собирают статистику и отсеивают подозрительных.
всё можно варьировать, и капчу можно показывать только тем кто слишком активен и прочее и прочее, но согласитесь, это должно быть в инфраструктуре, коммерческом решении, здесь же предлагается инструмент, который поможет не по всех, но во многих тривиальных случаях.
если он заставит авторов ботнетов потратить время и силы на разработку — profit! ;)
Да, безусловно это профит! Тут спору нет и за этот профит вам спасибо большое и карма++.
Я просто предлагаю возможности развития вашей идее. Набор инструментов лучше одной отвертки.
в случае с FBS будет эффективно соместить частотный и поведенческий анализ + немного интерактива.
а где подписаться на новости вашей разработки?
к сожалению(счастью?), я сейчас не занимаюсь разработками в этой области, просто наконец-то дошли руки привести в порядок старые наработки и поделиться с людьми.
Это все круто, если атака «детская».
А если это ДДОС на сетевую структуру емкостью под 40Гбит\с, то вам даже никто защититься не даст — вас отрубят аплинки.
Такой DDoS достаточно безопасен. Как правило это вариации на тему udp flood, иногда с использованием какой-нибудь оригинальной техники XYZ amplification. Резать полосу по битмаске — тут никакого кунгфу не надо.
Да, атаки разрушительны но они достаточно краткосрочны — несколько десятков часов максимум. Вот хорошо поставленный L7 flood с FBS и мутацией который проходит сквозь Arbor как нож сквозь масло и который нельзя в принципе сигнатурой порезать — вот это TRUE SKILL. И продолжаться это может месяцами. Размер ущерба сами можете представить ;)

Резать полосу по битмаске — тут никакого кунгфу не надо
Математику тут простая, чтоб эти 40Ж не пришли к вам, они должны прийти к кому-то другому, в любом случае они будут проходит через провайдера, который в определенный момент перестанет вас анонсировать.
Бинт — это круто, если порезали палец, а если оторвало руку — то уже не поможет, факт. Но к чему это?
Turbid: даже не знаю что ответить. Вещи-же очевидные. Контракты на много полосы у множества провайдеров.
>После установки cookies перенаправлять пользователя (заставить отправить нам полученные cookies) используя код ответа 200 и HTML тег Meta «refresh

Сильно неправильный метод:
* поисковики не смогут  индексировати такую страницу, роботы социальных сетей не смогут вытягивать анонсы ваших статей, за что SEOшники защищаемого вами сайта будут вам «премного благодарны»
* при достаточно распространенной настройке firefox и explorer вместо переадресации будут орать о том что «свершается непоправимое»

Но а вообще модуль дельный, стоит пилить дпльше…
Каждый сам решает, включать эту опцию или нет, для поисковиков есть whitelist'инг, для RSS можно прописать исключения.
И еще — подобная техника используется в одном из режимов Cisco Guard.
Ваш скрипт помог преодолеть серьезный DDoS, только вот whitelist почему-то не хочет работать :(
Прошу прощения за предыдущее сообщение. Все наладили и все работает отлично.
Еще раз спасибо за модуль!
Sign up to leave a comment.

Articles