🧱 WAF: веб-файрвол

Что защищает WAF, режимы, правила, OWASP CRS, ModSecurity, облачные и коробочные решения.

Теория · Администрирование · #waf #security #web #owasp

Что это

WAF (Web Application Firewall) фильтрует HTTP(S)-трафик к веб-приложению на уровне L7: блокирует атаки (SQL-инъекции, XSS, обход путей, боты), ограничивает частоту запросов, ведёт журнал. Обычный сетевой файрвол работает на уровнях L3–L4 (адреса и порты) и не видит содержимого запроса.

Что защищает

Угроза Пример
SQL-инъекции ' OR 1=1 --
XSS <script>alert(1)</script>
Обход пути, LFI / RFI ../../etc/passwd
Командные инъекции ; cat /etc/passwd
SSRF, XXE подмена запросов к внутренним ресурсам
Боты, скрейпинг, перебор паролей множество запросов с одного источника
DDoS на L7 поток «легальных» запросов

Список главных рисков веба: OWASP Top 10.

Режимы работы

Режим Поведение
Обнаружение (detect, log only) пишет в журнал, не блокирует (обкатка правил)
Блокировка (prevent) блокирует подозрительные запросы
Челлендж CAPTCHA или проверка браузера для подозрительных

Внедряйте с режима обнаружения: проверьте ложные срабатывания и только потом блокируйте.

Модели правил

  • Негативная (чёрный список): блок известных вредоносных шаблонов (OWASP Core Rule Set).
  • Позитивная (белый список): разрешено только описанное (схема API, допустимые поля).
  • Поведенческая и репутационная: аномалии, IP-репутация, лимиты.

Решения

Тип Примеры
Открытые ModSecurity + OWASP CRS, Coraza, NAXSI, open-appsec
Облачные Cloudflare WAF, AWS WAF, Azure Front Door WAF, Google Cloud Armor, Akamai, Imperva
Коробочные F5 BIG-IP ASM, Fortinet FortiWeb, Barracuda
Российские Positive Technologies AF, Solar appScreener, Яндекс Cloud SmartWebSecurity

ModSecurity (Nginx / Apache)

# nginx с модулем ModSecurity
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
# main.conf
SecRuleEngine DetectionOnly          # потом On
Include /etc/modsecurity/crs/crs-setup.conf
Include /etc/modsecurity/crs/rules/*.conf
SecRule ARGS "@contains union select" "id:1001,phase:2,deny,status:403,msg:'SQLi'"

Журнал: /var/log/modsec_audit.log. Отключить правило, мешающее приложению: SecRuleRemoveById 942100.

Практика

  • WAF дополняет, а не заменяет безопасный код и обновления.
  • Доверенные источники и API-клиенты вынесите в исключения.
  • Включите ограничение частоты (rate limit) на вход и поиск.
  • Подключите журналы к SIEM и оповещениям.
  • Регулярно проверяйте правила на новые угрозы и ложные блокировки.