سجلات موارد Azure Web Application Firewall

يمكنك مراقبة موارد Web Application Firewall باستخدام السجلات. يمكنك حفظ الأداء والوصول والبيانات الأخرى أو استهلاكها من مورد الأغراض الخاص بالمراقبة.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

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

يمكنك استخدام أنواع مختلفة من السجلات في Azure لإدارة واستكشاف أخطاء application gateways وإصلاحها. يمكنك الوصول إلى بعض هذه السجلات من خلال المدخل. يمكن استخراج جميع السجلات من تخزين Azure Blob وعرضها في أدوات مختلفة، مثل سجلات مراقب Azure وExcel وPower BI. يمكنك معرفة المزيد حول الأنواع المختلفة من السجلات من القائمة التالية:

  • Activity log: يمكنك استخدام سجلات نشاط Azure لعرض كافة العمليات التي تم إرسالها إلى اشتراك Azure وحالتها. يتم تجميع إدخالات سجل النشاط بشكل افتراضي، ويمكنك lمشاهدتها في مدخل Microsoft Azure.
  • Access Resource log: يمكنك استخدام هذا السجل لعرض أنماط الوصول إلى بوابة التطبيق وتحليل المعلومات المهمة. يتضمن ذلك عنوان IP الخاص بالمتصل وعنوان URL المطلوب وزمن انتقال الاستجابة ورمز الإرجاع ووحدات البايت الواردة والمخرجة. يحتوي هذا السجل على سجلات فردية لكل طلب ويربط هذا الطلب ببوابة التطبيق الفريدة التي قامت بمعالجة الطلب. يمكن تحديد مثيلات Application Gateway الفريدة بواسطة معرف مثيل الخاصية.
  • Performance Resource log: يمكنك استخدام هذا السجل لعرض كيفية أداء مثيلات Application Gateway. يسجل هذا التسجيل معلومات الأداء لكل مثيل، بما في ذلك إجمالي الطلبات التي يتم تقديمها، ومعدل النقل بالبايت، وإجمالي الطلبات التي يتم تقديمها، وعدد الطلبات الفاشلة، وعدد مثيلات الخلفية السليمة وغير السليمة. يتم تجميع سجل الأداء كل 60 ثانية. يتوفر سجل الأداء فقط لـ v1 SKU. بالنسبة إلى v2 SKU، استخدم المقاييس لبيانات الأداء.
  • Firewall Resource log: يمكنك استخدام هذا السجل لعرض الطلبات التي تم تسجيلها من خلال وضع الكشف أو المنع لـ application gateway التي تم تكوينها باستخدام جدار حماية تطبيق الويب.

إشعار

تتوفر السجلات فقط للموارد المنشورة في نموذج توزيع Azure Resource Manager. لا يمكنك استخدام سجلات للموارد في نموذج النشر الكلاسيكي. للحصول على فهم أفضل للنموذجين، راجع مقالة فهم نشر Resource Manager والنشر الكلاسيكي.

لديك ثلاثة خيارات لتخزين سجلاتك:

  • حساب التخزين: من الأفضل استخدام حسابات التخزين للسجلات حينما يتم تخزين السجلات لمدة أطول ومراجعتها عند الحاجة.
  • مراكز الأحداث: تعد مراكز الأحداث خياراً رائعاً للتكامل مع معلومات الأمان الأخرى وأدوات إدارة الأحداث (SIEM) للحصول على تنبيهات حول مواردك.
  • سجلات Azure Monitor من الأفضل استخدام سجلات Azure Monitor للمراقبة العامة في الوقت الفعلي لتطبيقك أو الاطلاع على الاتجاهات.

تمكين تسجيل الدخول من خلال PowerShell

يتم تمكين تسجيل النشاط تلقائياً لكل مورد Resource Manager. يجب تمكين الوصول وتسجيل الأداء لبدء تجميع البيانات المتوفرة من خلال تلك السجلات. لتمكين تسجيل الدخول، استخدم الخطوات التالية:

  1. لاحظ معرف مورد حساب التخزين الخاص بك، حيث يتم تخزين بيانات السجل. هذه القيم بالشكل: /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<اسم حساب التخزين>. يمكنك استخدام أي حساب تخزين في اشتراكك. يمكنك استخدام مدخل Microsoft Azure للبحث عن هذه المعلومات.

    المدخل: معرّف المورد لحساب التخزين

  2. لاحظ معرّف مورد application gateway الذي تم تمكين التسجيل له. هذه القيمة هي النموذج: /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<اسم بوابة التطبيق>. يمكنك استخدام المدخل للعثور على هذه المعلومات.

    المدخل: معرّف المورد لـ application gateway

  3. تمكين التسجيل التشخيصي باستعمال أمر PowerShell cmdlet التالي:

    Set-AzDiagnosticSetting  -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true     
    

تلميح

لا تتطلب سجلات النشاط حساب تخزين منفصل. يؤدي استخدام التخزين للوصول وتسجيل الأداء إلى فرض رسوم الخدمة.

تمكين تسجيل الدخول عبر مدخل Microsoft Azure

  1. في مدخل Azure، ابحث عن المورد وحدد Diagnostic settings.

    بالنسبة لـ Application Gateway، تتوفر ثلاثة سجلات:

    • سجل الوصول
    • سجل الأداء
    • سجل جدار الحماية
  2. حدد Add diagnostic setting.

  3. توفر صفحة إعداد التشخيص إعدادات سجلات الموارد. في هذا المثال، يخزن «Log Analytics» السجلات. يمكنك أيضا استخدام مركز أحداث أو حساب تخزين أو حل شريك لحفظ سجلات الموارد.

    لقطة شاشة تعرض إعدادات التشخيص.

  4. اكتب اسما للإعدادات، وتأكد من الإعدادات، وحدد Save.

سجل النشاط

يقوم Azure بإنشاء سجل النشاط بشكل افتراضي. يتم الاحتفاظ بالسجلات لمدة 90 يوماً في مخزن سجلات أحداث Azure. تعرف على المزيد حول هذه السجلات من خلال قراءة مقالة عرض الأحداث وسجل النشاط.

سجل الوصول

يتم إنشاء سجل الوصول فقط إذا قمت بتمكينه على كل مثيل Application Gateway، كما هو مفصّل في الخطوات السابقة. يتم تخزين البيانات في حساب التخزين الذي حددته عند تمكين التسجيل. يسجل كل وصول لـ Application Gateway بتنسيق JSON، كما هو مبين في المثال التالي للإصدار 1:

قيمة ‏‏الوصف
instanceId مثيل Application Gateway الذي قدم الطلب.
ClientIP إنشاء IP للطلب.
clientPort إنشاء منفذ للطلب.
httpMethod طريقة HTTP المستخدمة في الطلب.
requestUri URI للطلب المستلم.
RequestQuery Server-Routed: مثيل تجمع خلفي تم إرسال الطلب إليه.
X-AzureApplicationGateway-LOG-ID: معرف الارتباط المستعمل للطلب. ويمكن استخدامه لاستكشاف مشكلات حركة المرور على الخوادم الخلفية وإصلاحها.
SERVER-STATUS: رمز استجابة HTTP الذي تلقته بوابة التطبيق من النهاية الخلفية.
UserAgent عامل المستخدم من عنوان طلب HTTP.
httpStatus إرجاع التعليمة البرمجية لحالة HTTP إلى العميل من Application Gateway.
httpVersion إصدار HTTP من الطلب.
receivedBytes حجم الحزمة المتلقاة بالبايت.
sentBytes حجم الحزمة المرسلة بالبايت.
timeTaken المدة الزمنية (بالملي ثانية) التي تستغرقها معالجة الطلب وإرسال استجابته. يتم حساب هذا على أنه الفاصل الزمني من وقت تلقي Application Gateway للبايت الأول من طلب HTTP إلى الوقت الذي تنتهي فيه عملية إرسال الاستجابة. من المهم ملاحظة أن حقل الوقت المستغرق يتضمن عادةً الوقت الذي تنتقل فيه حزم الطلب والرد عبر الشبكة.
sslEnabled ما إذا كان الاتصال إلى تجمعات back-end قد استخدم TLS/SSL. القيم الصالحة هي تشغيل وإيقاف.
مضيف اسم المضيف الذي تم إرسال الطلب به إلى الخادم الخلفي. إذا تم تجاوز اسم المضيف الخلفية، فسيعكس هذا الاسم ذلك.
originalHost اسم المضيف الذي تم استلام الطلب به بواسطة Application Gateway من العميل.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "timestamp": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "ApplicationGatewayRole_IN_0",
        "clientIP": "203.0.113.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e&SERVER-STATUS=404",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "host": "www.contoso.com",
        "originalHost": "www.contoso.com"
    }
}

بالنسبة لـ Application Gateway وWAF v2، تظهر السجلات المزيد من التفاصيل:

قيمة ‏‏الوصف
instanceId مثيل Application Gateway الذي قدم الطلب.
ClientIP إنشاء IP للطلب.
clientPort إنشاء منفذ للطلب.
httpMethod طريقة HTTP المستخدمة في الطلب.
requestUri URI للطلب المستلم.
UserAgent عامل المستخدم من عنوان طلب HTTP.
httpStatus إرجاع التعليمة البرمجية لحالة HTTP إلى العميل من Application Gateway.
httpVersion إصدار HTTP من الطلب.
receivedBytes حجم الحزمة المتلقاة بالبايت.
sentBytes حجم الحزمة المرسلة بالبايت.
timeTaken المدة الزمنية (بالملي ثانية) التي تستغرقها معالجة الطلب وإرسال استجابته. يتم حساب هذا على أنه الفاصل الزمني من وقت تلقي Application Gateway للبايت الأول من طلب HTTP إلى الوقت الذي تنتهي فيه عملية إرسال الاستجابة. من المهم ملاحظة أن حقل الوقت المستغرق يتضمن عادةً الوقت الذي تنتقل فيه حزم الطلب والرد عبر الشبكة.
sslEnabled ما إذا كان الاتصال إلى مجموعات back-end قد استخدم TLS. القيم الصالحة هي تشغيل وإيقاف.
sslCipher مجموعة التشفير المستخدمة لاتصال TLS (إذا تم تمكين TLS).
sslProtocol يكون بروتوكول SSL/TLS قيد الاستخدام (في حالة تم تمكين TLS).
serverRouted الخادم الخلفي الذي يقوم application gateway بتوجيه الطلب إليه.
serverStatus التعليمة البرمجية لحالة HTTP للخادم الخلفي.
serverResponseLatency زمن انتقال الاستجابة من الخادم الخلفي.
مضيف العنوان المدرج في عنوان المضيف للطلب.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "time": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "appgw_1",
        "clientIP": "203.0.113.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "sslCipher": "",
        "sslProtocol": "",
        "serverRouted": "104.41.114.59:80",
        "serverStatus": "200",
        "serverResponseLatency": "0.023",
        "host": "www.contoso.com",
    }
}

سجل الأداء

يتم إنشاء سجل الأداء فقط إذا قمت بتمكينه على كل مثيل Application Gateway، كما هو مفصل في الخطوات السابقة. يتم تخزين البيانات في حساب التخزين الذي حددته عند تمكين التسجيل. يتم إنشاء بيانات سجل الأداء في فترات زمنية مدتها دقيقة واحدة. يتوفر فقط لـ v1 SKU. بالنسبة إلى v2 SKU، استخدم المقاييس لبيانات الأداء. يتم تسجيل البيانات التالية:

قيمة ‏‏الوصف
instanceId مثيل Application Gateway الذي يتم إنشاء بيانات الأداء من أجله. بالنسبة لـ application gateway متعددة المثيلات، يوجد صف واحد لكل مثيل.
healthyHostCount عدد المضيفين السليمين في مجموعة back-end.
unHealthyHostCount عدد المضيفين غير السليمين في مجموعة back-end.
requestCount عدد الطلبات التي تقديمها.
زمن الوصول متوسط زمن الوصول (بالملي ثانية) للطلبات من النسخة إلى النهاية الخلفية التي تخدم الطلبات.
failedRequestCount عدد الطلبات الفاشلة.
معدل النقل متوسط معدل النقل منذ السجل الأخير، مقاساً بالبايت في الثانية.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayPerformance",
    "time": "2016-04-09T00:00:00Z",
    "category": "ApplicationGatewayPerformanceLog",
    "properties":
    {
        "instanceId":"ApplicationGatewayRole_IN_1",
        "healthyHostCount":"4",
        "unHealthyHostCount":"0",
        "requestCount":"185",
        "latency":"0",
        "failedRequestCount":"0",
        "throughput":"119427"
    }
}

إشعار

يتم حساب زمن الانتقال من وقت استلام البايت الأول من طلب HTTP إلى وقت إرسال البايت الأخير من استجابة HTTP. إنه مجموع وقت معالجة Application Gateway بالإضافة إلى تكلفة الشبكة حتى النهاية، بالإضافة إلى الوقت الذي تستغرقه حتى النهاية لمعالجة الطلب.

سجل جدار الحماية

يتم إنشاء سجل جدار الحماية فقط إذا قمت بتمكينه لكل application gateway، كما هو مفصل في الخطوات السابقة. كما يتطلب هذا السجل أيضاً تكوين جدار حماية تطبيق الويب على application gateway. يتم تخزين البيانات في الوجهة التي حددتها عند تمكين التسجيل. يتم تسجيل البيانات التالية:

قيمة ‏‏الوصف
instanceId مثيل Application Gateway الذي يتم من أجله إنشاء بيانات جدار الحماية. بالنسبة لـ application gateway متعددة المثيلات، يوجد صف واحد لكل مثيل.
clientIp إنشاء IP للطلب.
requestUri URL للطلب المستلم.
ruleSetType نوع مجموعة القواعد. القيمة المتوفرة هي OWASP.
ruleSetVersion إصدار مجموعة القواعد المستخدمة. القيم المتوفرة هي 2.2.9 و3.0.
ruleId معرّف القاعدة للحدث المشغل.
رسالة رسالة سهلة الاستخدام للحدث المشغل. يتم توفير المزيد من التفاصيل في قسم التفاصيل.
إجراء وضع النهج: الكشف
- المكتشف - هذا هو الإجراء الوحيد ل WAF عندما يكون في وضع الكشف. تمت مطابقة جميع شروط قاعدة معينة وتم تسجيل الطلب ثم تمريره إلى الخلفية.

وضع النهج: منع
- مسموح به - تمت مطابقة جميع الشروط لقاعدة معينة وتم تمرير الطلب إلى الخلفية.
- محظور - تمت مطابقة جميع الشروط لقاعدة معينة وتم حظر الطلب.
- مطابقة - تمت مطابقة شرط واحد/أكثر لقاعدة معينة، ولكن قرار حظر الطلب أو تمريره سيحتاج إلى مزيد من التقييم وسيتم تقييمه استنادا إلى قاعدة تسجيل الخروج عن المألوف النهائية.

وضع النهج: تحدي JS
- JSChallengeIssued: تم إصداره بسبب إزالة التحدي المفقودة/غير الصالحة، الإجابة المفقودة.

يتم إنشاء هذا السجل عندما يطلب عميل الوصول إلى تطبيق ويب للمرة الأولى ولم يتم تحديه مسبقا. يتلقى هذا العميل صفحة تحدي JS ويتابع لحساب تحدي JS. عند الحساب الناجح، يتم منح العميل ملف تعريف ارتباط الصلاحية.

- JSChallengePass: تم تمريره بسبب إجابة تحدي صالحة.

يتم إنشاء هذا السجل عندما يحل العميل تحدي JS ويعيد إرسال الطلب بالإجابة الصحيحة. في هذه الحالة، يتحقق Azure WAF من صحة ملف تعريف الارتباط ويتابع معالجة القواعد المتبقية دون إنشاء تحدي JS آخر.

- JSChallengeValid: مسجل/تمرير بسبب تحدي صالح

يتم إنشاء هذا السجل عندما يكون العميل قد حل تحديا مسبقا. في هذه الحالة، يسجل Azure WAF الطلب ويتابع معالجة القواعد المتبقية.

- JSChallengeBlock: محظور

يتم إنشاء هذا السجل عند فشل حساب تحدي JS.
موقع الموقع الذي تم إنشاء السجل من أجله. حاليا، يتم سرد العمومية فقط لأن القواعد عمومية.
details تفاصيل الحدث المشغل.
details.message وصف القاعدة.
details.data بيانات محددة تم العثور عليها عند الطلب تطابق القاعدة.
details.file ملف التكوين الذي يحتوي على القاعدة.
details.line رقم السطر في ملف التكوين الذي قام بتشغيل الحدث.
اسم المضيف اسم المضيف أو عنوان IP لـ Application Gateway.
transactionId معرّف فريد لمعاملة معينة يساعد في تجميع انتهاكات القواعد المتعددة التي حدثت في نفس الطلب.
policyId المعرف الفريد لسياسة جدار الحماية المقترن بعبارة التطبيق أو وحدة الإصغاء أو المسار.
policyScope موقع النهج - يمكن أن تكون القيم "Global" أو "Listener" أو "Location".
policyScopeName اسم العنصر حيث يتم تطبيق النهج.
{
  "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
  "operationName": "ApplicationGatewayFirewall",
  "time": "2017-03-20T15:52:09.1494499Z",
  "category": "ApplicationGatewayFirewallLog",
  "properties": {
      "instanceId": "ApplicationGatewayRole_IN_0",
      "clientIp": "203.0.113.147",
      "requestUri": "/",
      "ruleSetType": "OWASP",
      "ruleSetVersion": "3.0",
      "ruleId": "920350",
      "ruleGroup": "920-PROTOCOL-ENFORCEMENT",
      "message": "Host header is a numeric IP address",
      "action": "Matched",
      "site": "Global",
      "details": {
        "message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
        "data": "127.0.0.1",
        "file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
        "line": "791"
      },
      "hostname": "127.0.0.1",
      "transactionId": "16861477007022634343",
      "policyId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
      "policyScope": "Listener",
      "policyScopeName": "httpListener1"
    }
  }
}

عرض سجل النشاط وتحليله

يمكنك عرض بيانات سجل النشاط وتحليلها باستخدام أي من الطرق التالية:

عرض وتحليل سجلات الوصول، والأداء، وجدار الحماية

يمكن أن تجمع سجلات Azure Monitor ملفات الحساب وسجل الأحداث من حساب تخزين كائن ثنائي كبير الحجم Blob storage. يتضمن تصورات وقدرات بحث قوية لتحليل سجلاتك.

يمكنك أيضاً الاتصال بحساب التخزين لديك واسترداد إدخالات سجل JSON للوصول وسجلات الأداء. بعد تنزيل ملفات JSON، يمكنك تحويلها إلى CSV وعرضها في Excel أو Power BI أو أي أداة أخرى لتصور البيانات.

تلميح

إذا كنت على دراية بـ Visual Studio والمفاهيم الأساسية لتغيير قيم الثوابت والمتغيرات في C#، فيمكنك استخدام أدوات محول السجل المتوفرة من GitHub.

تحليل سجلات الوصول من خلال GoAccess

يمكنك أيضاً استخدام قالب Resource Manager الذي يقوم بتثبيت محلل السجلات الشائع GoAccess وتشغيله بالنسبة لسجلات الوصول في Application Gateway. يوفر GoAccess إحصاءات استخدام شبكة HTTP قيِّمة، مثل الزوار الفريدين، والملفات المطلوبة، والمضيفين، وأنظمة التشغيل، والمتصفحات ورموز حالة HTTP. لمزيد من التفاصيل، الرجاء مراجعة الملف التمهيدي في مجلد نموذج Resource Manager في GitHub.

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