Налаштування WAF: ModSecurity, Cloudflare та AWS WAF

Стандартні мережеві екрани не бачать атак на рівні застосунку, тому SQL-ін'єкції та XSS безперешкодно досягають коду. Ми налаштовуємо WAF (ModSecurity, Cloudflare, AWS WAF) і закриваємо ці вектори до того, як запит дійде до застосунку. Наша команда реалізує проєкт під ключ — від вибору правил до супроводу, забезпечуючи надійний захист без зриву термінів.
Часті запитання

Налаштування WAF: ModSecurity, Cloudflare та AWS WAF

WAF виявляє атаки на рівні HTTP, які мережевий фаєрвол пропускає. SQL-ін'єкція в параметрі запиту, XSS у заголовку User-Agent, path traversal в URL — все це проходить через Security Groups і потрапляє в додаток. WAF аналізує тіло запиту та приймає рішення до того, як код обробить дані. Щодня через наш WAF проходять мільйони запитів, лише одиниці дають хибні спрацьовування.

WAF — необхідний бар'єр

Розробники іноді покладаються лише на WAF, відкладаючи виправлення коду. Але WAF не панацея — він блокує відомі вектори, а не логічні вразливості. Наш досвід: правильне налаштування WAF дає 90% покриття OWASP Top 10 при грамотному управлінні виключеннями. За 5+ років ми впровадили WAF на понад 30 проєктах — від високонавантажених SaaS до legacy-рішень. Інженери мають сертифікати AWS та Cloudflare, середній стаж — 6 років. Завдяки 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
Хибні спрацьовування Високі (потребують кастомних виключень) Середні Низькі (автоматичні оновлення)
Вартість (орієнтовна) Безкоштовний (лише ресурси сервера), налаштування від 2000$ Плата за WebACL + правила, налаштування від 1000$ Тарифікація за планом, налаштування від 500$

Вибір WAF залежить від архітектури: ModSecurity краще для самописних рішень, AWS WAF — якщо інфраструктура вже в AWS, Cloudflare — при використанні їхнього CDN. Cloudflare WAF налаштовується в 2 рази швидше за ModSecurity.

Чому 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 під ключ?

  1. Аудит додатка та трафіку: аналіз логів, виявлення вразливих місць.
  2. Вибір WAF (ModSecurity / AWS / Cloudflare) з урахуванням вашої інфраструктури.
  3. Розгортання в режимі моніторингу: збір спрацьовувань, аналіз false positives.
  4. Налаштування виключень для легітимних запитів.
  5. Перемикання в блокуючий режим з кастомними правилами (rate limiting, geo-blocking).
  6. Документування: список правил, виключень, інструкція для команди.
  7. Навчання розробників роботі з WAF-логами.

Вартість налаштування залежить від складності: Cloudflare WAF — від 500$, AWS WAF — від 1000$, ModSecurity — від 2000$. Економія на безпеці — до 30% завдяки нашому досвіду.

Терміни та вартість

Варіант Термін Орієнтовна вартість
Cloudflare WAF — базове налаштування managed rules 1 день від 500$
AWS WAF для ALB з кастомними правилами 1–2 дні від 1000$
ModSecurity на Nginx з OWASP CRS 2–3 дні від 2000$
Будь-який варіант з налаштуванням виключень за реальним трафіком +1–2 дні +50% до базової вартості

Вартість розраховується індивідуально після аудиту додатка та аналізу трафіку.

Як ми гарантуємо результат?

Сертифіковані інженери з багаторічним досвідом роботи з WAF (середній стаж — 6 років, понад 30 проєктів). Використовуємо офіційні best practices: рекомендації OWASP CRS, AWS Well-Architected Framework. На кожному етапі надаємо артефакти: звіти моніторингу, зміни в конфігурації, runbook інцидентів. Гарантуємо зниження кількості хибних спрацьовувань до 2-5% після налаштування.

Бажаєте захистити свій проєкт? Отримайте консультацію — розберемо вашу архітектуру та запропонуємо оптимальне рішення. Замовте аудит WAF і ми покажемо, як скоротити бюджет на безпеку на 30%.

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

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142