Настройка WAF: ModSecurity, Cloudflare и AWS WAF

Стандартные сетевые экраны не видят атак на уровне приложения, поэтому SQL-инъекции и XSS беспрепятственно достигают кода. Мы настраиваем WAF (ModSecurity, Cloudflare, AWS WAF) и закрываем эти векторы до того, как запрос дойдёт до приложения. Наша команда реализует проект под ключ — от выбора правил до сопровождения, обеспечивая надёжную защиту без срыва сроков.
Часто задаваемые вопросы

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%.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139