Простая блокировка IP-адресов
- 444 просмотра
- 9 декабря, 2023
- Обновлено: 13 декабря, 2023
- admin
- Время чтения: 3 минуты
- 2 (Подробно)
Иногда у любого владельца или администратора сайта возникает острая необходимость в более-менее подробном анализе входящих IP-адресов и простом инструменте для блокировки потенциально опасных из них. Как правило, во всех CMS для имеется только базовый инструментарий. Cotonti не исключение. Из коробки нам доступны два профильных плагина: IP Search и Banlist. Первый отвечает за поиск и IP и определение соответствующего ему хоста, второй блокирует айпи, который вы бы не хотели видеть в числе визитеров вашего ресурса.
Анализируем IP на предмет абьюза
Задача номер один состоит в том, чтобы понять, представляет ли айпи потенциальную угрозу. Узнать IP-адрес можно двумя способами:
- получить из данных зарегистрированного пользователя,
- использовать logger или системный протокол (Админка -> Управление -> Системный протокол).
В первом случае все просто: вы знаете ip надоедливого пользователя и можете заблокировать именно его, не отключая регистрацию на сайте. Второй кейс посложнее. Логгер системного ядра может указать вам на ip-адрес, представляющий потенциальную опасность для сайта. Для этого выберите селектом вкладку "Безопасность". Здесь можно узнать много интересного, например "Attempt to directly access an un-validated or future/expired page" или "IP banned 3 mins, was hammering". Если это не ваши собственные IP, то такие случаи могут сигнализировать о потенциальной угрозе. Первый шаг по ее устранению состоит в анализе адреса.
В качестве примера сервиса по анализу abusive IP мы выбрали AbuseIPDB. Это давно известный ресурс с удобным интерфейсом, позволяющий на основе пользовательских отчетов получить более-менее точное представление о том, не несет ли адрес угрозу. Поскольку сервис запускает анализ при передаче адреса в виде GET-параметра, сформировать готовую сроку не представит сложности.
Зайдем в папку вашей админки и откроем шаблон plugins/ipsearch.tpl. В удобное место добавим следующий код:
<!-- IF {PHP.id} --> <div class="btn-group mt-3"> <a href="https://www.abuseipdb.com/check/{PHP.id}" class="btn btn-sm btn-primary" target="_blank">Check IP for Abuse</a> <a href="{PHP|cot_url('admin', 'm=other&p=banlist&a=addip&ip2ban={PHP.id}')}" class="btn btn-sm btn-danger" target="_blank">Ban IP</a> </div> <!-- ENDIF -->
Теперь если в плагине IP Search будет анализироваться IP-адрес, в шаблоне будет сформирован блок из двух кнопок. Первая откроет в новой вкладке сервис AbuseIPDB и проанализирует найденный на сайте адрес. Вы увидите отзывы пользователей, столкнувшихся с подозрительной деятельностью с данного айпишника и уровень угрозы в процентах. Чем выше, тем, естественно, опаснее.
Упрощаем блокировку нежелательного IP-адреса
Теперь по второй кнопке. Как понятно из адреса, она откроет плагин Banlist с двумя дополнительными GET-параметрами: a и ip2ban. Достаточно было бы и одного, но первый в Котонти всегда стандартно отвечает за действие.
Для того, чтобы вся эта история заработала, необходимо установить небольшой плагин под названием banip, который проанализирует переданный нами IP-адрес и заполнит поля nbanlistip и nbanlistreason в локации Banlist. Вам останется только нажать кнопку "Отправить", и соответствущий айпи будет заблокирован в системе.
Заключение
При помощи простых действий и плагина в пять строк мы автоматизировали процесс блокировки нежелательных IP-адресов из админки Cotonti Siena. Теперь нет необходимости в копировании и вставке адреса. Не ахти, но все же.
Кстати, AbuseIPDB предлагает своим пользователям API. Мы определим возможность его интеграции в админку Cotonti и обязательно продолжим начатую сегодня тему.
Если начинается "обострение", лучше отключить анонимное комментирование и включить подтверждение регистрации администратором. Хотя бы на время.
в том-то и дело, что IP у подавляющего большинства динамическией, и придётся банить группу - сектор IP чтобы отвадить особенных вампиров-психопатов которым в кайф когда он пробрался в обход банов. Если псих из твоей же страны, то совсем печалька. У меня было пару идиотов-рекламщиков на сайте, хлопотное дельце их вытравливать, я вам доложу.
А что VPN? Какая разница, какой ip банить -- реальный или vpn-сервера? В любом случае, для абьюзера это бо́льший головняк. Особенно с учетом того, что vpn и легальный адрес провайдера это две большие разницы. 99% абьюзеров используют бесплатные, всегда медленные и перегруженные vpn. Нашел быстрый -- система зафиксировала подозрительные действия -- бан. Платный и быстрый vpn это совсем о другом.
Что быстрее и вызывает меньше головной боли в реальных ситуациях? Собственно, об этом и тема статьи.
Благодарная это штука или нет, но потенциальные аудитории не сидят на одних и тех же айпишниках. Один айпи или даже xxx.xxx.xxx.* это далеко не вся страна. К тому же баны в какой-то момент можно отключать.
самый простой обход - VPN.
Глушить IP неблагодарная штука, особенно, если потенциальная аудитория нормальных посетителей из той же страны что и вредитель.
Новый комментарий