Однажды я столкнулся с резким ростом нагрузки на один из сайтов. Сервер начал работать медленнее, увеличилось количество запросов, а в логах появилось множество подозрительных обращений. К счастью, на проекте уже была реализована система сохранения входящих 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-инструменты.
Оставить комментарий