Cloud Armor از پیش پیکربندی شده WAF Rules Codelab

1. مقدمه

سلام! به آزمایشگاه کدهای WAF از پیش پیکربندی شده Cloud Armor خوش آمدید!

Google Cloud Armor راه حل امنیتی شبکه لبه سازمانی Google است که محافظت DDOS، اجرای قوانین WAF و مدیریت تطبیقی ​​را در مقیاس ارائه می دهد.

Cloud Armor مجموعه قوانین WAF از پیش پیکربندی شده را برای کاهش آسیب‌پذیری‌های امنیتی برنامه وب 10 برتر OWASP گسترش داده است. مجموعه قوانین مبتنی بر مجموعه قوانین هسته OWASP Modsecurity نسخه 3.0.2 برای محافظت در برابر برخی از رایج ترین خطرات امنیتی برنامه های وب از جمله گنجاندن فایل محلی (lfi)، گنجاندن فایل از راه دور (rfi)، اجرای کد از راه دور (rce) است. و بسیاری دیگر

در این نرم‌افزار، یاد می‌گیرید که چگونه برخی از آسیب‌پذیری‌های رایج را با استفاده از قوانین Google Cloud Armor WAF کاهش دهید.

چیزی که یاد خواهید گرفت

  • چگونه یک Instance Group و یک Global Load Balancer برای پشتیبانی از یک سرویس راه اندازی کنیم
  • نحوه پیکربندی سیاست های امنیتی Cloud Armor با قوانین WAF از پیش تنظیم شده برای محافظت در برابر lfi، rce، اسکنرها، حملات پروتکل و تثبیت جلسه
  • چگونه می توان تأیید کرد که Cloud Armor با مشاهده گزارش ها حمله را کاهش داده است.

آنچه شما نیاز دارید

  • دانش اولیه موتور محاسباتی گوگل ( کدآلب )
  • دانش پایه شبکه و TCP/IP
  • دانش اولیه خط فرمان یونیکس/لینوکس
  • انجام یک تور شبکه در GCP با شبکه در Google Cloud مفید است
  • (اختیاری) آزمایشگاه Cloudnet20 Cloud Armor را برای یادگیری محافظت از بارهای کاری با تزریق SQL، قوانین مبتنی بر IP و جغرافیایی تکمیل کنید.

توپولوژی Codelab و مورد استفاده

119e13312f3cec25.jpeg

شکل 1 - توپولوژی کد آزمایشگاهی قوانین Cloud Armor WAF

برنامه OWASP Juice Shop برای آموزش امنیتی و آگاهی مفید است، زیرا حاوی نمونه هایی از هر یک از 10 آسیب پذیری امنیتی برتر OWASP-بر اساس طراحی است. یک مهاجم می تواند از آن برای اهداف آزمایشی سوء استفاده کند. در این لبه کد، از آن برای نشان دادن برخی حملات برنامه و به دنبال آن محافظت از برنامه با قوانین Cloud Armor WAF استفاده خواهیم کرد. برنامه توسط یک Google Cloud Load Balancer ارائه می شود که روی آن خط مشی و قوانین امنیتی Cloud Armor اعمال می شود. این سرویس در اینترنت عمومی ارائه می شود بنابراین تقریباً از هر جایی قابل دسترسی است و با استفاده از قوانین Cloud Armor و فایروال VPC محافظت می شود.

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعمل‌های موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه می‌کند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورت‌حساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از کنسول GCP روی نماد 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

API ها را فعال کنید

تمام خدمات لازم را فعال کنید

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 load balancer: instance group را راه اندازی کنید

گروه نمونه مدیریت نشده را ایجاد کنید.

از 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، پروکسی هدف و قانون ارسال است.

مؤلفه Cloud load balancer را تنظیم کنید: بررسی سلامت

بررسی سلامت پورت خدمات فروشگاه آب میوه را ایجاد کنید.

از Cloud Shell

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

خروجی

Created 
NAME           PROTOCOL
tcp-port-3000  TCP

مؤلفه Cloud load balancer را راه اندازی کنید: سرویس backend

پارامترهای سرویس Backend را ایجاد کنید.

از 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 را به سرویس Backend اضافه کنید.

از 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].

مولفه Cl oud load balancer را تنظیم کنید: نقشه 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

مولفه Cl oud load balancer را راه اندازی کنید: پراکسی هدف

برای جلوی نقشه URL، Target Proxy را ایجاد کنید.

از 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 load balancer: قانون حمل و نقل را تنظیم کنید

قانون حمل و نقل را برای Load Balancer ایجاد کنید.

از 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].

اطمینان حاصل کنید که سرویس فروشگاه آب میوه آنلاین است

از 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 Not Found را بازیابی کنید.

از Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

خروجی

HTTP/1.1 200 OK
<...>

برای مشاهده جویس شاپ نیز می توانید به مرورگر مراجعه کنید!

428c18eee6708c28.png

اکنون آماده بررسی آسیب‌پذیری‌های Juice Shop و نحوه محافظت در برابر آن‌ها با مجموعه قوانین Cloud Armor WAF هستیم.

5. آسیب پذیری های شناخته شده را نشان دهید

به منظور صرفه جویی در زمان، وضعیت های قبل و بعد از انتشار قوانین Cloud Armor WAF را در مراحل فشرده نشان خواهیم داد.

یک آسیب پذیری 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 را مشاهده کنید

اجرای کد از راه دور شامل سناریوهای مختلف تزریق فرمان یونیکس و ویندوز است که به مهاجمان اجازه می دهد تا دستورات سیستم عامل را که معمولاً محدود به کاربران ممتاز است، اجرا کنند. در زیر اجرای دستور ls ساده ای را نشان می دهد که به آن منتقل شده است.

از Cloud Shell

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

خروجی

HTTP/1.1 200 OK
<...>

برای مشاهده خروجی کامل، می‌توانید پرچم‌های حلقه را بردارید.

دسترسی یک اسکنر معروف را مشاهده کنید

هم برنامه های تجاری و هم منبع باز را برای اهداف مختلف اسکن می کنند، از جمله اسکن آسیب پذیری ها. این ابزارها از User-Agent معروف و سایر هدرها استفاده می کنند. Observe curl با یک User-Agent Header معروف کار می کند:

از 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. قوانین Cloud Armor WAF را تعریف کنید

قوانین 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 Core Rule Set برای مسدود کردن اسکنرهای امنیتی شناخته شده، کلاینت های 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 Request Smuggling هستند.

از 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 دقیقه). هنگامی که مطمئن شدید که زمان کافی سپری شده است، آسیب‌پذیری‌هایی را که قبلاً نشان داده شده‌اند آزمایش کنید تا اجرای قانون Cloud Armor WAF را در مرحله بعد تأیید کنید.

7. حفاظت از Cloud Armor را با مجموعه قوانین OWASP ModSecurity Core مشاهده کنید

تأیید کنید که آسیب‌پذیری 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
<..>

تأیید کنید که یک حمله پروتکل کاهش یافته است

بر اساس OWASP ModSecurity Core Rule Set نسخه 3.0.2، حمله پروتکل توسط

از 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 - Block LFI (شامل فایل محلی)
  • اولویت 9001 - Block RCE (اجرای کد از راه دور/تزریق فرمان)
  • اولویت 9002 - اسکنرهای بلوکی شناسایی شدند
  • اولویت 9003 - مسدود کردن حملات پروتکل مانند تقسیم HTTP و قاچاق HTTP
  • Priority 9004 - Block Session Fixation Attacks
  • اولویت 10000 - به IP خود اجازه دسترسی به وب سایت را بدهید
  • پیش فرض اولویت - رد کردن.

*توجه داشته باشید که قانون "Allow your IP" با بالاترین شماره اولویت پیکربندی شده است تا اجازه دسترسی به سایت را بدهد، اما هرگونه حمله را مسدود می کند.

9. گزارش های سیاست امنیتی Cloud Armor را مشاهده کنید

از صفحه Cloud Armor Console، می‌توانید جزئیات خط‌مشی امنیتی را مشاهده کنید و روی برگه Logs و سپس پیوند View policy logs کلیک کنید تا به صفحه Cloud Logging هدایت شوید. به طور خودکار بر اساس خط مشی امنیتی مورد علاقه، به عنوان مثال 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، Load Balancer، نمونه ها، قوانین فایروال و شبکه VPC اجرا کنید.

سیاست امنیتی Cloud Armor را از سرویس backend حذف کنید

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

سیاست امنیتی Cloud Armor را حذف کنید

حذف خط مشی امنیتی به طور خودکار قوانین مرتبط را حذف می کند.

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

منابع بار متعادل کننده را حذف کنید

این منابع Load Balancer که باید حذف شوند شامل قانون ارسال، پراکسی های target-http، url-maps، backend، Health-check ها و گروه نمونه است.

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 برخی از 10 حمله برتر OWASP را از طریق گزارش ها کاهش داده است

مراحل بعدی