Открою этот раздел не большой заметкой о том как можно победить тупых ddos ботов с кривым referer на уровне nginx, самое вкусное это real-time тоесть в режиме реального времени по сигнатуре.

В рунете гуляет очень много ботнетов с ботами которые делают тупой запрос в корень сайта с рандомным referer — набор произвольных букв и цифр, он вообще не разу не валидный, давайте посмотрим пример, вырезку из access.log:

я не знаю каким местом автор бота думал когда разрабатывал это чудо  XD

но он откровенно говоря — мудак!

не сложно догадаться о том как это дело порезать в том же nginx, валидный referer это:

1. пустой

2. начинающийся с http

на основе этой информации можно соорудить такую конструкцию в nginx, например

Что мы делаем?

1. проверяем наличие referer

2. проверяем валидность referer —  http:// или  https://

В случае если referer проставлен и не попадает под нашу регулярку то отдаем клиенту 403, там уже по желанию (можно 444 но если банить ботов не будете то у вас разрастется количество подключений к серверу т.к 444 вы разрываете соединение и бот каждый раз будет устанавливать новое)

Результат

Таким образом боты режутся в реал тайме на фронтенде с точностью 100% ))) Защита от DDoS в nginx!

 

  14 комментариев в “Защита от DDoS в nginx от тупых ботов с кривым referer”

  1. Автор, я испытываю суровую атаку пару ночей с таким вот ботами и твоя статья смахивает на панацею.

    Но как именно добавить в nginx ваши надстройки? Можно подробнее? Если в nginx.conf запихнуть, то он даже не стартует тогда и вываливается с ошибкой. Даже глупый сапорт хостера не смог мне помочь)

     
  2. Все получилось, просто запихнул этот код почти в самое начало)
    И все же это гениально! Боты теперь просто бьются об nginx и получают свою 499 ошибку и апач даже не страдает. Также поставил mod_vasive, но он не особо себя показал. А ведь даже сервер положили, что SSH с трудом работал, а теперь летает все… чудно.

     
  3. Vlad 444 лучше отдавать

     
    • Если банить то да, если не банить то не стоит так делать у вас сокетов полу открытых будет огромное количество, из за того что вы закрываете соединение каждый раз а боты будут устанавливать новое с каждым request

       
  4. Есть проблема с данной конструкцией, у некоторых сайтов перестают работать вложенные категории, а у некоторых выдает ошибку о цикличности редиректов.
    Куда копать пока даже не знаю.

     
  5. if ($http_referer !~* (^http://.*|^https://.*) ){

    if ($http_referer !~* ^https?://.* ){ так короче

     
  6. что куда впихивать так и не понял, а вот такой лог от ддос атаки, от апача лога вижу часто.
    Объясните — что куда вводить, буду признателен.

     
  7. Публикация действительно клёвая, но… как и в верхнем комменте я нифига не понял как вставить код в этот nginx. Через .htaccess ставил запрет на этот чертов бот SputnikBot, но толку нихрена нет. Все равно создает нагрузку и систематически шатается про сайту. Если не трудно поясните как и куда запихнуть сие чудо. Или это нужно наседать на хостера? Я что-то полазил и не смог найти в панели управления nginx.

     
  8. Здравствуйте, подскажите как отдавать ботам страницу не чаще раза в 5секунд, если чаще отдавать код 503

    # Блокируем некоторые типы ботов

    if ($http_user_agent ~* msnbot|scrapbot) {

    return 503;

    }

    И чем такое чревато?

     
  9. При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway. отлично справляются как с ддос атаками

     
  10. Автор красава! Всё отличн работает, пиши ещо! ^_^

     

 Оставить комментарий

(обязательно)

(обязательно)

Copyright © 2012. Linuxguru.ru