مراقبة وتسجيل Azure Web Application Firewall

يتم توفير مراقبة Azure Web Application Firewall (WAF) وتسجيله من خلال التسجيل والتكامل باستخدام سجلات Azure Monitor وAzure Monitor.

Azure Monitor

يدمج سجل WAF الخاص بـ Front Door مع Azure Monitor. تتيح لك Azure Monitor تعقب المعلومات التشخيصية بما في ذلك تنبيهات WAF وسجلاته. يمكنك تكوين مراقبة WAF داخل مورد Front Door في المدخل ضمن علامة التبويب Diagnosticsمن خلال البنية الأساسية مع اقتراب التعليمة البرمجية أو باستخدام خدمة Azure Monitor مباشرة.

من مدخل Microsoft Azure، انتقل إلى نوع مورِد Front Door. من علامة التبويب Monitoring/Metrics على اليسار، بإمكانك إضافة WebApplicationFirewallRequestCount لتعقب عدد الطلبات التي تطابق قواعد WAF. يمكن إنشاء عوامل تصفية مخصصة بناء على إلى أنواع الإجراءات وأسماء القواعد.

WAFMetrics

⁧⁩السجلات والتشخيصات⁧⁩

يوفر WAF باستخدام Front Door تقارير مفصلة عن كل طلب وكل خطر يكتشفه. يدمج التسجيل مع سجلات تشخيص Azure وتنبيهاته. يمكن دمج هذه السجلّات مع سجلات Azure Monitor.

WAFDiag

توفر Front Door نوعين من السجلات: سجلات الوصول وسجلات WAF.

سجلات الوصول

يتضمن FrontDoorAccessLog جميع الطلبات التي تمر خلال Front Door. لمزيد من المعلومات حول سجل الوصول لـ Front Door، بما في ذلك مخطط السجل، راجع سجلات Azure Front Door.

يتضمن FrontdoorAccessLog جميع الطلبات التي تمر خلال Front Door. لمزيد من المعلومات حول سجل الوصول لـ Front Door، بما في ذلك مخطط السجل، راجع مراقبة المقاييس والسجلات في Azure Front Door (كلاسيكي).

يعيد استعلام المثال التالي إدخالات سجل الوصول:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

فيما يلي مثالاً لإدخال السجل:

{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontDoorAccessLog",
  "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}
{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontdoorAccessLog",
  "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}

سجلات WAF

يتضمن FrontDoorWebApplicationFirewallLog طلبات تطابُق قاعدة WAF.

يتضمن FrontdoorWebApplicationFirewallLog أي طلب يطابِق قاعدة WAF.

يوضح الجدول التالي القيم المسجلة لكل طلب:

الخاصية الوصف
إجراء الإجراءات المتخذة بناءً على الطلب. تتضمن السجلات طلبات بجميع الإجراءات. تتضمن المقاييس طلبات بجميع الإجراءات باستثناء السجل.
ClientIP عنوان IP للعميل الذي قدم الطلب. في كان هناك عنوان X-Forwarded-For في الطلب، فسيتم اختيار عنوان IP الخاص بالعميل من حقل العنوان بدلا من ذلك.
ClientPort منفذ IP للعميل الذي قدم الطلب.
التفاصيل تفاصيل إضافية حول الطلب، بما في ذلك أي مخاطر تم اكتشافها.
matchVariableName: اسم معلمة HTTP للطلب المتطابق، على سبيل المثال، أسماء العناوين (بحد أقصى 100 حرف).
matchVariableValue: القيم التي نتجت عنها المطابقة (بحد أقصى 100 حرف).
المضيف Hostعنوان الطلب.
النهج اسم نهج WAF الذي تناول معالجة الطلب.
PolicyMode وضع العمليّات لنهج WAF. القيم المُحتملة هي Prevention وDetection.
RequestUri معرف الموارد المنتظم للطلب.
RuleName اسم قاعدة WAF المطابقة للطلب.
SocketIP عنوان IP المورد الذي يراهWAF. يستند عنوان IP هذا إلى جلسة بروتوكول تحكم الإرسال ولا يأخذ في الاعتبار أي عناوين للطلبات.
TrackingReference سلسلة مرجعية فريدة تحدد الطلب الذي ترسله Front Door. ترسل هذه القيمة إلى العميل في عنوان الاستجابة X-Azure-Ref. استخدم هذا الحقل عندما تبحث عن طلب معين في السجل.

يوضح استعلام المثال التالي الطلبات التي تم حظرها منFront Door WAF:

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"
        }
      ]
    }
  }
}

الخطوات التالية

  • تعرّف على المزيد حول Front Door.