Вопрос

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

Например:- Кто -то, кто пытается грубо поднять ваш экран входа в систему - плохо написанные боты, очень странные HTTP -запросы на ваш сайт - сценарий -кидди использует сканер для поиска уязвимостей в вашем приложении

Мне интересно, будет ли работать следующий механизм, и если да, то знаете ли вы, есть ли какие-либо инструменты, которые это делают:

  • В веб-приложении у разработчика есть возможность сообщить о «нарушении».Правонарушение может быть незначительным (неверный пароль), и для попадания в черный список потребуются десятки таких правонарушений;а может быть и серьёзным, и за пару таких нарушений в сутки тебя выгонят.
  • Некоторая форма блокировки на уровне веб-сервера срабатывает перед загрузкой каждой страницы и определяет, пришел ли пользователь с «плохого» IP-адреса.
  • Там встроен механизм «прощения»:через некоторое время правонарушения больше не засчитываются в счет IP.

Спасибо!

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

Это было полезно?

Решение

ты на машине *nix?подобные вещи, вероятно, лучше оставить на уровне ОС, используя что-то вроде iptables

редактировать:

в ответ на комментарий да (вроде как).однако идея состоит в том, что iptables может работать независимо.вы можете установить определенный порог для регулирования (например, блокировать запросы TCP-порта 80, превышающие x запросов в минуту), и все это обрабатывается прозрачно (т. е. вашему приложению действительно не нужно ничего об этом знать, чтобы иметь происходит динамическая блокировка).

я бы предложил метод iptables, если у вас есть полный контроль над устройством и вы предпочитаете, чтобы ваш брандмауэр обрабатывал регулирование (преимущества в том, что вам не нужно встраивать эту логику в свое веб-приложение, и он может экономить ресурсы по мере выполнения запросов). упали до того, как они попали на ваш веб-сервер)

в противном случае, если вы ожидаете, что блокировка не будет иметь большого значения (или ваше приложение является переносимым и не может гарантировать доступ к iptables), тогда было бы разумнее встроить эту логику в ваше приложение.

Другие советы

Взгляни на фейл2бан.Платформа Python, которая позволяет вам поднимать блоки IP-таблиц из хвостовых файлов журналов для выявления шаблонов ошибочного поведения.

Я думаю, это должна быть комбинация имени пользователя и блокировки IP.Не только ИП.

вы смотрите на собственный код блокировки.В мире с открытым исходным кодом существуют приложения, которые содержат различные варианты такого кода.Возможно, вам стоит взглянуть на некоторые из них, хотя ваши требования довольно тривиальны, поэтому отметьте комбинацию IP/имя пользователя и используйте ее для блокировки IP-адреса на x времени.(Обратите внимание, я сказал заблокировать IP, а не пользователя.Пользователь может попытаться подключиться к Интернету, указав действительную комбинацию IP/имя пользователя/пароль.)

На самом деле, вы даже можете отслеживать входы пользователей, и при входе в систему с неизвестного IP-адреса с комбинацией «3 удара по плохому имени пользователя и паролю» заблокировать этот IP-адрес для этого имени пользователя на любой срок.(Обратите внимание, что многие интернет-провайдеры имеют общие IP-адреса, поэтому....)

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

Я разработал систему для клиента, которая отслеживала обращения к веб-серверу и динамически блокировала IP-адреса на уровне операционной системы/брандмауэра на различные периоды времени за определенные нарушения, так что да, это определенно возможно.Как сказал Оуэн, правила брандмауэра — гораздо лучшее место для подобных вещей, чем веб-сервер.(К сожалению, клиент решил сохранить строгие авторские права на этот код, поэтому я не имею права делиться им.)

Обычно я работаю на Perl, а не на PHP, но, если у вас есть интерфейс командной строки для вашего механизма правил брандмауэра (например, /sbin/iptables), вы сможете довольно легко сделать это на любом языке, имеет возможность выполнять системные команды.

эээ, такая система проста и распространена, я могу легко дать вам свою

это просто и кратко объяснено здесь http://www.alandoherty.net/info/webservers/

скрипты в том виде, в каком они написаны, не могут быть загружены {поскольку в настоящее время комментариев не добавлено}, но напишите мне по электронной почте с сайта выше, и я брошу вам код и с радостью помогу с отладкой/адаптацией его к вашему серверу

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top