Я настроил сервер, на котором запущен apache, и пару дней назад заметил в журналах, что есть боты, выполняющие бесконечные запросы к сайту. Журналы показывают, что эти боты выполняют около 60 запросов в секунду в течение примерно 20 минут с одного и того же IP-адреса. Как я могу ограничить количество запросов и как лучше справиться с такими ботами?
Заранее спасибо.
Подумайте об установке программного обеспечения, ограничивающего скорость, это поможет вам защититься не только от законных ботов. Ты можешь использовать mod_evasive
для Apache, или вы можете установить Nginx в качестве интерфейса и использовать его HttpLimitZoneModule
, он встроен.
Я очень рекомендую этот инструмент fail2ban (http://www.fail2ban.org/); мы используем его на наших собственных серверах, и он очень полезен для ограничения DoS-флуда не только для Apache.
fail2ban активно отслеживает различные журналы для разных шаблонов (наш настроен только на отслеживание обращений Apache), и если он определяет, что за определенный период времени с определенного IP-адреса получено слишком много обращений, он заблокирует этот IP-адрес на период, который вы определить (мы используем 20-минутное окно бана)
В fail2ban есть готовые пакеты для большинства дистрибутивов, или вы можете получить исходный код; будучи Python, вам даже не нужно его компилировать! : D
Простое решение - отредактировать файл robots.txt и добавить следующую строку:
Пользовательский агент: *
Задержка сканирования: 60
Изменение задержки сканирования на число в секундах между запросами. «Хорошие» боты должны это слушать и ждать между запросами. Однако "плохие" роботы не слушают никаких правил robots.txt ..
robots.txt и перенаправление ботов на статические сайты. Как правило, это хорошо, когда боты (поисковые системы) сканируют (индексируют) ваш сайт. Предлагаемые методы помогут вам контролировать, как они его индексируют.