Построение эшелонированной защиты сервера: Настройка Cloudflare WAF и Fail2ban
Как остановить ботнеты и сканеры уязвимостей до того, как они нагрузят процессор
Каждый открытый в сеть Linux-сервер ежедневно подвергается тысячам автоматических атак. Боты ищут открытые порты, сканируют уязвимости в скриптах, перебирают пароли к SSH и пытаются завалить бэкенд паразитными HTTP-запросами (DDoS-атаки). Защищаться от этого только силами веб-сервера неэффективно: обработка каждого запроса тратит RAM и ресурсы процессора. Нам необходима эшелонированная защита: фильтрация трафика на внешнем периметре и моментальная блокировка нарушителей внутри операционной системы.
Два рубежа обороны: Cloudflare на границе сети и Fail2ban на сервере
Первый эшелон — это Cloudflare. Он скрывает реальный IP-адрес вашего сервера (активное проксирование), берет на себя удар при L7-атаках и фильтрует трафик через правила WAF. Второй эшелон — локальный демон Fail2ban. Если бот или злоумышленник пытается обойти защиту, сканирует несуществующие страницы или подбирает пароли, Fail2ban анализирует логи Nginx/SSH и жестко блокирует IP-адрес атакующего на уровне брандмауэра iptables.
Шаг 1: Конфигурация локального фильтра Fail2ban для защиты Nginx
Создаем кастомную конфигурацию для защиты от агрессивного сканирования сайта. Файл /etc/fail2ban/jail.d/nginx-noscript.conf указывает парсить логи и банить IP на 24 часа при повторении подозрительных запросов.
Шаг 2: Написание регулярного выражения для отлова хакерских сканеров
Чтобы Fail2ban понял, какие строки в логах access.log являются вредоносными, мы описываем правила фильтрации во вспомогательном файле /etc/fail2ban/filter.d/nginx-noscript.conf
Итоги и резюме
Результат настройки безопасности
Связка Cloudflare WAF и Fail2ban снижает паразитную нагрузку на бэкенд на 90–95%. Cloudflare отсекает массовый автоматизированный спам и распределенные атаки, а Fail2ban изолирует единичных целевых сканеров. Сервер работает стабильно, базы данных не перегружаются ложными соединениями, а в логах остаются только чистые запросы реальных клиентов.
Была ли полезна статья?
Оценки помогают мне понимать, какие темы вам наиболее интересны.