У меня проблема с одним человеком, который продолжает агрессивно очищать мой сайт; трата ресурсов ЦП и полосы пропускания. Я уже реализовал систему, которая отслеживает журналы доступа к моему веб-серверу, добавляет каждый новый IP-адрес в базу данных, отслеживает количество запросов, сделанных с этого IP-адреса, а затем, если тот же IP-адрес превышает определенный порог запросов в пределах определенный период времени он заблокирован через iptables. Это может показаться сложным, но, насколько я знаю, не существует готового решения, предназначенного для ограничения определенного IP-адреса определенной полосой пропускания / запросов.
Это отлично работает для большинства поисковых роботов, но чрезвычайно упорный человек получает новый IP-адрес из своего пула интернет-провайдера каждый раз, когда его блокируют. Я хотел бы полностью заблокировать интернет-провайдера, но не знаю, как это сделать.
Выполняя whois по нескольким образцам IP-адресов, я вижу, что все они используют одно и то же «сетевое имя», «mnt-by» и «origin / AS». Есть ли способ запросить базу данных ARIN / RIPE для всех подсетей, используя одно и то же mnt-by / AS / netname? Если нет, то как еще я могу получить каждый IP-адрес, принадлежащий этому интернет-провайдеру?
Спасибо.
Разобрался сам. Вроде, как бы, что-то вроде.
robtex.com перечисляет все объявленные диапазоны IP-адресов для данной AS по адресу: http://www.robtex.com/as/as123.html#bgp
По-прежнему не знаю, как и откуда robtex получает эту информацию. Если кто-то еще захочет вмешаться и объяснить, откуда берутся данные, это будет здорово.
whois [IP address]
(или whois -a [IP Address]
) обычно дает вам маску CIDR или диапазон адресов, принадлежащих рассматриваемой компании / провайдеру, но анализ результатов оставляется в качестве упражнения для читателя (существует как минимум 2 распространенных выходных формата whois).
Обратите внимание, что такая массовая блокировка также потенциально может вывести из строя законных пользователей. Прежде чем использовать этот подход, вам следует обратиться в службу защиты информации соответствующего интернет-провайдера (обычно она указана в whois
информацию для их сетевого блока или домена DNS, иначе abuse @ - хорошее место для начала), чтобы увидеть, можно ли разрешить ситуацию дипломатическим, а не техническим путем.
Также обратите внимание, что там являются некоторые готовые решения для ограничения запросов в секунду по IP - Ознакомьтесь mod-qos или возможности брандмауэра / формирования трафика вашей системы.
Поскольку у вас есть доступ к iptables, я предполагаю, что у вас все равно есть root-доступ в системе. В этом случае я бы предложил установить Fail2Ban, который просто заблокирует IP (на определенное время, которое вы решите), если они попытаются злоупотребить службой (HTTP, DNS, Mail, SSH ... и т. Д.), Нажав порт службы N раз. в течение X периода. (все пользователи решили.)
Я использую это на своем сервере и получаю очень хорошие результаты. особенно с теми китайскими хакерами, которые хотят взломать мой SSH.
посетите мою домашнюю страницу для получения дополнительной информации. У меня есть сообщение в блоге о fail2ban.
Можешь попробовать этот инструмент. Не быстро, но работает.