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

Как предотвратить или уменьшить скачки нагрузки Apache, вызванные ботами

Сегодня MySQL был отключен oom-killer на одном из наших общих веб-серверов, что привело к отключению наших клиентов. Когда я исследовал, что произошло, я обнаружил, что с одного IP-адреса было отправлено более 1300 запросов в течение 20 секунд. Они поразили каждый виртуальный хост на сервере, что означало, что PHP-FPM нужно было запускать для каждого отдельного сайта, что, в свою очередь, привело к ситуации OOM. Я собираюсь настроить oom-killer, чтобы в будущем он не убивал MySQL, но этот вопрос не об этом.

Я хочу знать, есть ли разумный способ обнаружить эту ситуацию в будущем. Ни один бот не должен делать> 66 запросов в секунду, особенно через несколько виртуальных хостов. Кажется, что должна быть возможность обнаруживать большие внезапные всплески трафика, идущего к нескольким vhosts, и принимать соответствующие меры, чтобы их остановить.

Мы уже внедряем fail2ban, но это не похоже на то, что он действительно подпадает под его компетенцию, и я, конечно, не вижу разумного способа реализации проверки с использованием этого инструмента, который бы не рисковал заблокировать законных пауков, которые пересекают vhosts без вызывающие проблемы (например, Google Bot и Bing Bot). Мы также используем Varnish перед веб-сервером, чтобы облегчить нагрузку на Apache, и оттуда мы блокируем известные плохие UA ботов и другие сообщения от ботов. Но этот бот идентифицировал себя с помощью стандартного Microsoft Edge UA и в остальном выглядел законным, не считая того факта, что он делал абсурдное количество запросов в секунду. Мы также можем блокировать IP-адреса на уровне страны, если это необходимо, но мы крайне неохотно делаем это за исключением случаев крайней необходимости, поскольку у нас есть клиенты с глобальными клиентами. Этот конкретный IP-адрес находился в Канаде, и мы, конечно, не смогли бы его запретить.

Я знаю о моде Apache Rate Limiter и ранее реализовал его на более старом сервере, но у нас были проблемы, когда он ограничивал законных пользователей, если мы не установили чрезвычайно разрешающие параметры, которые затем использовали боты, делая его бесполезным. Мы также используем скорость наших хостинговых серверов как аргумент в пользу продажи, поэтому я не хотел бы размещать что-либо, что замедлило бы просмотр для законных пользователей.

Любые предложения будут приветствоваться, потому что я чувствую, что не могу быть первым человеком, которого раздражает эта проблема, но я не могу найти в Интернете ничего особенно полезного.