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

يوفر Azure Web Application Firewall في Azure Front Door تسجيلا شاملا وبيانات تتبع الاستخدام لمساعدتك على فهم كيفية أداء جدار حماية تطبيق الويب والإجراءات التي يتخذها.

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

المقاييس

يقوم Azure Front Door تلقائيا بتسجيل المقاييس لمساعدتك على فهم سلوك WAF الخاص بك.

للوصول إلى مقاييس WAF:

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى ملف تعريف Azure Front Door.
  2. في الجزء الموجود في أقصى اليسار ضمن Monitoring، حدد علامة التبويب Metrics.
  3. أضف مقياس عدد طلبات جدار حماية تطبيق ويب لتعقب عدد الطلبات التي تطابق قواعد WAF.

يمكنك إنشاء عوامل تصفية مخصصة استنادا إلى أنواع الإجراءات وأسماء القواعد. تتضمن المقاييس طلبات مع جميع الإجراءات باستثناء Log.

Screenshot that shows the metrics for an Azure Front Door WAF.

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

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

لا يتم تمكين السجلات بشكل افتراضي. يجب تمكين السجلات بشكل صريح. يمكنك تكوين السجلات في مدخل Microsoft Azure باستخدام علامة التبويب Diagnostic settings .

Screenshot that shows how to enable the WAF logs.

إذا تم تمكين التسجيل وتم تشغيل قاعدة WAF، يتم تسجيل أي أنماط مطابقة في نص عادي لمساعدتك في تحليل سلوك نهج WAF وتصحيحه. يمكنك استخدام الاستثناءات لضبط القواعد واستبعاد أي بيانات تريد استبعادها من السجلات. لمزيد من المعلومات، راجع قوائم استثناء جدار حماية تطبيق الويب في Azure Front Door.

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

سجلات الوصول

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

يتضمن السجل FrontdoorAccessLog جميع الطلبات التي تمر عبر Azure Front Door. لمزيد من المعلومات حول سجل الوصول إلى Azure 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.

يعرض الجدول التالي القيم المسجلة لكل طلب.

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

يوضح استعلام المثال التالي الطلبات التي حظرها Azure 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"
        }
      ]
    }
  }
}

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

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