الدرس التطبيقي حول ترميز قواعد WAF في Cloud Armor

1. مقدمة

مرحبًا مرحبًا بك في الدرس التطبيقي حول ترميز قواعد WAF تم إعداده مسبقًا في Cloud Armor.

Google Cloud Armor هو حلّ أمني لشبكات المؤسسات من Google يوفّر حماية ضد هجمات تعطيل الخدمة، وتنفيذ قاعدة WAF، وإمكانية الإدارة بشكل تكيُّفي على نطاق واسع.

وسّعت Cloud Armor مجموعات قواعد WAF التي تم ضبطها مسبقًا للحدّ من الثغرات الأمنية في تطبيقات الويب OWASP Top 10. تستند مجموعات القواعد إلى الإصدار 3.0.2 من مجموعة قواعد OWASP Modsecurity الأساسية للحماية من بعض مخاطر الأمان الأكثر شيوعًا لتطبيقات الويب، بما في ذلك تضمين الملفات على الجهاز (lfi) وتضمين الملفات عن بُعد (rfi) وتنفيذ الرموز البرمجية عن بُعد (rce) وغيرها الكثير.

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية الحدّ من بعض الثغرات الأمنية الشائعة باستخدام قواعد WAF في Google Cloud Armor.

المعلومات التي ستطّلع عليها

  • كيفية إعداد مجموعة مثيلات وموازن حمولة عالمي لدعم إحدى الخدمات
  • كيفية ضبط سياسات أمان Cloud Armor باستخدام قواعد WAF التي تم ضبطها مسبقًا للحماية من بروتوكول lfi وrce والماسحات الضوئية وهجمات البروتوكولات وإصلاح الجلسة
  • كيفية التحقّق من أنّ Cloud Armor خفّف من حدة الهجوم من خلال ملاحظة السجلّات

المتطلبات

طوبولوجيا مختبر الترميز حالة الاستخدام

119e13312f3cec25.jpeg

الشكل 1: هيكلة درس تطبيقي حول الترميز في Cloud Armor WAF

يُعد تطبيق OWASP Juice Shop مفيدًا للتدريب الأمني، لأنه يحتوي على أمثلة لكل ثغرات أمنية من أهم 10 ثغرات أمنية في OWASP. ويمكن للمهاجم استغلالها لأغراض الاختبار. في هذا الدرس التطبيقي حول الترميز، سنستخدمه لتوضيح بعض هجمات التطبيقات التي تتبعها حماية التطبيق باستخدام قواعد WAF في Cloud Armor. سيتم تشغيل التطبيق بواسطة جهاز موازنة الحمل من Google Cloud، وستطبَّق عليه سياسة الأمان والقواعد الخاصة بخدمة Cloud Armor. وستتم إتاحة الخدمة على الإنترنت المتاح للجميع، وبالتالي يمكن الوصول إليها من أي مكان تقريبًا وحمايتها باستخدام قواعد جدار الحماية من Cloud Armor وVPC.

2. الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا التمرين من خلال متصفح.

قبل البدء

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

تفعيل واجهات برمجة التطبيقات

تفعيل جميع الخدمات اللازمة

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com        
gcloud services enable monitoring.googleapis.com 

3- إنشاء شبكة VPC

إنشاء شبكة VPC

من Cloud Shell

gcloud compute networks create ca-lab-vpc --subnet-mode custom

الناتج

Created
NAME        SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
ca-lab-vpc  CUSTOM       REGIONAL

إنشاء شبكة فرعية

من Cloud Shell

gcloud compute networks subnets create ca-lab-subnet \
        --network ca-lab-vpc --range 10.0.0.0/24 --region us-central1

الناتج

Created 
NAME           REGION       NETWORK       RANGE
ca-lab-subnet  us-central1  ca-lab-vpc    10.0.0.0/24

إنشاء قواعد جدار حماية سحابة VPC

بعد إنشاء شبكة VPC والشبكة الفرعية، عليك الآن إعداد بعض قواعد جدار الحماية. سيتم استخدام قاعدة جدار الحماية الأولى للسماح لجميع عناوين IP بالدخول إلى عنوان IP الخارجي للموقع الإلكتروني لتطبيق الاختبار على المنفذ 3000. سيتم استخدام قاعدة جدار الحماية الثانية للسماح بعمليات التحقّق من الصحة من عنوان IP المصدر لأجهزة موازنة الحمل.

من Cloud Shell

gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc

الناتج

Creating firewall...done.
NAME           NETWORK     DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
allow-js-site  ca-lab-vpc  INGRESS    1000      tcp:3000        False

إنشاء قواعد FW للسماح بإجراء فحوصات صحية من نطاقات التحقق من الصحة من Google.

من Cloud Shell

gcloud compute firewall-rules create allow-health-check \
    --network=ca-lab-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-healthcheck \
    --rules=tcp

الناتج

Creating firewall...done.
NAME                NETWORK     DIRECTION  PRIORITY  ALLOW  DENY  DISABLED
allow-health-check  ca-lab-vpc  INGRESS    1000      tcp          False

4. إعداد التطبيق التجريبي

تتمثل الخطوة التالية في إنشاء التطبيق الاختباري، وهو في هذه الحالة خادم الويب OWASP Juice Shop.

عند إنشاء مثيل الحوسبة، نستخدم صورة حاوية لضمان توفّر الخدمات المناسبة في الخادم. سيتم نشر هذا الخادم في us-central1-c وستتضمّن علامة شبكة تسمح بعمليات التحقّق من الصحة.

إنشاء تطبيق OWASP Juice Shop

استخدِم تطبيق OWASP Juice Shop المعروف والمفتوح المصدر ليكون تطبيقًا معرّضًا للاختراق. يمكنك أيضًا استخدام هذا التطبيق لإجراء اختبارات أمان OWASP من خلال الموقع الإلكتروني.

من Cloud Shell

gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
     --network ca-lab-vpc \
     --subnet ca-lab-subnet \
     --private-network-ip=10.0.0.3 \
     --machine-type n1-standard-2 \
     --zone us-central1-c \
     --tags allow-healthcheck

الناتج

NAME                  ZONE           MACHINE_TYPE   PREEMPTIBLE  
owasp-juice-shop-app  us-central1-c  n1-standard-2               

INTERNAL_IP  EXTERNAL_IP     STATUS
10.0.0.3     <public IP>     RUNNING

إعداد مكوِّن جهاز موازنة الحمل في السحابة الإلكترونية: مجموعة المثيلات

أنشئ مجموعة المثيلات غير المُدارة.

من Cloud Shell

gcloud compute instance-groups unmanaged create juice-shop-group \
    --zone=us-central1-c

الناتج

NAME              LOCATION       SCOPE  NETWORK  MANAGED  INSTANCES
juice-shop-group  us-central1-c  zone                     0

أضِف مثيل Juice Shop GCE إلى مجموعة المثيلات غير المُدارة.

من Cloud Shell

gcloud compute instance-groups unmanaged add-instances juice-shop-group \
    --zone=us-central1-c \
    --instances=owasp-juice-shop-app

الناتج

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

اضبط المنفذ المُسمّى على منفذ تطبيق Juice Shop.

من Cloud Shell

gcloud compute instance-groups unmanaged set-named-ports \
juice-shop-group \
   --named-ports=http:3000 \
   --zone=us-central1-c

الناتج

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

الآن بعد أن أنشأت مجموعة المثيلات غير المُدارة، تتمثل الخطوة التالية في إنشاء فحص صحة، وخدمة الخلفية، وخريطة عنوان URL، والخادم الوكيل المستهدف، وقاعدة إعادة التوجيه.

إعداد مكوّن جهاز موازنة الحمل في السحابة الإلكترونية: التحقّق من الصحة

أنشئ الفحص الصحي لمنفذ خدمة Juice Shop.

من Cloud Shell

gcloud compute health-checks create tcp tcp-port-3000 \
        --port 3000

الناتج

Created 
NAME           PROTOCOL
tcp-port-3000  TCP

إعداد مكوِّن جهاز موازنة الحمل في السحابة الإلكترونية: خدمة الخلفية

أنشئ معلمات خدمة الخلفية.

من Cloud Shell

gcloud compute backend-services create juice-shop-backend \
        --protocol HTTP \
        --port-name http \
        --health-checks tcp-port-3000 \
        --enable-logging \
        --global 

الناتج

NAME                BACKENDS  PROTOCOL
juice-shop-backend            HTTP

أضف مجموعة المثيل Juice Shop إلى خدمة الخلفية.

من Cloud Shell

 gcloud compute backend-services add-backend juice-shop-backend \
        --instance-group=juice-shop-group \
        --instance-group-zone=us-central1-c \
        --global

الناتج

Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].

إعداد مكوِّن جهاز موازنة الحمل في السحابة الإلكترونية: خريطة عنوان URL

أنشِئ خريطة عنوان URL لإرسالها إلى الخلفية.

من Cloud Shell

gcloud compute url-maps create juice-shop-loadbalancer \
        --default-service juice-shop-backend

الناتج

NAME                     DEFAULT_SERVICE
juice-shop-loadbalancer  backendServices/juice-shop-backend

إعداد مكوِّن جهاز موازنة الحمل في السحابة الإلكترونية: الخادم الوكيل المستهدف

أنشِئ الخادم الوكيل المستهدَف أمام خريطة عنوان URL.

من Cloud Shell

gcloud compute target-http-proxies create juice-shop-proxy \
        --url-map juice-shop-loadbalancer

الناتج

NAME              URL_MAP
juice-shop-proxy  juice-shop-loadbalancer

إعداد مكوِّن جهاز موازنة الحمل في السحابة الإلكترونية: قاعدة إعادة التوجيه

أنشئ قاعدة إعادة التوجيه لجهاز موازنة الحمل.

من Cloud Shell

gcloud compute forwarding-rules create juice-shop-rule \
        --global \
        --target-http-proxy=juice-shop-proxy \
        --ports=80

الناتج

Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].

التأكّد من أنّ خدمة Juice Shop على الإنترنت

من Cloud Shell

PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule  --global --format="value(IPAddress)")"

من Cloud Shell

echo $PUBLIC_SVC_IP

الناتج

<public VIP of service>

يُرجى الانتظار بضع دقائق قبل المتابعة، وإلا قد يتم استرداد استجابة HTTP/1.1 404 لم يتم العثور على الصفحة.

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

الناتج

HTTP/1.1 200 OK
<...>

ويمكنك أيضًا الانتقال إلى المتصفح لعرض متجر العصائر.

428c18eee6708c28.png

نحن جاهزون الآن لاستكشاف الثغرات الأمنية في Juice Shop وكيفية الحماية منها باستخدام مجموعات قواعد WAF في Cloud Armor.

5- إظهار الثغرات المعروفة

بهدف توفير الوقت، سنعرض الولايات قبل نشر قواعد WAF في Cloud Armor وبعدها في خطوات موجزة.

تتبُّع الثغرة الأمنية LFI: اجتياز المسار

إنّ تضمين الملفات المحلية هو عملية رصد الملفات المتوفّرة على الخادم من خلال استغلال عدم التحقّق من صحة الإدخال في الطلب للكشف عن البيانات الحسّاسة. يوضح ما يلي ببساطة إمكانية اجتياز مسار. في المتصفِّح أو باستخدام أمر curl، تتبَّع مسارًا حاليًا يعرضه التطبيق.

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

الناتج

HTTP/1.1 200 OK
<...>

لاحظ أيضًا أن اجتياز المسار يعمل أيضًا:

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp/../

الناتج

HTTP/1.1 200 OK
<...>

ملاحظة ثغرة أمنية في RCE

يشتمل "تنفيذ الرموز البرمجية عن بُعد" على العديد من سيناريوهات إدخال أوامر نظام التشغيل UNIX وWindows، ما يسمح للمهاجمين بتنفيذ أوامر نظام التشغيل التي تقتصر عادةً على المستخدمين الحاصلين على الامتيازات. يوضح ما يلي تنفيذ أمر ls بسيط تم تمريره.

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

الناتج

HTTP/1.1 200 OK
<...>

يمكنك إزالة علامات curl لمراقبة النتائج الكاملة.

تتبُّع وصول ماسح ضوئي معروف

تفحص التطبيقات التجارية والمفتوحة المصدر لأغراض مختلفة، بما في ذلك البحث عن الثغرات. تستخدم هذه الأدوات وكيل مستخدم معروفًا وعناوين أخرى. تعمل ميزة "ملاحظة تأثير curl" باستخدام عنوان وكيل مستخدم معروف:

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

الناتج

HTTP/1.1 200 OK
<...>

مراقبة هجوم بروتوكول: تقسيم HTTP

تستخدم بعض تطبيقات الويب إدخالاً من المستخدم لإنشاء العناوين في الاستجابات. إذا لم يقم التطبيق بتصفية الإدخال بشكل صحيح، فقد يتمكن المهاجم من إفساد معلمة الإدخال بالتسلسل %0d%0a (تسلسل CRLF المستخدَم لفصل الأسطر المختلفة). ويمكن بعد ذلك تفسير الاستجابة كردين من خلال أي شيء يحدث لتحليلها، مثل خادم وكيل وسيط، الذي قد يعرض محتوى خاطئًا في الطلبات اللاحقة. إدراج التسلسل %0d%0a في معلمة الإدخال، مما قد يؤدي إلى عرض صفحة مضللة.

من Cloud Shell

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

الناتج

HTTP/1.1 200 OK
<...>

تثبيت جلسة التثبيت

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

الناتج

HTTP/1.1 200 OK
<...>

6- تحديد قواعد WAF في Cloud Armor

سرد قواعد WAF المهيأة مسبقًا:

من Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets

الناتج

EXPRESSION_SET
Sqli-canary
RULE_ID
    owasp-crs-v030001-id942110-sqli
    owasp-crs-v030001-id942120-sqli
<...>

إنشاء سياسة أمان Cloud Armor

من Cloud Shell:

gcloud compute security-policies create block-with-modsec-crs \
    --description "Block with OWASP ModSecurity CRS"

تعديل القاعدة التلقائية لسياسة الأمان

يُرجى العِلم أنّ أولوية القاعدة التلقائية لها قيمة عددية 2147483647.

من Cloud Shell:

gcloud compute security-policies rules update 2147483647 \
    --security-policy block-with-modsec-crs \
    --action "deny-403"

بما أنّ القاعدة التلقائية تم ضبطها مع خيار "رفض الإجراء"، يجب أن نسمح بالوصول من عنوان IP الخاص بجهازك. يُرجى العثور على عنوان IP العلني (curl أو ipmonkey أو whatismyip أو غير ذلك).

من Cloud Shell:

MY_IP=$(curl ifconfig.me)

إضافة القاعدة الأولى للسماح بالوصول من عنوان IP الخاص بك (أدرِج عنوان IP أدناه)

من Cloud Shell:

gcloud compute security-policies rules create 10000 \
    --security-policy  block-with-modsec-crs  \
    --description "allow traffic from my IP" \
    --src-ip-ranges "$MY_IP/32" \
    --action "allow"

تعديل سياسة الأمان لحظر هجمات LFI

يمكنك تطبيق مجموعة القواعد الأساسية OWASP ModSecurity التي تمنع اجتياز المسار لعمليات تضمين الملفات المحلية.

من Cloud Shell:

gcloud compute security-policies rules create 9000 \
    --security-policy block-with-modsec-crs  \
    --description "block local file inclusion" \
     --expression "evaluatePreconfiguredExpr('lfi-stable')" \
    --action deny-403

تعديل سياسة الأمان لحظر تنفيذ الرموز عن بُعد (rce)

وفقًا لمجموعة القواعد الأساسية في OWASP ModSecurity، يمكنك تطبيق القواعد التي تبحث عن أمر rce، بما في ذلك إدخال الأمر. يتم رصد أوامر نظام التشغيل النموذجية وحظرها.

من Cloud Shell:

gcloud compute security-policies rules create 9001 \
    --security-policy block-with-modsec-crs  \
    --description "block rce attacks" \
     --expression "evaluatePreconfiguredExpr('rce-stable')" \
    --action deny-403

تعديل سياسة الأمان لحظر برامج فحص الأمان

طبِّق مجموعة قواعد OWASP ModSecurity الأساسية لحظر برامج فحص الأمان المعروفة وبرامج HTTP وبرامج الزحف على الويب.

من Cloud Shell:

gcloud compute security-policies rules create 9002 \
    --security-policy block-with-modsec-crs  \
    --description "block scanners" \
     --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
    --action deny-403

تعديل سياسة الأمان لحظر هجمات البروتوكول

وفقًا لمجموعة القواعد الأساسية في OWASP ModSecurity، يمكنك تطبيق القواعد التي تبحث عن حرفَي Carriage Return (CR) %0d وLinefeed (LF) %0a وأنواعًا أخرى من هجمات البروتوكولات، مثل تهريب طلبات HTTP.

من Cloud Shell:

gcloud compute security-policies rules create 9003 \
    --security-policy block-with-modsec-crs  \
    --description "block protocol attacks" \
     --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
    --action deny-403

تعديل سياسة الأمان لحظر إصلاح الجلسة

وفقًا لمجموعة القواعد الأساسية في OWASP ModSecurity، يمكنك تطبيق القواعد التي...

من Cloud Shell:

gcloud compute security-policies rules create 9004 \
    --security-policy block-with-modsec-crs  \
    --description "block session fixation attacks" \
     --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
    --action deny-403

إرفاق سياسة الأمان بخدمة الخلفية

من Cloud Shell:

gcloud compute backend-services update juice-shop-backend \
    --security-policy block-with-modsec-crs \
    --global

قد يستغرق نشر القواعد بعض الوقت (ولكن ليس أكثر من 10 دقائق). بعد التأكّد من مرور الوقت الكافي، اختبِر الثغرات الأمنية التي تم توضيحها سابقًا لتأكيد تنفيذ قاعدة WAF في Cloud Armor في الخطوة التالية.

7. مراقبة حماية Cloud Armor باستخدام مجموعة القواعد الأساسية OWASP ModSecurity

التأكُّد من تخفيف ثغرة الأنشطة التجارية المحلية (LFI)

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?a=../

الناتج

HTTP/1.1 403 Forbidden
<...>

التأكد من التخفيف من حدة هجوم RCE

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

الناتج

HTTP/1.1 403 Forbidden
<..>

التأكد من رصد الماسح الضوئي المعروف

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

الناتج

HTTP/1.1 403 Forbidden
<..>

التأكُّد من تخفيف حدة هجوم البروتوكول

وفقًا للإصدار 3.0.2 من مجموعة القواعد الأساسية OWASP ModSecurity الأساسية، يتم الحدّ من هجوم البروتوكول من خلال

من Cloud Shell

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

الناتج

HTTP/1.1 403 Forbidden
<..>

التأكد من حظر محاولات إصلاح الجلسة

من Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

الناتج

HTTP/1.1 403 Forbidden
<..>

8. مراجعة قواعد أمان Cloud Armor

والآن بعد أن انتهينا من إنشاء سياسة الأمان، هيا نلقي نظرة على القواعد التي تم ضبطها بالضبط.

d00e4102fc89e44f.png

يتم تقييم القواعد حسب الأولوية: يتم تقييم الأرقام الأقل أولاً، وبعد تفعيلها، لا تستمر المعالجة للقواعد ذات القيم الأعلى من الأولوية.

  • الأولوية 9000 - حظر LFI (تضمين ملف محلي)
  • الأولوية 9001 - حظر RCE (تنفيذ الرمز عن بُعد/إدخال الأمر)
  • الأولوية 9002: تم رصد ماسحات ضوئية للكتل
  • الأولوية 9003: حظر هجمات البروتوكول، مثل تقسيم HTTP وتهريب HTTP
  • الأولوية 9004 - حظر هجمات إصلاح الجلسات
  • الأولوية 10000 - السماح لعنوان IP بالوصول إلى الموقع الإلكتروني
  • الأولوية التلقائية - رفض

*ملاحظة "السماح بعنوان IP الخاص بك" على رقم الأولوية القصوى للسماح بالوصول إلى الموقع، إلا أنه يمنع أي هجوم.

9. تتبُّع سجلّات سياسة أمان Cloud Armor

من صفحة Cloud Armor Console، يمكنك عرض تفاصيل سياسة الأمان والنقر على علامة التبويب Logs متبوعة بالرابط View policy logs ليتم توجيهك إلى صفحة "تسجيل الدخول إلى السحابة الإلكترونية". وستتم تصفيتها تلقائيًا استنادًا إلى سياسة الأمان التي تهمك، على سبيل المثال. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs) اتّبِع رموز الاستجابة للأخطاء 403 ووسِّع تفاصيل السجلّ لرصد اسم سياسة الأمان المفروضة وقيمة الحقل المطابقة وأسفل معرّفات التعبيرات التي تم ضبطها مسبقًا (أو معرّف التوقيع). تعرض لقطات الشاشة التالية أمثلة على سجلّات سياسات الأمان المفروضة التي تم ضبطها في هذا الدرس التطبيقي حول الترميز.

سجلّ LFI

983a6cab0cff940d.png

سجلّ RCE

988a3a571f9d9d45.png

سجلّ رصد الماسح الضوئي

7ed661863ba27555.png

سجلّ هجوم البروتوكول

17ee3cbe0bd98939.png

سجلّ إصلاح الجلسة

80d1ddfd0fe982e1.png

10. تنظيف المختبر

امسح الموارد الآن بعد الانتهاء من التمرين المعملي.

شغِّل هذه الأوامر لحذف سياسة أمان Cloud Armor و"جهاز موازنة الحمل" والمثيلات وقواعد جدار الحماية وشبكة VPC.

إزالة سياسة أمان Cloud Armor من خدمة الخلفية

gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global

حذف سياسة أمان Cloud Armor

سيؤدي حذف سياسة الأمان إلى حذف القواعد المرتبطة تلقائيًا.

gcloud -q compute security-policies delete block-with-modsec-crs

حذف موارد جهاز موازنة الحمل

تتضمن موارد أداة موازنة الحمل المطلوب حذفها قاعدة إعادة التوجيه و target-http-proxies وخرائط عناوين URL والواجهة الخلفية وعمليات التحقّق من الصحة ومجموعة المثيل.

gcloud -q compute forwarding-rules delete juice-shop-rule --global

gcloud -q compute target-http-proxies delete juice-shop-proxy

gcloud -q compute url-maps delete juice-shop-loadbalancer

gcloud -q compute backend-services delete juice-shop-backend \
    --global

gcloud -q compute health-checks delete tcp-port-3000

gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c

حذف المثيل

gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c

حذف قواعد جدار الحماية والشبكة الفرعية وسحابة VPC

gcloud -q compute firewall-rules delete allow-health-check
gcloud -q compute firewall-rules delete allow-js-site
gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1
gcloud -q compute networks delete ca-lab-vpc

11. تهانينا!

تهانينا على إكمال الدرس التطبيقي حول الترميز الخاص بقواعد WAF في Cloud Armor بشكل مسبق.

النقاط التي تناولناها

  • كيفية إعداد مجموعة مثيلات وجهاز موازنة الحمل في السحابة الإلكترونية العام
  • كيفية ضبط سياسات أمان Cloud Armor باستخدام قواعد WAF التي تم ضبطها مسبقًا للحماية من بروتوكول lfi وrce والماسحات الضوئية وهجمات البروتوكولات وإصلاح الجلسة
  • كيفية التحقّق من أنّ Cloud Armor خفّفت من بعض هجمات OWASP الأكثر 10 هجمات من خلال السجلّات

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