Защита от DDoS атак с помощью NGINX и Fail2Ban

Nginx / Security 27-10-2024, 20:20 sobir 1 536 0


Любой ресурс, доступный в интернете, может рано или поздно подвергнуться различным сетевым атакам. В этой статье мы рассмотрим, как противостоять этим угрозам с акцентом на DDoS.

Что такое DDoS атака?

DDoS атака — это попытка перегрузить сервер или сайт, отправляя множество запросов от разных источников, чтобы сделать его недоступным для пользователей.
Защита от DDoS атак с помощью NGINX и Fail2Ban
Рис. 1 Как работает DDoS атака

Защита сайта

Для защиты мы будем использовать модуль NGINX для лимитирования запросов (ngx_http_limit_req_module) и систему обнаружения и предотвращения вторжений (IDS/IPS) Fail2Ban.

Принцип работы:

Модуль лимитирования запросов ограничивает количество запросов от пользователей и записывает события в error.log.
Fail2Ban парсит данные из лог-файла с использованием фильтров и блокирует IP-адреса, производящие подозрительные запросы.

Предполагается, что у вас уже установлен:
  • NGINX в качестве веб-сервера или обратного прокси;
  • Сервис Fail2Ban.

Итак, приступим.

Подключаем модуль лимитера запросов в NGINX

В основном конфигурационном файле /etc/nginx/nginx.conf добавьте следующее:
http {
    limit_req_zone $binary_remote_addr zone=example:100m rate=30r/m;
    ...
}

Команда limit_req_zone $binary_remote_addr zone=example:100m rate=30r/m; создает зону лимитирования, которая:
  • Использует IP-адрес клиента для идентификации;
  • Хранит данные в зоне example размером 100 МБ;
  • Ограничивает 30 запросов в минуту от одного IP-адреса.

Далее необходимо применить зону для одного из location:
location = /admin {
    limit_req zone=example burst=1 nodelay;
    ...
}

nodelay гарантирует, что, как только лимит запросов будет превышен, будет возвращен код статуса HTTP 503 (Service Unavailable).

Подключаем фильтр nginx-limit-req в Fail2Ban

Создадим новый jail.local командой:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Отредактируем /etc/fail2ban/jail.local и приведем содержимое фильтра nginx-limit-req к следующему виду:
[nginx-limit-req]
enabled = true
port    = http,https
logpath = %(nginx_error_log)s

По умолчанию в Fail2Ban при срабатывании определенного условия (например, обнаружении 5 совпадений) активируется правило, которое блокирует IP-адрес злоумышленника на 10 минут. Эти значения можно изменить в конфигурации jail.local, подправив параметры maxretry (максимальное количество попыток) и bantime (время блокировки).
Похожие новости
Запрещаем веб трафик на origins, кроме Cloudflare IPs

Разрешаем веб трафик на сервер NGINX только с серверов Cloudflare....

Подробнее
Настраиваем мониторинг access.log NGINX с использованием Zabbix

Настраиваем мониторинг журнала access.log веб-сервера NGINX....

Подробнее
Установка веб сервера NGINX в CentOS 8 / RHEL 8

Установка последней стабильной версии популярного веб сервера NGINX....

Подробнее
Интеграция Jira с AD на основе групп пользователей

Настроим аутентификацию пользователей Jira с Active Directory....

Подробнее
Настройка обратного прокси сервера NGINX с SSL-терминацией в CentOS 8 / RHEL 8

Настраиваем обратный прокси сервер NGINX с SSL-терминацией и генерируем бесплатные валидные сертификаты SSL...

Подробнее
Комментарии (0)
Новые комментарии
sobir27 октября 2024 19:02

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Можт быть дело в

img
К комментарию
FidoNet25 октября 2024 22:04

Цитата: sobir Цитата: FidoNet Можт быть дело в dnsmasq.service? Ошибка Failed

img
К комментарию
sobir25 октября 2024 16:48

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные

img
К комментарию
FidoNet20 октября 2024 12:12

Можт быть дело в dnsmasq.service? Ошибка Failed to set DNS configuration: Unit

img
К комментарию
FidoNet19 октября 2024 17:48

Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные статьи что находил

img
К комментарию
sobir13 октября 2024 13:22

Цитата: FidoNet Спасибо за статью. Остальные статьи что находил либо старые,

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Октябрь 2024    »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031 
Подпишись на канал