۱. مقدمه
سلام! به آزمایشگاه کدنویسی قوانین WAF از پیش پیکربندی شده Cloud Armor خوش آمدید!
گوگل کلود آرمور (Google Cloud Armor) راهکار امنیتی شبکه لبه سازمانی گوگل است که محافظت در برابر حملات DDOS، اجرای قوانین WAF و قابلیت مدیریت تطبیقی را در مقیاس بزرگ ارائه میدهد.
Cloud Armor مجموعه قوانین از پیش پیکربندی شده WAF را برای کاهش آسیبپذیریهای امنیتی برنامههای وب OWASP که جزو ۱۰ مورد برتر هستند، گسترش داده است. این مجموعه قوانین بر اساس مجموعه قوانین اصلی OWASP Modsecurity نسخه ۳.۰.۲ هستند تا در برابر برخی از رایجترین خطرات امنیتی برنامههای وب از جمله شمول فایل محلی (lfi)، شمول فایل از راه دور (rfi)، اجرای کد از راه دور (rce) و بسیاری موارد دیگر محافظت کنند.
در این آزمایشگاه کد، یاد میگیرید که چگونه با استفاده از قوانین WAF گوگل کلود آرمور، برخی از آسیبپذیریهای رایج را کاهش دهید.
آنچه یاد خواهید گرفت
- نحوه راهاندازی یک گروه نمونه و یک متعادلکننده بار سراسری برای پشتیبانی از یک سرویس
- نحوه پیکربندی سیاستهای امنیتی Cloud Armor با قوانین WAF از پیش تنظیمشده برای محافظت در برابر حملات lfi، rce، اسکنرها، حملات پروتکل و تثبیت نشست
- چگونه میتوان با مشاهدهی لاگها، تأیید کرد که کلود آرمور حمله را کاهش داده است.
آنچه نیاز دارید
- آشنایی اولیه با موتور محاسباتی گوگل ( codelab )
- آشنایی اولیه با شبکه و TCP/IP
- دانش پایه خط فرمان یونیکس/لینوکس
- مفید است که یک دوره آموزشی شبکهسازی در GCP را با دوره Networking in the Google Cloud گذرانده باشید.
- (اختیاری) آزمایشگاه Cloudnet20 Cloud Armor را برای یادگیری محافظت از بارهای کاری با تزریق SQL، قوانین مبتنی بر IP و مبتنی بر موقعیت جغرافیایی تکمیل کنید.
توپولوژی Codelab و مورد استفاده

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



شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژههای Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.
- در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .
اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعملهای بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش میدهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه را میتوان به سادگی با یک مرورگر انجام داد.
قبل از اینکه شروع کنی
داخل 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
۳. شبکه VPC را ایجاد کنید
ایجاد شبکه VPC
از پوسته ابری
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
ایجاد زیرشبکه
از پوسته ابری
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 خارجی وبسایت برنامه آزمایشی روی پورت ۳۰۰۰ استفاده میشود. قانون دوم فایروال برای اجازه دادن به بررسی سلامت از IP منبع متعادلکنندههای بار استفاده میشود.
از پوسته ابری
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 را ایجاد کنید تا بررسیهای سلامت از محدودههای بررسی سلامت گوگل امکانپذیر شود.
از پوسته ابری
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
۴. برنامه آزمایشی را تنظیم کنید
مرحله بعدی ایجاد برنامه آزمایشی است که در این مورد وب سرور OWASP Juice Shop است.
هنگام ایجاد نمونه محاسباتی، ما از یک تصویر کانتینر استفاده میکنیم تا مطمئن شویم که سرور سرویسهای مناسب را دارد. این سرور در us-central1-c مستقر خواهد شد و دارای یک برچسب شبکه خواهد بود که امکان بررسی سلامت را فراهم میکند.
برنامه OWASP Juice Shop را ایجاد کنید
از برنامهی متنباز و شناختهشدهی OWASP Juice Shop به عنوان برنامهی آسیبپذیر استفاده کنید. همچنین میتوانید از این برنامه برای انجام چالشهای امنیتی OWASP از طریق وبسایت آنها استفاده کنید.
از پوسته ابری
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
کامپوننت متعادلکننده بار ابری را تنظیم کنید: گروه نمونه
گروه نمونه مدیریت نشده را ایجاد کنید.
از پوسته ابری
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 را به گروه نمونه مدیریت نشده اضافه کنید.
از پوسته ابری
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 تنظیم کنید.
از پوسته ابری
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].
حالا که گروه نمونه مدیریت نشده را ایجاد کردید، مرحله بعدی ایجاد بررسی سلامت، سرویس backend، نقشه URL، پروکسی هدف و قانون ارسال است.
راهاندازی کامپوننت متعادلکننده بار ابری: بررسی سلامت
بررسی سلامت پورت سرویس Juice Shop را ایجاد کنید.
از پوسته ابری
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
خروجی
Created NAME PROTOCOL tcp-port-3000 TCP
راهاندازی کامپوننت متعادلکننده بار ابری: سرویس backend
پارامترهای سرویس backend را ایجاد کنید.
از پوسته ابری
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 اضافه کنید.
از پوسته ابری
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 را تنظیم کنید: نقشه URL
نقشه URL را برای ارسال به backend ایجاد کنید.
از پوسته ابری
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 را تنظیم کنید: target proxy
پروکسی هدف را برای قرار دادن در جلوی نقشه URL ایجاد کنید.
از پوسته ابری
gcloud compute target-http-proxies create juice-shop-proxy \
--url-map juice-shop-loadbalancer
خروجی
NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer
تنظیم کامپوننت متعادلکننده بار ابری: قانون ارسال
قانون ارسال را برای متعادلکننده بار ایجاد کنید.
از پوسته ابری
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 آنلاین است
از پوسته ابری
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
از پوسته ابری
echo $PUBLIC_SVC_IP
خروجی
<public VIP of service>
قبل از ادامه چند دقیقه صبر کنید، در غیر این صورت ممکن است با پاسخ HTTP/1.1 404 Not Found مواجه شوید.
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP
خروجی
HTTP/1.1 200 OK <...>
همچنین میتوانید برای مشاهده فروشگاه آبمیوه به مرورگر بروید!

اکنون آمادهایم تا آسیبپذیریهای Juice Shop و نحوه محافظت در برابر آنها را با مجموعه قوانین Cloud Armor WAF بررسی کنیم.
۵. آسیبپذیریهای شناختهشده را نشان دهید
برای صرفهجویی در زمان، حالتهای قبل و بعد از انتشار قوانین WAF در Cloud Armor را در مراحل فشرده نشان خواهیم داد.
مشاهده یک آسیبپذیری LFI: پیمایش مسیر
گنجاندن فایل محلی فرآیند مشاهده فایلهای موجود در سرور است که با سوءاستفاده از عدم اعتبارسنجی ورودی در درخواست، دادههای حساس را به طور بالقوه افشا میکند. موارد زیر به سادگی نشان میدهد که پیمایش مسیر امکانپذیر است. در مرورگر خود یا با curl، مسیر موجود ارائه شده توسط برنامه را مشاهده کنید.
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/ftp
خروجی
HTTP/1.1 200 OK <...>
و همچنین مشاهده کنید که پیمایش مسیر نیز کار میکند:
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
خروجی
HTTP/1.1 200 OK <...>
مشاهده یک آسیبپذیری RCE
اجرای کد از راه دور شامل سناریوهای مختلف تزریق دستور در یونیکس و ویندوز است که به مهاجمان اجازه میدهد دستورات سیستمعامل را که معمولاً محدود به کاربران دارای امتیاز است، اجرا کنند. در ادامه، اجرای یک دستور ls ساده که ارسال شده است، نشان داده شده است.
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
خروجی
HTTP/1.1 200 OK <...>
برای مشاهده خروجی کامل، میتوانید پرچمهای curl را حذف کنید.
دسترسی یک اسکنر شناختهشده را زیر نظر بگیرید
هم برنامههای تجاری و هم برنامههای متنباز، برنامههای اسکن را برای اهداف مختلف، از جمله اسکن آسیبپذیریها، انجام میدهند. این ابزارها از User-Agent و سایر Headersهای شناختهشده استفاده میکنند. توجه داشته باشید که curl با یک User-Agent Header شناختهشده کار میکند:
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
خروجی
HTTP/1.1 200 OK <...>
مشاهده یک حمله پروتکل: تقسیم HTTP
برخی از برنامههای وب از ورودی کاربر برای تولید هدرهای پاسخها استفاده میکنند. اگر برنامه ورودی را به درستی فیلتر نکند، یک مهاجم میتواند پارامتر ورودی را با توالی %0d%0a (توالی CRLF که برای جدا کردن خطوط مختلف استفاده میشود) آلوده کند. سپس پاسخ میتواند توسط هر چیزی که آن را تجزیه میکند، مانند یک سرور پروکسی واسطه، به عنوان دو پاسخ تفسیر شود و به طور بالقوه محتوای نادرستی را در درخواستهای بعدی ارائه دهد. توالی %0d%0a را در پارامتر ورودی وارد کنید، که میتواند منجر به ارائه یک صفحه گمراهکننده شود.
از پوسته ابری
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 <...>
تثبیت جلسه را مشاهده کنید
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X
خروجی
HTTP/1.1 200 OK <...>
۶. قوانین WAF مربوط به Cloud Armor را تعریف کنید
فهرست قوانین WAF از پیش تنظیم شده:
از پوسته ابری
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
از کلود شل:
gcloud compute security-policies create block-with-modsec-crs \
--description "Block with OWASP ModSecurity CRS"
بهروزرسانی قانون پیشفرض سیاست امنیتی
توجه داشته باشید که اولویت پیشفرض قانون، مقدار عددی ۲۱۴۷۴۸۳۶۴۷ دارد.
از کلود شل:
gcloud compute security-policies rules update 2147483647 \
--security-policy block-with-modsec-crs \
--action "deny-403"
از آنجایی که قانون پیشفرض با action deny پیکربندی شده است، باید اجازه دسترسی از طریق IP شما را بدهیم. لطفاً IP عمومی خود (curl، ipmonkey، whatismyip و غیره) را پیدا کنید.
از کلود شل:
MY_IP=$(curl ifconfig.me)
اولین قانون را برای اجازه دسترسی از IP خود اضافه کنید (IP خود را در زیر وارد کنید)
از کلود شل:
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 را که از پیمایش مسیر برای گنجاندن فایلهای محلی جلوگیری میکند، اعمال کنید.
از کلود شل:
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 باشند، از جمله تزریق دستور. دستورات معمول سیستم عامل شناسایی و مسدود میشوند.
از کلود شل:
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 اسکریپتنویسی شده و خزندههای وب اعمال کنید.
از کلود شل:
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 باشند.
از کلود شل:
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، قوانینی را اعمال کنید که...
از کلود شل:
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
سیاست امنیتی را به سرویس backend متصل کنید
از کلود شل:
gcloud compute backend-services update juice-shop-backend \
--security-policy block-with-modsec-crs \
--global
انتشار قوانین ممکن است مدتی طول بکشد (اما نه بیشتر از 10 دقیقه). پس از اطمینان از گذشت زمان کافی، آسیبپذیریهایی را که قبلاً نشان داده شده است، آزمایش کنید تا در مرحله بعدی، اجرای قوانین Cloud Armor WAF را تأیید کنید.
۷. محافظت Cloud Armor را با مجموعه قوانین اصلی OWASP ModSecurity رعایت کنید.
تأیید کنید که آسیبپذیری LFI کاهش یافته است
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/?a=../
خروجی
HTTP/1.1 403 Forbidden <...>
تأیید کنید که حمله RCE کاهش یافته است
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
خروجی
HTTP/1.1 403 Forbidden <..>
تشخیص اسکنر شناخته شده را تأیید کنید
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
خروجی
HTTP/1.1 403 Forbidden <..>
تأیید کنید که حمله پروتکل کاهش یافته است
طبق مجموعه قوانین اصلی OWASP ModSecurity نسخه ۳.۰.۲، حمله پروتکل به روشهای زیر کاهش مییابد:
از پوسته ابری
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 <..>
تأیید کنید که تلاشهای تثبیت نشست مسدود شدهاند
از پوسته ابری
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a
خروجی
HTTP/1.1 403 Forbidden <..>
۸. قوانین امنیتی Cloud Armor را مرور کنید
حالا که سیاست امنیتی را ایجاد کردهایم، بیایید نگاهی به قوانین پیکربندیشده بیندازیم.

قوانین بر اساس اولویت ارزیابی میشوند: اعداد پایینتر ابتدا ارزیابی میشوند و پس از اجرا، پردازش برای قوانینی با مقادیر اولویت بالاتر ادامه نمییابد.
- اولویت ۹۰۰۰ - مسدود کردن LFI (گنجاندن فایل محلی)
- اولویت ۹۰۰۱ - مسدود کردن RCE (اجرای کد از راه دور/تزریق دستور)
- اولویت ۹۰۰۲ - اسکنرهای بلوک شناسایی شدند
- اولویت ۹۰۰۳ - حملات مسدودسازی پروتکل مانند تقسیم HTTP و قاچاق HTTP
- اولویت ۹۰۰۴ - مسدود کردن حملات تثبیت نشست
- اولویت ۱۰۰۰۰ - به IP خود اجازه دسترسی به وبسایت را بدهید
- اولویت پیشفرض - رد کردن.
*توجه داشته باشید که قانون «اجازه دسترسی به IP شما» با بالاترین شماره اولویت پیکربندی شده است تا دسترسی به سایت را مجاز کند، اما هرگونه حملهای را مسدود میکند.
۹. گزارشهای مربوط به سیاستهای امنیتی Cloud Armor را مشاهده کنید.
از صفحه کنسول Cloud Armor، میتوانید جزئیات سیاست امنیتی را مشاهده کنید و روی تب Logs و سپس روی لینک View policy logs کلیک کنید تا به صفحه Cloud Logging هدایت شوید. این صفحه به طور خودکار بر اساس سیاست امنیتی مورد نظر، مثلاً resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs) فیلتر میشود. کدهای پاسخ خطای ۴۰۳ را مشاهده کنید و جزئیات گزارش را گسترش دهید تا نام سیاست امنیتی اعمال شده، مقدار فیلد منطبق و شناسههای عبارت از پیش پیکربندی شده (یا شناسه امضا) را مشاهده کنید. تصاویر زیر نمونههایی از گزارشهای مربوط به سیاستهای امنیتی اعمال شده پیکربندی شده در این codelab را نشان میدهند.
گزارش LFI

گزارش RCE

گزارش تشخیص اسکنر

گزارش حمله پروتکل

گزارش تثبیت جلسه

۱۰. پاکسازی آزمایشگاه
حالا که کار آزمایشگاه را تمام کردهاید، منابع را تمیز کنید.
این دستورات را اجرا کنید تا سیاست امنیتی Cloud Armor، متعادلکننده بار، نمونهها، قوانین فایروال و شبکه 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
منابع متعادلکننده بار را حذف کنید
این منابع متعادلکننده بار که باید حذف شوند شامل قانون ارسال، پروکسیهای target-http، نقشههای آدرس اینترنتی، backend، بررسیهای سلامت و گروه نمونه هستند.
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
۱۱. تبریک میگویم!
تبریک میگویم که آزمایشگاه کدنویسی قوانین WAF از پیش پیکربندی شده Cloud Armor را به پایان رساندید!
آنچه ما پوشش دادهایم
- نحوه تنظیم یک گروه نمونه و یک متعادل کننده بار ابری سراسری
- نحوه پیکربندی سیاستهای امنیتی Cloud Armor با قوانین WAF از پیش تنظیمشده برای محافظت در برابر حملات lfi، rce، اسکنرها، حملات پروتکل و تثبیت نشست
- چگونه میتوان از طریق لاگها تأیید کرد که Cloud Armor برخی از 10 حمله برتر OWASP را کاهش داده است
مراحل بعدی
- با استفاده از قوانین WAF از پیش پیکربندی شده Cloud Armor، از برنامه خود در برابر 10 آسیبپذیری برتر OWASP محافظت کنید.
- تنظیم دقیق قوانین بر اساس سطوح حساسیت
- برای اجرای دقیقتر امنیت، از مرجع زبان قوانین سفارشی استفاده کنید.