مشاركة عبر


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

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

Note

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

Diagnostic logs

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

  • Activity log: You can use Azure activity logs to view all operations that are submitted to your Azure subscription, and their status. يتم تجميع إدخالات سجل النشاط بشكل افتراضي، ويمكنك lمشاهدتها في مدخل Microsoft Azure.
  • Access Resource log: يمكنك استخدام هذا السجل لعرض أنماط الوصول إلى بوابة التطبيق وتحليل المعلومات المهمة. يتضمن ذلك عنوان IP الخاص بالمتصل وعنوان URL المطلوب وزمن انتقال الاستجابة ورمز الإرجاع ووحدات البايت الواردة والمخرجة. يحتوي هذا السجل على سجلات فردية لكل طلب ويربط هذا الطلب ببوابة التطبيق الفريدة التي قامت بمعالجة الطلب. يمكن تحديد مثيلات Application Gateway الفريدة بواسطة معرف مثيل الخاصية.
  • Performance Resource log: يمكنك استخدام هذا السجل لعرض كيفية أداء مثيلات Application Gateway. يسجل هذا التسجيل معلومات الأداء لكل مثيل، بما في ذلك إجمالي الطلبات التي يتم تقديمها، ومعدل النقل بالبايت، وإجمالي الطلبات التي يتم تقديمها، وعدد الطلبات الفاشلة، وعدد مثيلات الخلفية السليمة وغير السليمة. يتم تجميع سجل الأداء كل 60 ثانية. يتوفر سجل الأداء فقط لـ v1 SKU. For the v2 SKU, use Metrics for performance data.
  • Firewall Resource log: يمكنك استخدام هذا السجل لعرض الطلبات التي تم تسجيلها من خلال وضع الكشف أو المنع لـ application gateway التي تم تكوينها باستخدام جدار حماية تطبيق الويب.

Note

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

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

  • Storage account: Storage accounts are best used for logs when logs are stored for a longer duration and reviewed when needed.
  • Event hubs: Event hubs are a great option for integrating with other security information and event management (SIEM) tools to get alerts on your resources.
  • سجلات 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     
    

Tip

Activity logs do not require a separate storage account. يؤدي استخدام التخزين للوصول وتسجيل الأداء إلى فرض رسوم الخدمة.

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

  1. In the Azure portal, find your resource and select Diagnostic settings.

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

    • Access log
    • Performance log
    • Firewall log
  2. حدد Add diagnostic setting.

  3. The Diagnostic setting page provides the settings for the resource logs. في هذا المثال، يخزن «Log Analytics» السجلات. يمكنك أيضا استخدام مركز أحداث أو حساب تخزين أو حل شريك لحفظ سجلات الموارد.

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

  4. Type a name for the settings, confirm the settings, and select Save.

Activity log

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

Access log

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

Value Description
instanceId مثيل Application Gateway الذي قدم الطلب.
clientIP إنشاء IP للطلب.
clientPort إنشاء منفذ للطلب.
httpMethod طريقة HTTP المستخدمة في الطلب.
requestUri URI للطلب المستلم.
RequestQuery Server-Routed: Back-end pool instance that was sent the request.
X-AzureApplicationGateway-LOG-ID: Correlation ID used for the request. ويمكن استخدامه لاستكشاف مشكلات حركة المرور على الخوادم الخلفية وإصلاحها.
SERVER-STATUS: HTTP response code that Application Gateway received from the back end.
UserAgent عامل المستخدم من عنوان طلب HTTP.
httpStatus إرجاع التعليمة البرمجية لحالة HTTP إلى العميل من Application Gateway.
httpVersion إصدار HTTP من الطلب.
receivedBytes حجم الحزمة المتلقاة بالبايت.
sentBytes حجم الحزمة المرسلة بالبايت.
timeTaken المدة الزمنية (بالملي ثانية) التي تستغرقها معالجة الطلب وإرسال استجابته. يتم حساب هذا على أنه الفاصل الزمني من وقت تلقي Application Gateway للبايت الأول من طلب HTTP إلى الوقت الذي تنتهي فيه عملية إرسال الاستجابة. من المهم ملاحظة أن حقل الوقت المستغرق يتضمن عادةً الوقت الذي تنتقل فيه حزم الطلب والرد عبر الشبكة.
sslEnabled ما إذا كان الاتصال إلى تجمعات back-end قد استخدم TLS/SSL. القيم الصالحة هي تشغيل وإيقاف.
host اسم المضيف الذي تم إرسال الطلب به إلى الخادم الخلفي. إذا تم تجاوز اسم المضيف الخلفية، فسيعكس هذا الاسم ذلك.
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، تظهر السجلات المزيد من التفاصيل:

Value Description
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 زمن انتقال الاستجابة من الخادم الخلفي.
host العنوان المدرج في عنوان المضيف للطلب.
{
    "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",
    }
}

Performance log

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

Value Description
instanceId مثيل Application Gateway الذي يتم إنشاء بيانات الأداء من أجله. بالنسبة لـ application gateway متعددة المثيلات، يوجد صف واحد لكل مثيل.
healthyHostCount عدد المضيفين السليمين في مجموعة back-end.
unHealthyHostCount عدد المضيفين غير السليمين في مجموعة back-end.
requestCount عدد الطلبات التي تقديمها.
latency متوسط زمن الوصول (بالملي ثانية) للطلبات من النسخة إلى النهاية الخلفية التي تخدم الطلبات.
failedRequestCount عدد الطلبات الفاشلة.
throughput متوسط معدل النقل منذ السجل الأخير، مقاساً بالبايت في الثانية.
{
    "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"
    }
}

Note

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

Firewall log

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

Application Gateway

Log Format

Value Description
instanceId مثيل Application Gateway الذي يتم من أجله إنشاء بيانات جدار الحماية. بالنسبة لـ application gateway متعددة المثيلات، يوجد صف واحد لكل مثيل.
clientIp إنشاء IP للطلب.
requestUri URL للطلب المستلم.
ruleSetType نوع مجموعة القواعد. القيمة المتوفرة هي OWASP.
ruleSetVersion إصدار مجموعة القواعد المستخدمة. القيم المتوفرة هي 2.2.9 و3.0.
ruleId معرّف القاعدة للحدث المشغل.
message رسالة سهلة الاستخدام للحدث المشغل. يتم توفير المزيد من التفاصيل في قسم التفاصيل.
action Policy Mode: Detection
- Detected - This is the only action for the WAF when in detection mode. All the conditions for a given rule were matched and the request was logged then passed to the backend.

Policy Mode: Prevention
- Allowed - All conditions were matched for a given rule and the request was passed to the backend.
- Blocked - All of the conditions were matched for a given rule and the request was blocked.
- Matched - One/more conditions were matched for a given rule, but the decision to block or pass the request will need further evaluation and will be evaluated based on the final anomaly scoring rule.

Policy Mode: JS challenge
- JSChallengeIssued: Issued due to missing/invalid challenge clearance, missing answer.

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

- JSChallengePass: Passed due to valid challenge answer.

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

- JSChallengeValid: Logged/passthrough due to valid challenge

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

- JSChallengeBlock: Blocked

يتم إنشاء هذا السجل عند فشل حساب تحدي JS.
site الموقع الذي تم إنشاء السجل من أجله. حاليا، يتم سرد العمومية فقط لأن القواعد عمومية.
details تفاصيل الحدث المشغل.
details.message وصف القاعدة.
details.data بيانات محددة تم العثور عليها عند الطلب تطابق القاعدة.
details.file ملف التكوين الذي يحتوي على القاعدة.
details.line رقم السطر في ملف التكوين الذي قام بتشغيل الحدث.
hostname اسم المضيف أو عنوان IP لـ Application Gateway.
transactionId معرّف فريد لمعاملة معينة يساعد في تجميع انتهاكات القواعد المتعددة التي حدثت في نفس الطلب.
policyId المعرف الفريد لسياسة جدار الحماية المقترن بعبارة التطبيق أو وحدة الإصغاء أو المسار.
policyScope موقع النهج - يمكن أن تكون القيم "Global" أو "Listener" أو "Location".
policyScopeName اسم العنصر حيث يتم تطبيق النهج.

Example

{
  "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 أو أي أداة أخرى لتصور البيانات.

Tip

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

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

We have published a Resource Manager template that installs and runs the popular GoAccess log analyzer for Application Gateway Access Logs. يوفر GoAccess إحصاءات استخدام شبكة HTTP قيِّمة، مثل الزوار الفريدين، والملفات المطلوبة، والمضيفين، وأنظمة التشغيل، والمتصفحات ورموز حالة HTTP. لمزيد من التفاصيل، الرجاء مراجعة الملف التمهيدي في مجلد نموذج Resource Manager في GitHub.

Next steps