1. บทนำและภาพรวม
DNS Armor ซึ่งขับเคลื่อนโดย Infoblox เป็นบริการที่มีการจัดการครบวงจรซึ่งให้การรักษาความปลอดภัยระดับ DNS สำหรับภาระงาน Google Cloud เครื่องตรวจจับภัยคุกคามขั้นสูงได้รับการออกแบบมาเพื่อตรวจหากิจกรรมที่เป็นอันตรายตั้งแต่จุดแรกสุดในห่วงโซ่การโจมตี ซึ่งก็คือคำขอ DNS โดยไม่ต้องเพิ่มความซับซ้อนในการปฏิบัติงานหรือค่าใช้จ่ายด้านประสิทธิภาพ
Codelab นี้มีวิธีการทีละขั้นตอนในการกำหนดค่าและทดสอบบริการ DNS Armor คุณจะต้องตั้งค่าโครงสร้างพื้นฐานของเครือข่ายที่จำเป็น สร้างเครื่องมือตรวจหาภัยคุกคาม ทดสอบบริการโดยจำลองภัยคุกคาม DNS และสุดท้ายคือวิเคราะห์บันทึกภัยคุกคามโดยใช้ Logs Explorer
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะจัดสรรทรัพยากรต่อไปนี้
- เครือข่าย VPC 2 รายการ ได้แก่
network-aและnetwork-b network-aจะรวมเครือข่ายย่อยและเครื่องเสมือนในภูมิภาคus-east4และus-central1network-bจะมีซับเน็ตและเครื่องเสมือนเฉพาะในus-east4- เครื่องมือตรวจจับภัยคุกคามขั้นสูงของ DNS Armor ที่กำหนดค่าให้ตรวจสอบคำค้นหา DNS

สิ่งที่คุณจะได้เรียนรู้
- วิธีจัดสรรทรัพยากรเครือข่ายที่จำเป็น รวมถึง VPC และเครื่องเสมือน
- วิธีติดตั้งใช้งานเครื่องตรวจจับภัยคุกคามขั้นสูงและยกเว้นเครือข่ายที่เฉพาะเจาะจง
- วิธีตรวจสอบการกำหนดค่าการตรวจหาภัยคุกคามโดยใช้สคริปต์การจำลองภัยคุกคาม
- วิธีวิเคราะห์บันทึกภัยคุกคามใน Logs Explorer
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud
- สิทธิ์เข้าถึงเครื่องมือบรรทัดคำสั่ง
gcloud
2. ข้อกำหนดเบื้องต้น
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- ตรวจสอบว่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google เป็นไปตามข้อจำกัดของนโยบายองค์กรที่จำเป็น
- ยืนยันว่าบัญชีผู้ใช้ของคุณมีบทบาทและสิทธิ์ IAM ที่จำเป็น
- เปิดใช้ Google Cloud APIs ที่จำเป็นสำหรับ Codelab นี้
- มอบหมาย
roles/logging.viewerบทบาท IAM ให้กับบัญชีบริการ Compute Engine
ข้อจำกัดของนโยบายองค์กร
โปรดยืนยันข้อจํากัดของนโยบายขององค์กรที่ใช้กับโปรเจ็กต์เพื่อให้ Codelab นี้เสร็จสมบูรณ์ นโยบายบางอย่างอาจขัดขวางการจัดสรรทรัพยากรที่จำเป็น ข้อจำกัดต่อไปนี้อาจส่งผลต่อการกำหนดค่าของ Codelab นี้
constraints/gcp.resourceLocations: จำกัดภูมิภาคที่คุณสร้างทรัพยากรได้ Codelab ต้องใช้us-east4และus-central1constraints/compute.vmExternalIpAccess: ป้องกันการสร้างเครื่องเสมือนที่มีที่อยู่ IP สาธารณะ ซึ่งอาจรบกวนการตั้งค่าหากคุณไม่ปฏิบัติตามการใช้แฟล็ก--no-addressของ Codelabconstraints/compute.shieldedVm: บังคับใช้การสร้าง VM ที่มีการป้องกัน ซึ่งคำสั่งสร้าง VM ของ Codelab ไม่ได้ระบุไว้ จึงอาจทำให้เกิดข้อผิดพลาดconstraints/gcp.restrictServiceUsage: จำกัด Cloud APIs ของ Google Cloud ที่เปิดใช้ได้ และอาจบล็อก Codelab หากไม่อนุญาตcompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.comและmonitoring.googleapis.com
บทบาทและสิทธิ์ของ IAM
โปรดยืนยันบทบาทและสิทธิ์ IAM ที่มอบให้กับผู้ใช้เพื่อให้ Codelab นี้เสร็จสมบูรณ์ คุณต้องมีบทบาทและสิทธิ์ IAM ต่อไปนี้จึงจะทำ Codelab นี้ให้เสร็จสมบูรณ์ได้
- ผู้ดูแลการใช้บริการ (
roles/serviceusage.serviceUsageAdmin): เพื่อเปิดใช้ Cloud APIs ที่จำเป็นสำหรับ Codelab - ผู้ดูแลระบบเครือข่าย Compute (
roles/compute.networkAdmin): เพื่อสร้างและจัดการเครือข่าย VPC, เครือข่ายย่อย และ Cloud NAT - ผู้ดูแลระบบความปลอดภัยของ Compute (
roles/compute.securityAdmin): เพื่อกำหนดค่ากฎไฟร์วอลล์สำหรับการเข้าถึง SSH ในเครื่องเสมือน - ผู้ดูแลระบบอินสแตนซ์ Compute (v1) (
roles/compute.instanceAdmin.v1): เพื่อสร้างและจัดการเครื่องเสมือนที่จำเป็นสำหรับแล็บ - ผู้ใช้อุโมงค์ข้อมูลที่รักษาความปลอดภัยด้วย IAP (
roles/iap.tunnelResourceAccessor): เพื่อเชื่อมต่อกับเครื่องเสมือนโดยใช้ SSH ผ่าน Identity-Aware Proxy (IAP) - ผู้ดูแลระบบความปลอดภัยของเครือข่าย (
roles/networksecurity.admin): เพื่อสร้างและจัดการเครื่องมือตรวจหาภัยคุกคามของ DNS Armor - ผู้ดูบันทึก (
roles/logging.viewer): เพื่อดูและวิเคราะห์บันทึกภัยคุกคามในเครื่องมือสำรวจบันทึก
Google Cloud APIs
โปรดตรวจสอบว่าได้เปิดใช้ Google Cloud API ที่จำเป็นในโปรเจ็กต์แล้ว
1. เปิดใช้ API ที่จำเป็นโดยเรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. ตรวจสอบว่าได้เปิดใช้ API แล้ว ให้เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud services list --enabled
บัญชีบริการของ Compute Engine
สคริปต์การทดสอบต้องมีสิทธิ์ในการอ่านบันทึกภัยคุกคามจาก Cloud Logging เนื่องจากสคริปต์จะดำเนินการจาก VM ที่ใช้บัญชีบริการเริ่มต้นของ Compute Engine จึงต้องกำหนดบทบาท IAM ให้กับบัญชีบริการนี้roles/logging.viewer
1. ตั้งค่าตัวแปรสภาพแวดล้อม เรียกใช้คำสั่งต่อไปนี้ภายใน Cloud Shell
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. ให้บทบาทผู้ดูบันทึกแก่ SA ของ Compute Engine เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3. การตั้งค่าสภาพแวดล้อมพื้นฐาน
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- สร้างเครือข่าย VPC (
network-aและnetwork-b) ด้วยซับเน็ตที่กำหนดเอง - กำหนดค่า Cloud Router และ Cloud NAT สำหรับการรับส่งข้อมูลขาออกทางอินเทอร์เน็ตในทั้ง
network-aและnetwork-b - สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VM ผ่าน SSH จากช่วง IP ของ IAP สำหรับทั้ง
network-aและnetwork-b - จัดสรรเครื่องเสมือน Linux ทั้งใน
network-aและnetwork-bโดยไม่มีที่อยู่ IP สาธารณะ
สร้าง VPC และซับเน็ต
1. สร้างเครือข่าย-ก และซับเน็ตของเครือข่ายในภูมิภาค us-east4 และ us-central1 เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1
2. สร้างเครือข่าย-ข และซับเน็ตในภูมิภาค us-east4 เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4
กำหนดค่าการส่งข้อมูลขาออกทางอินเทอร์เน็ต
1. สร้าง Cloud Router และ Cloud NAT สำหรับ network-a เพื่ออนุญาตการออกอินเทอร์เน็ตสำหรับ VM ที่ไม่มี IP สาธารณะ
gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1
2. สร้าง Cloud Router และ Cloud NAT สำหรับ network-b เพื่ออนุญาตการออกอินเทอร์เน็ตสำหรับ VM ที่ไม่มี IP สาธารณะ
gcloud compute routers create router-b-use4 \
--network=network-b \
--region=us-east4
gcloud compute routers nats create nat-b-use4 \
--router=router-b-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
กำหนดค่ากฎไฟร์วอลล์
1. สร้างกฎไฟร์วอลล์สำหรับ network-a เพื่ออนุญาตการเข้าถึง SSH จากช่วง IP ของ IAP เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
2. สร้างกฎไฟร์วอลล์สำหรับ network-b เพื่ออนุญาตการเข้าถึง SSH จากช่วง IP ของ IAP เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
สร้างเครื่องเสมือน
1. สร้าง VM ของ Linux ใน network-a
gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform
2. สร้าง VM ของ Linux ใน network-b
gcloud compute instances create vm-b-use4 \
--zone=us-east4-c \
--network=network-b \
--subnet