Как я реализовал защиту сайта от сканеров и ботов

История создания Laravel-пакета для мониторинга запросов, обнаружения сканеров, массовых 404-запросов и автоматической блокировки IP-адресов.

Однажды я столкнулся с резким ростом нагрузки на один из сайтов. Сервер начал работать медленнее, увеличилось количество запросов, а в логах появилось множество подозрительных обращений. К счастью, на проекте уже была реализована система сохранения входящих HTTP-запросов в базу данных, поэтому удалось быстро понять источник проблемы.

Выяснилось, что сайт активно сканируется автоматическими ботами. Они пытались получить доступ к системным файлам и служебным директориям, перебирая популярные пути вроде .git, .env, storage, vendor и других. Подобные атаки встречаются достаточно часто: злоумышленники ищут ошибки конфигурации и случайно открытые файлы, содержащие ключи, пароли или внутренние данные проекта.

Какие проблемы удалось обнаружить

После анализа логов стало понятно, что поведение ботов можно определить по нескольким характерным признакам:

  • попытки открыть системные и скрытые файлы;
  • большое количество запросов с ответом 404 Not Found;
  • слишком высокая частота запросов за короткий промежуток времени;
  • автоматический перебор директорий и URL.

Особенно заметной была ситуация, когда один IP-адрес отправлял сотни запросов в минуту, пытаясь найти уязвимые точки входа.

План защиты

Для снижения нагрузки и автоматического обнаружения подозрительной активности был составлен простой план защиты:

  • Отслеживать обращения к системным файлам и директориям.
  • Анализировать количество 404-ошибок от одного IP.
  • Ограничивать чрезмерное количество запросов.
  • Автоматически блокировать подозрительные IP-адреса.
  • Сохранять информацию о подозрительных действиях для дальнейшего анализа.

После внедрения этих механизмов нагрузка на сайт значительно снизилась, а большинство автоматических сканеров начали блокироваться еще на раннем этапе.

Проблема повторного использования

Со временем возникла новая задача — перенести эту систему защиты на другие проекты. Копировать код вручную в каждый новый сайт оказалось неудобно:

  • логика постоянно дорабатывалась;
  • настройки отличались от проекта к проекту;
  • было сложно поддерживать единый подход к защите.

Тогда появилась идея вынести весь функционал в отдельный Laravel-пакет https://github.com/dasayapov/laravel-http-filter

Создание Laravel-пакета

Так был разработан пакет для Laravel, который позволяет быстро подключить мониторинг запросов и систему автоматической блокировки IP-адресов.

Основные возможности пакета:

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

Главная цель пакета — упростить базовую защиту веб-приложений и снизить нагрузку от автоматических сканеров и примитивных атак.

Почему это важно

Даже небольшие сайты регулярно подвергаются автоматическому сканированию. Большинство подобных атак выполняются ботами без участия человека. Они ищут:

  • открытые .env файлы;
  • Git-репозитории;
  • панели администратора;
  • резервные копии;
  • известные уязвимости CMS и фреймворков.

Если не отслеживать такую активность, она может привести не только к повышенной нагрузке на сервер, но и к утечке конфиденциальных данных.

Итог

История началась с обычного анализа нагрузки на сайт, а закончилась созданием отдельного инструмента для защиты Laravel-проектов. Иногда именно реальные проблемы в продакшене становятся источником полезных решений, которые позже превращаются в полноценные продукты и open-source-инструменты.

Оставить комментарий

Комментарий отправится на проверку

Отправка
Спасибо! Комментарий добавлен
Копировать можно с указанием активной ссылки на эту страницу.
Давайте уважать труд других.