Веб сервер может быть построен на различном программном обеспечении, но зачастую в качестве фронтенда к apache и php-fpm используется nginx.
Легковестное и гибкое в настройке ПО имеет ряд преимуществ в следствии чего заработало такую популярность. В стандартный функицонал входят настройки для обеспечения базовой безопасности веб сервера в том числе защите от небольших ddos атак.
Для таких целей предназначены такие модули nginx, с подробным описанием можно ознакомится на официальных мануалах.
https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
https://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html
Модуль ngx_http_limit_req_module предоставляет возможность обработки медленных запросов, а также соростью обслуживания запросов с одного IP. Модуль ngx_http_limit_conn_module используется для ограничения количества запросов по определенным параметрам.
Таким образом используя данные модули можно отсечь медленные запросы, так же ограничить количество запросов с одного ip тем самым защитить веб сервер. Данные лимиты помогают блокировать атаки без использования ботнета (сеть зараженных/подконтрольных атакующему устройств).
Веб-сервер будет пропускать ограниченное количество запросов, тем самым оставаясь «при памяти». Так же будет адекватно реагировать с помощью request timeout. Ведь если запросы растягиваются во времени — то они забивают буфер, и тогда пользователи получают 503 ошибку сервера. Возможны так же другие ошибки из серии кодов ошибок 500.
Стоимт обратить внимание, при включении лимитов могут наблюдаются случаи замедления выдачи картинок на сайте (возможно даже не прогрузки). Поэтому значения остается подбирать только опытным путем. Это зависит от кэширования и собственно траффика на сайт, а также реализации програмной части кода сайта.
Пример конфигурации ограничения соединения с сервером с одного ip.
limit_conn_zone $binary_remote_addr zone=perip:10m;
Данная конфигурации отвечает за скорость обработки запросов
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
Лимиты так же могут быть подобраны и опытным путь: поставили лимиты — запускаем тест-скрипт — смотри реакцию веб-сервера. Итерации повторям пока не добьемся нужного результата, а именно: сайт онлайн+картинки грузятся быстро+не ломается css, и в тоже время блокируются ddos атаки.
Наша компания предоставляет услуги по обеспечению защиты веб сервера, обращайтесь [email protected]