۱. مقدمه
سیاستهای امنیتی Cloud Armor برای پیکربندی قوانین تعریفشده توسط کاربر جهت فیلتر کردن ترافیک در لبه شبکه گوگل، بالادست از زیرساخت شما، استفاده میشوند. سیاستهای امنیتی Network Edge میتوانند برای کمک به محافظت و اجازه یا مسدود کردن ترافیک هدف قرار دهنده انواع نقاط پایانی زیر استفاده شوند: متعادلکننده بار شبکه، انتقال پروتکل و ماشینهای مجازی با IPهای عمومی.

در این آزمایشگاه کد، نحوه پیکربندی سیاستهای امنیتی Cloud Armor با قوانین تعریفشده توسط کاربر را برای جلوگیری از حملات DDoS نشان خواهیم داد.

شکل 1. زره ابری برای ماشین مجازی با حفاظت از IP عمومی.
آنچه یاد خواهید گرفت
- سیاستهای امنیتی Cloud Armor با پیکربندی قوانین تعریفشده توسط کاربر
- پیکربندیها و آزمایشهای UDP Offset
آنچه نیاز دارید
- آشنایی با TCP/IP
- آشنایی با خط فرمان یونیکس/لینوکس
۲. قبل از شروع
داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
۳. ایجاد شبکه VPC هدف
در بخش بعدی، شبکههای VPC و پیکربندیهای شبکه مرتبط را راهاندازی خواهیم کرد. سیاست امنیتی لبه شبکه Cloud Armor منطقهای است، ما تمام منابع مرتبط را در منطقه آسیا-جنوب شرقی راهاندازی میکنیم.
شبکه VPC
از پوسته ابری
gcloud compute networks create ca4nlb --project=$prodproject --subnet-mode=custom
ایجاد زیرشبکه
از پوسته ابری
gcloud compute networks subnets create ca4nlb-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=ca4nlb --region=asia-southeast1
ایجاد قوانین فایروال
در این بخش، یک قانون فایروال اضافه خواهیم کرد تا ترافیک UDP مورد انتظار به پورت ۱۰۰۰۰ منتقل شود.
از Cloud Shell یک قانون فایروال ایجاد کنید تا پورت UDP 10000 را برای آزمایشهای بعدی باز کند.
gcloud compute firewall-rules create ca4nlb-udp10000 --allow udp:10000 --network ca4nlb --source-ranges 0.0.0.0/0 --enable-logging
از Cloud Shell یک قانون فایروال ایجاد کنید تا به IAP اجازه اتصال به نمونههای ماشین مجازی شما را بدهد.
gcloud compute firewall-rules create ca4nlb-iap-prod --network ca4nlb --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
۴. ایجاد نمونههای ماشین مجازی هدف
یک ماشین مجازی هدف برای آزمایش سیاستهای امنیتی ایجاد کنید. این ماشین مجازی باید دارای یک آدرس IP عمومی و پورت UDP باز ۱۰۰۰۰ باشد.
از Cloud Shell نمونهای از targetvm ایجاد کنید
gcloud compute instances create targetvm \ --zone=asia-southeast1-b \ --image-family=debian-11 \ --image-project=debian-cloud \ --network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=ca4nlb-asia-southeast1 \ --shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring
۵. پیکربندی محافظت پیشرفته شبکه در برابر DDoS
از پوسته ابری
gcloud compute security-policies create ca_advanced_ddos \
--type CLOUD_ARMOR_NETWORK \
--region asia-southeast1
gcloud compute security-policies update ca_advanced_ddos \
--network-ddos-protection ADVANCED \
--region asia-southeast1
gcloud compute network-edge-security-services create caedgepolicy \
--security-policy ca_advanced_ddos \
--region asia-southeast1
۶. ایجاد سیاست امنیتی لبه شبکه با قوانین پیشفرض
ایجاد سیاست امنیتی لبه شبکه
از پوسته ابری
gcloud alpha compute security-policies create customnetworkedge --type=CLOUD_ARMOR_NETWORK --region=asia-southeast1
اصلاح قانون پیشفرض
از پوسته ابری
gcloud alpha compute security-policies rules update 2147483647 --security-policy=customnetworkedge --action=deny --region=asia-southeast1
۷. ایجاد سیاست امنیتی لبه شبکه با استفاده از قوانین پیکربندی شده
آفست UDP از پیش تعریف شده توسط کاربر و پیکربندی شده در سیاست cloud armor. بستهای با این "مقادیر آفست" از بررسی سیاست عبور کرده و به ماشین مجازی backend ارسال میشود. در مثال زیر، دو "آفست" با مقادیر مختلف تعریف خواهیم کرد.
مقدار اول درست بعد از هدر UDP است، دقیقاً با ۲ بایت 0x1700 مطابقت دارد.
مقدار دوم ۸ بایت از هدر UDP را جابجا میکند، دقیقاً با ۴ بایت 0x12345678 مطابقت دارد.
مقدار از پیش تعریف شده بالاتر به نمای بیت بسته UDP تبدیل میشود.

از پوسته ابری
gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG1_AT_0 \ --base=udp --offset=8 --size=2 --mask=0xFF00 \ --region=asia-southeast1 gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG2_AT_8 \ --base=udp --offset=16 --size=4 --mask=0xFFFFFFFF \ --region=asia-southeast1 gcloud alpha compute security-policies rules create 1000 \ --security-policy=customnetworkedge \ --network-user-defined-fields="SIG1_AT_0;0x1700,SIG2_AT_8;0x12345678" \ --action=allow --region=asia-southeast1
۸. سیاست امنیتی را به ماشین مجازی هدف متصل کنید
از Cloud Shell، سیاست امنیتی را به ماشین مجازی محافظتشده متصل کنید.
gcloud alpha compute instances network-interfaces update targetvm \ --security-policy=customnetworkedge \ --security-policy-region=asia-southeast1 \ --network-interface=nic0 \ --zone=asia-southeast1-b
از Cloud Shell، ماشین مجازی هدف را توصیف کنید، خواهید دید که securityPolicy پیوست شده است. IP عمومی را برای آزمایشهای بعدی ثبت کنید.
gcloud alpha compute instances describe targetvm --zone=asia-southeast1-b
networkInterfaces:
- accessConfigs:
- kind: compute#accessConfig
name: External NAT
natIP: 35.240.148.100
networkTier: PREMIUM
securityPolicy: https://www.googleapis.com/compute/alpha/projects/<project>/regions/asia-southeast1/securityPolicies/customnetworkedge
از Cloud Shell، سیاست امنیتی را از ماشین مجازی محافظتشده جدا کنید.
gcloud alpha compute instances network-interfaces update targetvm \ --network-interface=nic0 \ --zone=asia-southeast1-b \ --security-policy=
۹. منابع آزمون را آماده کنید.
ایجاد شبکه آزمایشی VPC
از پوسته ابری
gcloud compute networks create test --project=$prodproject --subnet-mode=custom
ایجاد زیرشبکه آزمایشی
از پوسته ابری
gcloud compute networks subnets create test-asia-southeast1 --project=$prodproject --range=10.0.1.0/24 --network=test --region=asia-southeast1
ایجاد فایروال
از Cloud Shell یک قانون فایروال ایجاد کنید تا به IAP اجازه اتصال به نمونههای ماشین مجازی شما را بدهد.
gcloud compute firewall-rules create test-iap-prod --network test --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
ایجاد ماشین مجازی آزمایشی
از پوسته ابری
gcloud compute instances create test01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=test-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
۱۰. تأیید
وارد کنسول ماشین مجازی شوید و Packet Generator packit نصب کنید.
sudo apt install packit
با پیروی از طراحی آفست UDP، از packit برای تولید بستههای UDP استفاده میکنیم. ما یک بسته (-t udp) را از رابط (-s ens4) با آدرس IP منبع (-s 10.0.1.2) با پورتهای منبع (-S 10000) به آدرس IP مقصد targetVM (-d 35.240.148.100) با پورتهای مقصد (-D 10000) شبیهسازی میکنیم. محتوای بسته با مقادیر (-p '0x 17 00 00 00 00 00 00 12 34 56 78') مطابقت دارد. ما (-c 4) بسته ارسال خواهیم کرد.
sudo packit -m inject -t UDP -i ens4 -s 10.0.1.2 -d 35.240.148.100 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 4
در ماشین مجازی هدف، دستور tcpdump را برای دریافت بسته UDP اجرا کنید.
sudo tcpdump port 10000 -v -n
tcpdump: listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes
06:36:18.434106 IP (tos 0x0, ttl 128, id 17173, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:19.433656 IP (tos 0x0, ttl 128, id 55641, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:20.433935 IP (tos 0x0, ttl 128, id 27161, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:21.434150 IP (tos 0x0, ttl 128, id 46782, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
اگر الگوهای ترافیک را در ماشین مجازی آزمایشی تغییر دهیم، نمیتوانیم هیچ بستهای را در ماشین مجازی هدف ضبط کنیم.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 33 33 00 00 00 00 00 00 12 34 56 78' -c 4
۱۱. تلهمتری
Cloud Metric را باز کنید، از MQL زیر برای جستجوی دادههای تلهمتری NetworkSecurityPolicy استفاده کنید.
fetch networksecurity.googleapis.com/RegionalNetworkSecurityPolicy | metric 'networksecurity.googleapis.com/l3/external/packet_count' | filter (resource.policy_name == 'customnetworkedge') | align rate(1m) | every 1m | group_by [metric.blocked], [value_packet_count_mean: mean(value.packet_count)] | group_by 1m, [value_packet_count_mean_mean: mean(value_packet_count_mean)] | every 1m
با دستور match offset ترافیک با حجم بالا ایجاد کنید.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
با یک دستور unmatch offset ترافیک با حجم بالا ایجاد کنید.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 11 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
تلهمتری بر اساس نام خطمشی فیلتر شده و بر اساس مسدود شده گروهبندی میشود. خط آبی نشاندهنده ترافیک مجاز توسط قوانین خطمشی است. خط سبز نشاندهنده ترافیک مسدود شده توسط قوانین خطمشی است.

۱۲. مراحل پاکسازی
از یک پوسته ابری واحد در ترمینال، اجزای آزمایشگاه را حذف کنید
gcloud compute instances delete targetvm --zone=asia-southeast1-b gcloud compute firewall-rules delete ca4nlb-udp10000 gcloud compute firewall-rules delete ca4nlb-iap-prod gcloud compute networks subnets delete ca4nlb-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete ca4nlb gcloud alpha compute security-policies delete customnetworkedge --region=asia-southeast1 gcloud alpha compute network-edge-security-services delete caedgepolicy --region=asia-southeast1 gcloud alpha compute security-policies delete ca_advanced_ddos --region=asia-southeast1 gcloud compute instances delete test01 --zone=asia-southeast1-b gcloud compute firewall-rules delete test-iap-prod gcloud compute networks subnets delete test-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete test
۱۳. تبریک میگویم!
تبریک میگویم که آزمایشگاه کد را تمام کردی.
آنچه ما پوشش دادهایم
- سیاستهای امنیتی Cloud Armor با قوانین تعریفشده توسط مشتری