Назад | Перейти на главную страницу

Как справиться с DDoS-атакой на поисковую систему?

Мы запускаем поисковую систему и видим огромное количество поддельных поисковых запросов, поступающих в последние дни с тысяч IP-адресов. Не существует реальной закономерности с точки зрения текста запроса или диапазона IP-адресов. Похоже, что существует сеть ботов, пытающихся нас вывести из строя. В настоящее время мы наблюдаем около 30 поддельных запросов в секунду, и их количество растет.

Мы пытались настроить cloudflare, но это не помогло. Мы могли бы попытаться заблокировать плохой трафик с помощью Captchas, но это может снизить удобство использования для наших реальных пользователей.

Кто-нибудь знает, как с этим справиться? Мы работаем на AWS с Route53.

Это сложный вопрос, поскольку они, по сути, используют законную функцию вашего сайта.

У вас есть несколько основных вариантов:

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

  • Вы также можете отключить эту функцию своего сайта, а все остальное оставить. Т.е. может быть наиболее практичным было бы просто заменить вашу поисковую систему статическим сообщением «временно недоступен, мы вносим некоторые изменения», пока атака не прекратится.

  • Вы также можете оптимизировать поисковую систему, чтобы она лучше работала под нагрузкой. В зависимости от того, какой движок вы используете - некоторые поисковые системы довольно неэффективны (на ум приходит Drupal). Правильно оптимизированный, вы сможете справиться с трафиком. Пока вы не вычислите числа, не стоит недооценивать, сколько ЦП, памяти и т. Д. Теряется из-за неэффективности кода.

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

Вы можете вводить Captcha только после того, как конкретный IP-адрес сделал более x запросов за x таймфрейм.

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

Если вы продолжите в том же духе, они, вероятно, либо сдадутся, либо скоро изменят векторы атаки.

Например:

  • Добавьте скрытое поле в форму поиска (просто постоянное значение), отклоните запрос, если это поле отсутствует.

  • Когда они обновляют своего бота, чтобы включить это поле, измените его значение на конкретное значение IP (только IP-адрес будет в порядке)

  • Когда они снова обновятся, измените значение на хеш IP-адреса + секретный ключ

  • Следующее обновление добавит что-то, что требует некоторого тривиального javascript (например, дайте клиенту два числа и потребуйте сумму этих чисел).

  • Следующее обновление получит параметры javascript из файла cookie.

  • и т. д., т. д. и т. д.

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