🧱 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 и оповещениям.
- Регулярно проверяйте правила на новые угрозы и ложные блокировки.