Поделиться через


Мониторинг и ведение журнала для Брандмауэра веб-приложений Azure

Azure Web Application Firewall в Azure Front Door предоставляет обширные возможности для ведения журналов и телеметрии, чтобы помочь вам понять, как работает ваш брандмауэр веб-приложений (WAF) и какие действия он выполняет.

Журнал WAF Azure Front Door интегрирован с Azure Monitor. Azure Monitor позволяет отслеживать диагностические сведения, включая оповещения и журналы WAF. Вы можете настроить мониторинг WAF в ресурсе Azure Front Door на портале Azure на вкладке "Диагностика", с помощью подхода инфраструктуры как кода или напрямую используя Azure Monitor.

Метрики

Azure Front Door автоматически записывает метрики, помогающие понять поведение WAF.

Чтобы получить доступ к метрикам WAF, выполните приведенные ниже действия.

  1. Войдите в портал Azure и перейдите в профиль Azure Front Door.
  2. На левой панели в разделе "Мониторинг" выберите вкладку "Метрики ".
  3. Добавьте метрику Счетчик запросов брандмауэра веб-приложений, чтобы отслеживать количество запросов, соответствующих правилам брандмауэра веб-приложений (WAF).

Настраиваемые фильтры можно создавать на основе типов действий и имен правил. Метрики включают запросы с конечными действиями, такими как Block и Allow, а также запросы, в которых WAF не предпринял никаких действий. Так как несколько не завершающихся действий могут быть активированы одним запросом, они исключаются из этой метрики, чтобы избежать дублирования количества запросов.

Снимок экрана, показывающий метрики WAF Azure Front Door.

Метрики вызовов JavaScript (предварительная версия)

Чтобы получить доступ к метрикам WAF для вызовов JavaScript, выполните следующие действия.

  • Добавьте метрику Брандмауэр веб-приложений JS Challenge Request Count для отслеживания количества запросов, соответствующих правилам WAF для JavaScript.

Следующие фильтры предоставляются в рамках этой метрики:

  • PolicyName: это имя политики WAF
  • Правило. Это может быть любое пользовательское правило или правило бота
  • Действие. Существует четыре возможных значения для действия JS Challenge
    • Выдано: JS Challenge запускается в первый раз
    • Передано: вычисление JS Challenge успешно выполнено, и был получен ответ
    • Допустимо: файл cookie для проверки подлинности JS Challenge присутствовал
    • Заблокировано: сбой вычислений JS Challenge

Снимок экрана: метрики вызовов JavaScript.

Журналы и диагностика

WAF Azure Front Door предоставляет подробные отчеты по каждому запросу и каждой обнаруженной угрозе. Логирование интегрировано с диагностическими журналами и предупреждениями Azure с помощью журналов Azure Monitor.

Журналы по умолчанию не включены. Необходимо явно включить журналы. Вы можете настроить журналы в портале Azure с помощью вкладки параметров диагностики.

Если ведение журнала включено и запускается правило WAF, все соответствующие шаблоны регистрируются в виде обычного текста, чтобы помочь вам проанализировать и отладить поведение политики WAF. Вы можете использовать исключения для точной настройки правил и исключения любых данных, которые необходимо исключить из журналов. Дополнительные сведения см. в списках исключений брандмауэра веб-приложений в Azure Front Door.

Вы можете включить три типа журналов Azure Front Door:

  • Журналы WAF
  • Журналы доступа
  • Журналы проб работоспособности

Журналы действий включены по умолчанию и предоставляют видимость операций, выполняемых в ресурсах Azure, таких как изменения конфигурации профиля Azure Front Door.

Журналы WAF

FrontDoorWebApplicationFirewallLog Журнал содержит запросы, соответствующие правилу WAF.

FrontdoorWebApplicationFirewallLog Журнал содержит любой запрос, соответствующий правилу WAF.

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

Недвижимость Описание
Действие Принятое действие по запросу. Журналы включают запросы и все действия. Действия:
  • Allow и allow: запрос был разрешен для продолжения обработки.
  • Block и block: запрос соответствует правилу WAF, настроенном для блокировки запроса. Кроме того, достигнуто пороговое значение оценки аномалий, и запрос был заблокирован.
  • Log и log: запрос соответствовал правилу WAF, настроенного на использование действия Log.
  • AnomalyScoring и logandscore: запрос соответствовал правилу WAF. Правило способствует оценке аномалий. Запрос может быть заблокирован или нет в зависимости от других правил, которые выполняются в том же запросе.
  • JS Challenge и JSChallengeIssued: выдано из-за отсутствия или недопустимого ответа на запрос, отсутствие ответа.

    Журнал создается, когда клиент запрашивает доступ к веб-приложению впервые и ранее не был оспорен. Этот клиент получает страницу задач JS и переходит к вычислению задачи JS. При успешном вычислении клиент получает файл cookie допустимости.
  • JS Challenge и JSChallengePass: прошли благодаря правильному ответу на задачу.

    Этот журнал создается, когда клиент решает задачу JS и повторно отправляет запрос с правильным ответом. В этом случае Azure WAF проверяет файл cookie и переходит к обработке оставшихся правил без создания другого вызова JS.
  • JS Challenge and JSChallengeValid: Зарегистрировано/пропуск из-за допустимого вызова.

    Этот журнал создается, когда клиент ранее решил проблему. В этом случае Azure WAF регистрирует запрос и переходит к обработке оставшихся правил.
  • JS Challenge и JSChallengeBlock: заблокировано

    Этот лог создается при сбое вычисления задачи JS.
IP клиента IP-адрес отправившего запрос клиента. Если в запросе был указан заголовок X-Forwarded-For, то IP-адрес клиента вместо этого выбирается из поля заголовка.
КлиентПорт IP-порт клиента, отправившего запрос.
Сведения Дополнительные сведения о запросе, включая обнаруженные угрозы.
matchVariableName: http-имя параметра соответствующего запроса, например имена заголовков (не более 100 символов).
matchVariableValue: значения, активирующие совпадение (не более 100 символов).
Хост Заголовок запроса Host.
Политика Имя политики WAF, которая обработала запрос.
Режим политики Режим работы политики WAF. Возможные значения: Prevention и Detection.
RequestUri (URI запроса) Полный URI запроса.
Название правила Имя правила WAF, которому соответствует запрос.
СокетIP Исходный IP-адрес, который видит WAF. Этот IP-адрес основан на сеансе TCP и не учитывает заголовки запросов.
Справочник по отслеживанию Уникальная строка ссылки, которая идентифицирует запрос, обслуженный Azure Front Door. Это значение отправляется клиенту в заголовке ответа X-Azure-Ref. Используйте это поле при поиске определенного запроса в журнале.

В следующем примере запроса показаны запросы, заблокированные WAF Azure Front Door:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

В следующем фрагменте кода показан пример записи журнала, включая причину блокировки запроса:

{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Cdn/Profiles/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}
{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}

Дополнительные сведения о других журналах Azure Front Door см. в разделе "Мониторинг метрик и журналов" в Azure Front Door.

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

Узнайте больше о Azure Front Door.