Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Движок правил

PRX-WAF использует декларативный движок правил на базе YAML для обнаружения и блокировки веб-атак. Правила описывают, что проверять, как сопоставлять и какое действие предпринять. Движок оценивает каждый входящий запрос по всем включённым правилам в 16 последовательных фазах обнаружения.

Как работают правила

Каждое правило состоит из четырёх ключевых компонентов:

  1. Field — Какую часть запроса проверять (path, query, body, headers и т.д.)
  2. Operator — Как сопоставлять значение (regex, contains, detect_sqli и т.д.)
  3. Value — Паттерн или порог для сопоставления
  4. Action — Что делать при срабатывании правила (block, log, allow)
yaml
- id: "CUSTOM-001"
  name: "Block admin path from external IPs"
  category: "access-control"
  severity: "high"
  field: "path"
  operator: "regex"
  value: "(?i)^/admin"
  action: "block"

Источники правил

PRX-WAF поставляется с 398 правилами в четырёх категориях:

ИсточникФайлыПравилаОписание
OWASP CRS21310OWASP ModSecurity Core Rule Set v4 (конвертирован в YAML)
ModSecurity446Правила сообщества для репутации IP, DoS, утечки данных
CVE Patches739Виртуальные патчи для Log4Shell, Spring4Shell, MOVEit и т.д.
Custom13Примеры шаблонов для правил конкретного приложения

Дополнительно PRX-WAF включает 10+ встроенных детекторов, скомпилированных в бинарный файл:

  • SQL-инъекции (libinjection + regex)
  • Межсайтовый скриптинг (libinjection + regex)
  • Удалённое выполнение кода / внедрение команд
  • Включение локальных/удалённых файлов
  • Подделка запросов на стороне сервера (SSRF)
  • Обход пути/каталога
  • Обнаружение сканеров (Nmap, Nikto и т.д.)
  • Обнаружение ботов (вредоносные боты, AI-краулеры, headless-браузеры)
  • Обнаружение нарушений протокола
  • Обнаружение конфиденциальных слов (многопаттерное сопоставление Aho-Corasick)

Форматы правил

PRX-WAF поддерживает три формата файлов правил:

ФорматРасширениеОписание
YAML.yaml, .ymlНативный формат PRX-WAF (рекомендуется)
ModSecurity.confДирективы SecRule (базовое подмножество: ARGS, REQUEST_HEADERS, REQUEST_URI, REQUEST_BODY)
JSON.jsonМассив JSON-объектов правил

Полный справочник схемы см. в Синтаксисе YAML.

Уровни паранойи

Каждое правило объявляет уровень паранойи (1-4), который управляет агрессивностью сопоставления. Более высокие уровни обнаруживают больше атак, но увеличивают риск ложных срабатываний.

УровеньНазваниеОписаниеРиск ложных срабатываний
1По умолчаниюВысокодостоверные правила, безопасны для продакшенаОчень низкий
2РекомендуемыйБолее широкое покрытие, незначительный риск ЛСНизкий
3АгрессивныйОбширная эвристика, требует настройкиУмеренный
4МаксимальныйВсё, включая спекулятивные паттерныВысокий

TIP

Начните с уровня паранойи 1 в продакшене. Следите за журналами, настраивайте исключения, затем постепенно включайте более высокие уровни.

Горячая перезагрузка

PRX-WAF следит за каталогом rules/ на предмет изменений файлов и автоматически перезагружает правила при создании, изменении или удалении файла. Изменения вступают в силу в течение настроенного окна подавления дребезга (по умолчанию: 500 мс).

Вы также можете запустить перезагрузку вручную:

bash
# Через CLI
prx-waf rules reload

# Через SIGHUP (только Unix)
kill -HUP $(pgrep prx-waf)

Перезагрузки правил выполняются атомарно — старый набор правил продолжает обслуживать трафик до тех пор, пока новый не будет полностью скомпилирован и готов.

Структура каталога

rules/
├── owasp-crs/          # OWASP CRS v4 (21 файл, 310 правил)
│   ├── sqli.yaml       # SQL-инъекции (CRS 942xxx)
│   ├── xss.yaml        # Межсайтовый скриптинг (CRS 941xxx)
│   ├── rce.yaml        # Удалённое выполнение кода (CRS 932xxx)
│   └── ...
├── modsecurity/        # Правила сообщества ModSecurity
├── cve-patches/        # Виртуальные патчи CVE (Log4Shell, Spring4Shell и т.д.)
├── custom/             # Ваши правила для конкретного приложения
└── tools/              # Утилиты для валидации и синхронизации правил

Следующие шаги

Released under the Apache-2.0 License.