WAF (Web Application Firewall): базовый гайд
WAF (Web Application Firewall): базовый гайд
WAF (Web Application Firewall) — это прокси, который фильтрует HTTP-трафик на прикладном уровне и блокирует атаки по сигнатурам и правилам: SQL injection, XSS, path traversal, RCE-паттерны, credential stuffing, DDoS. В отличие от классического network firewall (L3/L4), WAF работает на L7 — видит полный URL, заголовки, тело запроса. Разбираем варианты (self-hosted mod_security, Cloudflare, AWS WAF), OWASP Core Rule Set и когда WAF реально нужен.
Что делает WAF
- Блокирует SQL injection, XSS, RCE по сигнатурам
- Защищает от bots и scrapers (JS challenge, CAPTCHA)
- Геоблокировка по странам
- Rate limiting на уровне L7
- Virtual patching — закрыть уязвимость в старом приложении до деплоя фикса
- Логирование подозрительного трафика для SIEM
Типы WAF
Self-hosted (mod_security, Coraza)
ModSecurity — opensource WAF для Apache, nginx, IIS. Coraza — Go-реализация для Envoy/Caddy/hyper. Плюсы: бесплатно, полный контроль. Минусы: нужно админить, свои правила, обновления.
Cloud WAF
- Cloudflare WAF — managed rules + custom rules, $200/мес Business, работает как reverse proxy
- AWS WAF — интегрируется с CloudFront, API документацию Gateway, ALB. Оплата по запросам
- Yandex Cloud Smart Web Security — локальное решение, интеграция с Application Load Balancer
- Imperva, F5, Akamai — enterprise-класс
OWASP Core Rule Set (CRS)
OWASP CRS — открытый набор правил для ModSecurity/Coraza, покрывающий OWASP Top 10: SQLi, XSS, LFI/RFI, RCE, session-hijack. Включается одной командой:
# На Debian/Ubuntu с nginx
apt install libmodsecurity3 modsecurity-crs
# Подключить в nginx.conf
modsecurity on;
modsecurity_rules_file /etc/modsecurity/crs-setup.conf;
modsecurity_rules_file /etc/modsecurity/rules/*.conf;
Paranoia Level: от 1 (мало false positives) до 4 (параноидальный). В production начинайте с PL1, постепенно поднимайте.
Пример правила mod_security
SecRule ARGS "@rx (?i)(union|select|insert|drop|update|delete)\s" \
"id:1001,phase:2,deny,status:403,msg:'SQL injection attempt',tag:'attack-sqli'"
SecRule REQUEST_URI "@rx (\.\./|%2e%2e%2f)" \
"id:1002,phase:1,deny,status:403,msg:'Path traversal attempt'"
Cloudflare WAF (пример)
В dashboard: Security → WAF → Managed Rules → включить OWASP Core Ruleset, Cloudflare Managed Ruleset. Custom Rules для geo-block:
(ip.geoip.country eq "CN" or ip.geoip.country eq "RU") and http.request.uri.path contains "/admin"
=> Block
Когда WAF реально нужен
- Legacy-приложение без возможности быстро фиксить уязвимости
- E-commerce, финтех, HR (PII → compliance требует WAF по PCI DSS)
- Публичный API с высоким риском скрапинга
- Сайт под регулярными атаками (ботнет, bruteforce)
Для маленького бизнес-сайта на WordPress CloudFlare Free + Fail2ban закроет 80% угроз.
False positives и тюнинг
Главный риск WAF — заблокировать легитимный трафик. Типичные ложняки:
- POST-данные с «суспициоз» символами (кавычки, <)
- Формы обратной связи с SQL-словами («select», «drop»)
- Ajax-запросы с длинными query string
Стратегия: 1) включить WAF в DetectionOnly режиме, 2) 2–4 недели собирать логи, 3) добавить exception на ваши endpoint'ы, 4) переключить в Blocking.
WAF vs другие защиты
WAF — это слой, не замена. Он не заменяет:
- Secure coding (SQL-prepared statements, эскейпинг)
- HTTP Security Headers
- Application-level rate limiting
- Auth-proper implementation
WAF — компенсационный контроль. Если приложение фундаментально дырявое, WAF просто делает атаку более шумной.
Мониторинг
Следите за: rate блокированных запросов, топ-10 правил по срабатываниям, false-positive rate, latency overhead (WAF добавляет 5–50 мс). Рекомендую enterno monitors на 403/503 rate.
FAQ
Замедляет ли WAF сайт? Cloud WAF — 5–30 мс, self-hosted ModSecurity — 10–50 мс на сложных правилах. На UX обычно неощутимо.
Защищает ли WAF от zero-day? Managed rules обновляются быстрее вашего кода — да, частично.
Нужен ли WAF с SSL/TLS проверку? Да. HTTPS защищает от MITM, WAF — от атак внутри валидного HTTPS-запроса.
WAF или IDS/IPS? IDS смотрит трафик на L3/L4, WAF — на L7. Для web-приложений нужен WAF.
Вывод
WAF — обязателен для e-commerce, финтеха, public API. Минимум — Cloudflare Free (базовые managed rules) + OWASP CRS. Мониторьте ложняки, отслеживайте латенси. Связанное: rate limiting, XSS, Security Scanner.
Проверьте ваш сайт прямо сейчас
Проверить →