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


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

Azure Брандмауэр веб-приложений в 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.

Настраиваемые фильтры можно создавать на основе типов действий и имен правил. Метрики включают запросы со всеми действиями, кроме Log.

Снимок экрана: метрики для WAF Azure Front Door.

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

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

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

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

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

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

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

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

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

Снимок экрана: включение журналов WAF.

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

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

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

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

Журналы WAF

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

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

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

Свойство Description
Действие Действие, выполняемое с запросом. Журналы включают запросы со всеми действиями. Действия:
  • 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: Loged/passthrough из-за допустимой проблемы.

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

    Этот журнал создается при сбое вычисления проблем JS.
ClientIP IP-адрес отправившего запрос клиента. Если в запросе был указан заголовок X-Forwarded-For, то IP-адрес клиента вместо этого выбирается из поля заголовка.
ClientPort IP-порт клиента, отправившего запрос.
Сведения Дополнительные сведения о запросе, включая обнаруженные угрозы.
matchVariableName: http-имя параметра соответствующего запроса, например имена заголовков (не более 100 символов).
matchVariableValue: значения, активировающие совпадение (не более 100 символов).
Хост Заголовок запроса Host.
Политика Имя политики WAF, которая обработала запрос.
PolicyMode Режим работы политики WAF. Возможные значения: Prevention и Detection.
RequestUri Полный универсальный код ресурса (URI) запроса.
RuleName Имя правила WAF, которому соответствует запрос.
SocketIP Исходный IP-адрес, видимый WAF. Этот IP-адрес основан на сеансе TCP и не учитывает заголовки запросов.
TrackingReference Уникальная справочная строка, определяющая запрос, обслуживаемый 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.