IBCOURSES / СПРАВОЧНИК ИБ

AWS WAF COUNT: совпадение правила и итог запроса

К ответу ↓

COUNT фиксирует совпадение, но не принимает окончательное решение о запросе. Проверьте итоговый action и уровень переопределения правила или группы.

Например
Материалов с пояснениями: 94 · Записей реестров: 11 678

Уточнить поиск

События и журналы

Найдено: 84
Инструкция по проверке

AWS WAF COUNT: совпадение правила и итог запроса

COUNT фиксирует совпадение, но не принимает окончательное решение о запросе. Проверьте итоговый action и уровень переопределения правила или группы.

Условия и вопрос расследования

Эта процедура отвечает на вопрос «почему правило сработало, но клиент получил ответ» и на обратный случай «почему Count не спас от блокирования». Сначала закрепите конкретный requestId, период, web ACL и защищаемый ресурс. Нужен журнал обработки, а не только счётчик метрики. Сохраните конфигурацию правила и групп на момент запроса: снимок текущего состояния может описывать уже другой режим. В карточке не предлагается менять политику; диагностика выполняется чтением доступных данных.

Как найти совпадение

В копии JSONL ищите action=COUNT внутри nonTerminatingMatchingRules, включая соответствующие массивы вложенных групп. Пример jq выбирает обе формы и оставляет общий action вместе с деталями. Перед применением сверьте формат файла и наличие обёртки доставки. Не ищите только верхнеуровневое action=COUNT: для обычной обработки здесь нужен итоговый завершающий исход. После отбора сузьте результаты до одного ACL и интервала, иначе одинаковый ruleId из другой среды создаст ложную связь.

Пример и допустимый вывод

Синтетический запрос /catalog совпал с DemoObservation. Это совпадение помечено COUNT, а итоговый action=ALLOW и terminatingRuleId=Default_Action. Значит, в данном примере оценка продолжилась и завершилась действием по умолчанию. Запись не подтверждает, что приложение успешно обработало запрос или что пользователь выполнил бизнес-операцию. Для этого нужен ответ обслуживающей системы. Если итоговый action был бы BLOCK, причиной остановки следовало бы считать указанное завершающее правило, сохраняя COUNT как предшествующий контекст.

Правило и группа — разные уровни

Проверьте, изменено ли действие отдельного правила через RuleActionOverrides или в Count превращён только результат целой группы. Во втором случае внутренняя оценка группы могла остановиться на первом завершающем правиле, а наружу вернулся Count. Поэтому нельзя заключать, что все последующие правила внутри группы тоже были проверены. Старое ExcludedRules и нынешний механизм overrides также требуют различать по конфигурации. Официальное описание разделяет эти режимы; в заметке укажите найденный уровень, не объединяя всё словом «тестовый режим».

Следующая проверка

Сравните общий исход с HTTP-наблюдением клиента и журналом приложения. Соберите несколько запросов одного сценария, сохраняя время, ресурс и идентификатор: два соседних запроса могут иметь разные решения. Для оценки ложного срабатывания сравните условия правила с ожидаемыми данными приложения и действовавшими исключениями. Совпадение сигнатуры, деловой ущерб и фактический доступ к данным оформляйте разными выводами. Предложение изменить правило должно рассматриваться отдельно с владельцем; эта инструкция не выполняет переключение Count/Block.

Если COUNT-срабатывание не найдено

Сначала проверьте вложенные группы, период, точный ruleId и редактирование конфигурации. Раннее завершающее правило могло не дать нужному правилу выполниться. Кроме того, фильтр отправки может исключать Count-записи, а доступная выборка не обязана охватывать весь трафик. Сверьте доставку и хранение журнала. При отсутствии данных запишите, какой участок цепочки неизвестен, и не заменяйте его выводом «совпадений не было». Пустой результат представленного jq также может означать другой формат экспорта, а не неисправность WAF. Ошибка чтения файла, отказ в доступе или ошибка разбора JSON не являются пустой выборкой. Для этого шага нужны права чтения выданной копии; при их отсутствии запросите доступную копию у владельца источника, сохранив сообщение об ошибке.

Поля и область применения

Исходное полеСмысл и ограничения
nonTerminatingMatchingRules[].ruleIdПравило верхнего уровня с незавершающим совпадением.
nonTerminatingMatchingRules[].actionCOUNT относится к этому совпадению, а не к общему исходу.
action / terminatingRuleIdОбщий исход и правило, завершившее оценку.
ruleGroupList[].nonTerminatingMatchingRulesСовпадения внутри группы; не терять вложенность.
ruleGroupList[].terminatingRuleВнутренний итог группы может отличаться от возвращённого в web ACL действия.
overriddenActionИсходно настроенное действие при документированном override, если поле присутствует.
httpRequest.requestId / timestampСопоставление конкретного запроса и периода.
labelsДополнительные признаки обработки; сами по себе не доказательство блокирования.

Примеры записей

Данные в примерах условные. Состав полей зависит от версии и настроек источника.

Пример фрагмента: правило посчитало запрос, ACL разрешил его

Фрагмент журнала. Сокращённый фрагмент по документированной форме AWS WAF v2; значения условные. Неуказанные поля опущены.

{
  "timestamp": 1793782801000,
  "formatVersion": 1,
  "action": "ALLOW",
  "terminatingRuleId": "Default_Action",
  "terminatingRuleType": "REGULAR",
  "nonTerminatingMatchingRules": [
    {
      "ruleId": "DemoObservation",
      "action": "COUNT",
      "ruleMatchDetails": []
    }
  ],
  "ruleGroupList": [],
  "httpRequest": {
    "clientIp": "192.0.2.30",
    "httpMethod": "GET",
    "uri": "/catalog",
    "requestId": "demo-request-002"
  }
}

Команды и способы проверки

Укажите свой узел, путь к журналу и временной интервал. Требуемая среда указана рядом с командой.

jq 1.6/1.7, чтение локальной JSONL-копии; укажите своё имя файла. Период и нужный ресурс нужно ограничить отдельно: приведённый фильтр времени не содержит.

jq -c 'select(any(.nonTerminatingMatchingRules[]?; .action == "COUNT") or any(.ruleGroupList[]?.nonTerminatingMatchingRules[]?; .action == "COUNT") or any(.ruleGroupList[]?.excludedRules[]?; .exclusionType == "EXCLUDED_AS_COUNT")) | {timestamp, webaclId, action, terminatingRuleId, nonTerminatingMatchingRules, ruleGroupList, httpRequest}' waf.jsonl

Первоисточники

COUNT не доказывает разрешение запроса: последующее правило может его блокировать.

Связанные материалы

Как пользоваться техническим справочником

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

Материалы по разделам

События и журналы

Два ответа рядом

Сравнение источников

Сравнение показывает различия. События и поля разных систем не считаются эквивалентными.

Выберите службу

В списке — службы, доступные с текущими условиями. Число рядом — количество записей портов, а не программ на вашем узле.

Как искать в справочнике

Введите число, код, фрагмент сообщения или вопрос. Известный идентификатор поможет найти карточку; это не анализ самого инцидента.

  1. Введите номер, код, имя или фрагмент записи. Для портов можно использовать список: 80, 443, 8000–8010.
  2. Уточните поиск фильтрами. Все условия действуют одновременно. Числа в списках показывают, сколько материалов останется при выборе варианта.
  3. Службу выбирайте из каталога: поиск внутри списка помогает найти название, а кнопка «Выбрать» применяет его.
  4. Убирайте отдельные условия кнопкой × рядом с фильтром. «Сбросить фильтры» сохраняет текст поиска и текущий раздел.
  5. В карточке сверьте источник, версию и условия регистрации, затем откройте поля, примеры и первоисточник.

/ — перейти к поиску. Прямые ссылки открывают выбранную карточку в этом же справочнике.

Назначения портов и коды приведены по официальным реестрам. Версии, условия регистрации и ссылки на документацию указаны в карточках.

Избранное и недавние материалы хранятся в этом браузере. Запрос и фильтры сохраняются при возврате к выдаче и обновлении вкладки. Поиск работает локально.

Что есть в справочнике

От вопроса к свидетельствам: кто вошёл, что запустил, к каким данным обратился, что изменил и где искать следы.

Выберите область, чтобы посмотреть доступные источники и перейти к материалам.

Уточнить или исправить ответ

Скопируйте сообщение и отправьте его на mail@ibcourses.ru.