WAF — Web Application Firewall
WAF (Web Application Firewall) — межсетевой экран уровня приложения, который анализирует HTTP-трафик и блокирует запросы, соответствующие сигнатурам атак (SQLi, XSS, LFI, RCE) или нарушающим заданные правила.
Зачем нужно
WAF — дополнительный слой защиты ("defence in depth"), который блокирует атаки даже при наличии уязвимостей в коде. Это не замена исправлению уязвимостей, но ценный буфер времени: защищает, пока разработчики выпускают патч.
Где используется
- Защита публичных веб-приложений и API от автоматизированных атак
- Виртуальный патчинг: блокировка эксплуатации CVE до выхода официального исправления
- PCI DSS Requirement 6.4: требует WAF или аналог для защиты карточных данных
- Bot-protection: ограничение scraping и credential stuffing
Основной контент
Режимы работы WAF
Detection Mode → Логирует все совпадения, не блокирует
Prevention Mode → Блокирует запросы при совпадении правил
Hybrid Mode → Detection для новых правил, Prevention для проверенных
Cloudflare WAF (managed rules)
# Cloudflare автоматически применяет OWASP CRS и собственные правила
# Настройка через API или Dashboard:
# Пример Custom Rule через Cloudflare API
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/firewall/rules" \
-H "Authorization: Bearer $CF_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filter": { "expression": "http.request.uri.path contains \"/admin\"" },
"action": "challenge",
"description": "Challenge non-whitelisted IPs on /admin"
}'
ModSecurity + OWASP Core Rule Set (Nginx)
# nginx.conf
load_module modules/ngx_http_modsecurity_module.so;
server {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
}
# /etc/nginx/modsec/main.conf
Include /etc/nginx/modsec/modsecurity.conf
Include /usr/share/modsecurity-crs/crs-setup.conf
Include /usr/share/modsecurity-crs/rules/*.conf
# Настройка уровня паранойи (1-4):
SecAction "id:900000, phase:1, pass, t:none, setvar:tx.paranoia_level=2"
AWS WAF (пример CDK)
const waf = new wafv2.CfnWebACL(this, 'ApiWAF', {
scope: 'REGIONAL',
defaultAction: { allow: {} },
rules: [
{
name: 'AWSManagedRulesCommonRuleSet',
priority: 1,
overrideAction: { none: {} },
statement: {
managedRuleGroupStatement: {
vendorName: 'AWS', name: 'AWSManagedRulesCommonRuleSet',
},
},
visibilityConfig: { sampledRequestsEnabled: true, cloudWatchMetricsEnabled: true, metricName: 'CommonRules' },
},
],
});
Частые ошибки
- Использование WAF вместо исправления уязвимостей — WAF обходим, это временное решение
- Prevention mode с дефолтными правилами без тюнинга — высокий процент ложных срабатываний
- Отсутствие мониторинга WAF-логов — WAF работает, но никто не смотрит что блокирует
- Доверие заголовкам
X-Forwarded-Forот WAF без верификации — IP spoofing возможен
Связанные темы
- _MOC Безопасность
- Rate Limiting и DDoS-защита
- Clickjacking -- X-Frame-Options
- Secure SDLC -- безопасный жизненный цикл