เริ่มต้นใช้งานการตรวจหาภัยคุกคามขั้นสูงของ DNS Armor

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-central1
  • network-b จะมีซับเน็ตและเครื่องเสมือนเฉพาะใน us-east4
  • เครื่องมือตรวจจับภัยคุกคามขั้นสูงของ DNS Armor ที่กำหนดค่าให้ตรวจสอบคำค้นหา DNS

75d6eeb807735645.png

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

  • วิธีจัดสรรทรัพยากรเครือข่ายที่จำเป็น รวมถึง 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-central1
  • constraints/compute.vmExternalIpAccess: ป้องกันการสร้างเครื่องเสมือนที่มีที่อยู่ IP สาธารณะ ซึ่งอาจรบกวนการตั้งค่าหากคุณไม่ปฏิบัติตามการใช้แฟล็ก --no-address ของ Codelab
  • constraints/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