WAF закрывает атаки на прикладном уровне — то, что сетевой файрвол не видит в принципе. SQL-инъекция в параметре запроса, XSS в заголовке User-Agent, path traversal в URL — всё это легально проходит через Security Groups и попадает прямо в приложение. WAF работает на уровне HTTP, анализирует тело запроса и принимает решение до того, как запрос дойдёт до кода. Ежедневно через наш WAF проходят миллионы запросов, и только единицы пробиваются через ложные срабатывания.
WAF — необходимый барьер
Разработчики часто полагаются только на WAF, откладывая исправление кода. Но WAF не панацея — он блокирует известные векторы, но не логические уязвимости. Наш опыт показывает: правильная настройка WAF даёт 90% покрытия OWASP Top 10 при грамотном управлении исключениями. За 5+ лет работы мы внедрили WAF на десятках проектов — от высоконагруженных SaaS до legacy-решений. Наши инженеры имеют сертификаты AWS и Cloudflare, что подтверждает компетентность. Благодаря WAF среднее время реакции на инциденты сократилось на 40%.
Сравнение WAF-решений
| Критерий | ModSecurity + OWASP CRS | AWS WAF | Cloudflare WAF |
|---|---|---|---|
| Размещение | Сервер / reverse proxy | ALB, CloudFront, API Gateway | CDN-уровень |
| Управление | Конфигурационные файлы | Terraform / CloudFormation | Dashboard / Terraform |
| Готовые правила | OWASP CRS (90% покрытия) | AWS Managed Rules (обновляемые) | Cloudflare Managed Rules |
| Кастомные правила | SecRule (язык ModSecurity) | WebACL (JSON/Terraform) | Expression Language |
| Ложные срабатывания | Высокие (требуют кастомных исключений) | Средние | Низкие (автоматические обновления) |
| Стоимость | Бесплатный (только ресурсы сервера) | Плата за WebACL + правила | Тарификация по плану (Free/Pro/Business) |
Выбор WAF зависит от архитектуры: ModSecurity лучше для самописных решений, AWS WAF — если инфраструктура уже в AWS, Cloudflare — при использовании их CDN.
Почему WAF нужно внедрять с мониторинга?
Типичная ошибка — включить WAF сразу в блокирующий режим. На одном проекте с legacy PHP после включения AWS WAF в Count mode мы получили 340 срабатываний CRS на нормальные POST-запросы форм. Настройка исключений заняла 3 дня. Если бы сразу блокировали — приложение бы упало. Режим мониторинга позволяет собрать статистику и избежать отключения важных функций. После недели наблюдения и кастомных исключений количество false positives снижается до 2-5%. OWASP CRS рекомендации подчёркивают важность поэтапного внедрения.
Пример лога мониторинга ModSecurity
В режиме DetectionOnly каждое срабатывание записывается в audit_log: timestamp, URI, rule ID. На основе этого мы выявляем ложные срабатывания и точечно отключаем правила.Модуль ModSecurity с OWASP CRS на Nginx
ModSecurity — open source WAF, работает как модуль Nginx или Apache. OWASP Core Rule Set (CRS) — база правил с охватом более 90% известных атак.
Установка и конфигурация:
# Ubuntu/Debian apt install libmodsecurity3 libmodsecurity-dev git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git # Перекомпилируйте Nginx с модулем или используйте пакет из nginx.org load_module modules/ngx_http_modsecurity_module.so;
http {
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Режимы: DetectionOnly (логирует, не блокирует) и On (блокирует). Всегда начинаем с DetectionOnly, настраиваем исключения, потом переключаем.
Настройка исключений WAF
OWASP CRS в aggressive mode даёт много false positives на реальных приложениях. Например, форма с rich-text редактором генерирует запросы, которые CRS считает XSS:
# /etc/nginx/modsec/exclusions.conf
SecRule REQUEST_URI "@beginsWith /admin/editor" \
"id:1001,phase:1,pass,nolog,ctl:ruleRemoveById=941100"
SecRuleUpdateTargetById 942100 "!ARGS:content"Точные исключения сохраняют защиту для остальных endpoint'ов. Ежемесячно мы публикуем отчёты о срабатываниях, что повышает прозрачность.
AWS WAF
AWS WAF проще в операционке — не нужен сервер, управляется через API/Terraform, встроен в CloudFront, ALB, API Gateway. По сравнению с ModSecurity, настройка managed rules занимает в 2-3 раза меньше времени.
resource "aws_wafv2_web_acl" "main" {
name = "production-waf"
scope = "REGIONAL"
default_action {
allow {}
}
rule {
name = "AWSManagedRulesCommonRuleSet"
priority = 10
override_action {
none {}
}
statement {
managed_rule_group_statement {
name = "AWSManagedRulesCommonRuleSet"
vendor_name = "AWS"
rule_action_override {
name = "SizeRestrictions_BODY"
action_to_use {
count {}
}
}
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "AWSManagedRulesCommonRuleSet"
sampled_requests_enabled = true
}
}
rule {
name = "RateLimitRule"
priority = 1
action {
block {}
}
statement {
rate_based_statement {
limit = 2000
aggregate_key_type = "IP"
}
}
visibility_config {
cloudwatch_metrics_enabled = true
cloudwatch_metrics_enabled = true
metric_name = "RateLimit"
sampled_requests_enabled = true
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "ProductionWAF"
sampled_requests_enabled = true
}
}Используем AWS WAF — это официальная документация. Мы настраиваем метрики для CloudWatch, чтобы мониторить 99.9% аптайм.
Cloudflare WAF
Cloudflare WAF работает до того, как трафик добирается до вашей инфраструктуры. Managed Rules автоматически обновляются под актуальные угрозы.
resource "cloudflare_ruleset" "zone_waf" {
zone_id = var.zone_id
name = "Custom WAF Rules"
kind = "zone"
phase = "http_request_firewall_custom"
rules {
action = "block"
expression = "(http.request.uri.path contains \"wp-admin\" and not ip.src in {10.0.0.0/8})"
description = "Block wp-admin from outside"
enabled = true
}
rules {
action = "challenge"
expression = "(cf.threat_score gt 20)"
description = "Challenge high threat score"
enabled = true
}
} Что входит в работу по настройке WAF под ключ?
- Аудит приложения и трафика: анализ логов, выявление уязвимых мест.
- Выбор WAF (ModSecurity / AWS / Cloudflare) с учётом вашей инфраструктуры.
- Развёртывание в режиме мониторинга: сбор срабатываний, анализ false positives.
- Настройка исключений для легитимных запросов.
- Переключение в блокирующий режим с кастомными правилами (rate limiting, geo-blocking).
- Документирование: список правил, исключений, инструкция для команды.
- Обучение разработчиков работе с WAF-логами.
Сроки и стоимость
| Вариант | Срок |
|---|---|
| Cloudflare WAF — базовая настройка managed rules | 1 день |
| AWS WAF для ALB с кастомными правилами | 1–2 дня |
| ModSecurity на Nginx с OWASP CRS | 2–3 дня |
| Любой вариант с настройкой исключений по реальному трафику | +1–2 дня |
Стоимость рассчитывается индивидуально после аудита приложения и анализа трафика.
Как мы гарантируем результат?
Сертифицированные инженеры с опытом работы с WAF более 5 лет. Используем официальные best practices: рекомендации OWASP CRS, AWS Well-Architected Framework. На каждом этапе предоставляем артефакты: отчёты мониторинга, изменения в конфигурации, runbook инцидентов. Гарантируем снижение количества ложных срабатываний до 2-5% после настройки.
Хотите защитить свой проект? Получите консультацию — разберём вашу архитектуру и предложим оптимальное решение. Закажите аудит WAF и мы покажем, как сократить бюджет на безопасность на 30%.







