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

สิ่งที่คุณจะได้เรียนรู้
- วิธีจัดสรรทรัพยากรเครือข่ายที่จำเป็น รวมถึง VPC และเครื่องเสมือน
- วิธีติดตั้งใช้งานเครื่องตรวจจับภัยคุกคามขั้นสูงและยกเว้นเครือข่ายที่เฉพาะเจาะจง
- วิธีตรวจสอบการกำหนดค่าการตรวจหาภัยคุกคามโดยใช้สคริปต์การจำลองภัยคุกคาม
- วิธีแสดงภาพบันทึกภัยคุกคาม DNS โดยใช้เมตริกตามบันทึกและแดชบอร์ดที่กำหนดเอง
สิ่งที่คุณต้องมี
- โปรเจ็กต์ 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ที่มีซับเน็ตที่กำหนดเอง - กำหนดค่า Cloud Router และ Cloud NAT สำหรับการรับส่งข้อมูลอินเทอร์เน็ตขาออกใน
network-a - สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VM ผ่าน SSH จากช่วง IP ของ IAP สำหรับ
network-a - จัดสรรเครื่องเสมือน Linux ใน
network-aโดยไม่มีที่อยู่ 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
กำหนดค่าการส่งข้อมูลขาออกทางอินเทอร์เน็ต
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
กำหนดค่ากฎไฟร์วอลล์
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
สร้างเครื่องเสมือน
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
4. สร้างตัวตรวจหาภัยคุกคาม DNS
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- สร้างตัวตรวจจับภัยคุกคาม
- แสดงรายการ Threat Detector
เมื่อจัดสรร VPC, ซับเน็ต และเครื่องเสมือนแล้ว ขั้นตอนถัดไปคือการสร้างเครื่องตรวจหาภัยคุกคาม DNS
1. สร้างตัวตรวจจับภัยคุกคามโดยใช้คำสั่ง gcloud beta network-security dns-threat-detectors create
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox
2. แสดงรายการเครื่องมือตรวจหาภัยคุกคามเพื่อยืนยันการสร้าง
gcloud beta network-security dns-threat-detectors list --location=global
5. สร้างเมตริกตามบันทึก
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- ทำความเข้าใจรายการบันทึก
- สร้างไฟล์
config.yaml - สร้างเมตริกตามบันทึก
1. ทำความเข้าใจรายการบันทึก คุณตรวจสอบตารางของฟิลด์ทั้งหมดในบันทึก DNS Armor ได้ในเอกสารประกอบเกี่ยวกับบันทึกภัยคุกคาม ส่วนนี้จะมุ่งเน้นที่ฟิลด์เฉพาะที่จะใช้ในการสร้างเมตริกตามบันทึก
ระบบจะใช้ฟิลด์ต่อไปนี้เพื่อสร้างเมตริกตามบันทึก
- vmInstanceId: ชื่ออินสแตนซ์ VM ของ Compute Engine ใช้ได้เฉพาะกับคำค้นหาที่เริ่มต้นโดย VM ของ Compute Engine เท่านั้น
- queryName: ชื่อคำขอ DNS
- ความรุนแรง: ความรุนแรง (สูง ปานกลาง ต่ำ หรือข้อมูล) ที่เชื่อมโยงกับภัยคุกคามที่ตรวจพบ ดูข้อมูลเพิ่มเติมได้ที่คำจำกัดความระดับความรุนแรงของ Infoblox
- location: ภูมิภาค Google Cloud ที่แสดงการตอบกลับ
- ภัยคุกคาม: ชื่อของภัยคุกคามที่ตรวจพบ
- threatId: ตัวระบุภัยคุกคามที่ไม่ซ้ำกัน
2. สร้างไฟล์ config.yaml ก่อนอื่น ให้สร้างไฟล์ config.yaml ที่ว่างเปล่าโดยใช้คำสั่ง touch
touch config.yaml
3. ป้อนข้อมูลในไฟล์ config.yaml ไฟล์นี้กำหนดวิธีสร้างเมตริกตามบันทึกสำหรับบันทึกภัยคุกคามของ DNS Armor โดยจะระบุรายการบันทึกที่จะกรอง ป้ายกำกับที่จะดึงออกจากรายการเหล่านั้น และพร็อพเพอร์ตี้ของเมตริกเอง
เปิดไฟล์ config.yaml ในโปรแกรมแก้ไขข้อความที่คุณเลือก แล้ววางเนื้อหาต่อไปนี้
filter: |
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.projectNumber="PROJECT_NUMBER"
labelExtractors:
InstanceId: EXTRACT(jsonPayload.dnsQuery.vmInstanceId)
QueryName: EXTRACT(jsonPayload.dnsQuery.queryName)
Severity: EXTRACT(jsonPayload.threatInfo.severity)
region: EXTRACT(jsonPayload.dnsQuery.location)
threat: EXTRACT(jsonPayload.threatInfo.threat)
threatId: EXTRACT(jsonPayload.threatInfo.threatId)
metricDescriptor:
labels:
- key: InstanceId
- key: threat
- key: Severity
- key: threatId
- key: region
- key: QueryName
metricKind: DELTA
unit: '1'
valueType: INT64
4. อัปเดตหมายเลขโปรเจ็กต์ ใช้คำสั่ง sed ต่อไปนี้เพื่อแทนที่ตัวยึดตำแหน่ง PROJECT_NUMBER ด้วยค่าจากตัวแปรสภาพแวดล้อม
sed -i "s/PROJECT_NUMBER/$PROJECT_NUMBER/g" config.yaml
5. สร้างเมตริกตามบันทึก สุดท้าย ให้เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell เพื่อสร้างเมตริก
gcloud logging metrics create dns-armor-log-based-metric --config-from-file=config.yaml
6. สร้างแดชบอร์ดที่กำหนดเอง
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- สร้างไฟล์
dashboard.json - สร้างแดชบอร์ดที่กำหนดเอง
1. สร้างไฟล์ dashboard.json ก่อนอื่น ให้สร้างไฟล์ dashboard.json ที่ว่างเปล่าโดยใช้คำสั่ง touch
touch dashboard.json
2. ป้อนข้อมูลในไฟล์ dashboard.json dashboard.json ไฟล์จะกำหนดค่าแดชบอร์ดการตรวจสอบที่กำหนดเอง กำหนดวิดเจ็ต แสดงพร็อพเพอร์ตี้ และกำหนดวิธีแสดงภาพ รวม และกรองเมตริกที่อิงตามบันทึก
เปิดไฟล์ dashboard.json ในโปรแกรมแก้ไขข้อความที่คุณเลือก แล้ววางเนื้อหาต่อไปนี้
{
"displayName": "DNS Armor - Custom Dashboard",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs per region",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"yPos": 20,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Threat",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 20,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - ThreatID",
"timeSeriesTable": {
"columnSettings": [
{
"column": "threatId",
"visible": true
},
{
"column": "threat",
"visible": true
},
{
"column": "project_id",
"visible": false
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threatId\"",
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
}
}
}
],
"metricVisualization": "BAR"
}
}
},
{
"yPos": 40,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Severity",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"Severity\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 40,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - Source",
"id": "",
"timeSeriesTable": {
"columnSettings": [
{
"column": "InstanceId",
"visible": true
},
{
"column": "region",
"visible": true
},
{
"column": "project_id",
"visible": true
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"tableTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"InstanceId\"",
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
},
"unitOverride": ""
}
}
],
"displayColumnType": false,
"metricVisualization": "BAR"
}
}
},
{
"yPos": 60,
"height": 20,
"width": 48,
"widget": {
"title": "Group by Domains",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"QueryName\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
}
]
}
}
2. สร้างแดชบอร์ดที่กำหนดเอง เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud monitoring dashboards create --config-from-file=dashboard.json
7. สร้างการจำลองการค้นหา DNS ที่เป็นอันตราย
ในส่วนนี้ คุณจะทำงานต่อไปนี้
- SSH เข้าสู่ VM
- ติดตั้ง Git ใน VM
- โคลนที่เก็บเครื่องจำลองการตรวจหาภัยคุกคามของ Infoblox
- เรียกใช้สคริปต์และวิเคราะห์เอาต์พุตที่สร้างขึ้น
ตรวจสอบการตั้งค่าโดยสร้างการค้นหา DNS ที่เป็นอันตรายที่จำลองจาก VM
1. SSH เข้าสู่ vm-a-use4 เรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud compute ssh vm-a-use4 --zone=us-east4-c
2. ติดตั้ง Git ใน VM
sudo apt-get install git -y
3. โคลนที่เก็บโปรแกรมจำลองการตรวจหาภัยคุกคามของ Infoblox
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. เปลี่ยนไดเรกทอรีเป็นไดเรกทอรีของโปรแกรมจำลอง
cd ib-threat-detection-simulator/threat_detection_simulator/
5. เรียกใช้สคริปต์และวิเคราะห์เอาต์พุตที่สร้างขึ้น
ทำให้สคริปต์เรียกใช้งานได้
chmod +x run.sh
เรียกใช้สคริปต์
./run.sh info basic
6. เอาต์พุตตัวอย่าง
รูปภาพต่อไปนี้แสดงส่วนหนึ่งของเอาต์พุตของสคริปต์ตามที่เห็นใน VM ภายใน network-a เอาต์พุตนี้จะแสดงรายละเอียดอัตราการตรวจหาภัยคุกคาม DNS ประเภทต่างๆ ที่สคริปต์การทดสอบจำลอง

7. กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
8. ดูแดชบอร์ดที่กำหนดเอง
ดูหน้าแดชบอร์ด
1. พิมพ์แดชบอร์ดในช่องค้นหาที่ด้านบนของคอนโซล Google Cloud จากนั้นคลิกแดชบอร์ดในส่วนผลการค้นหาเด่น

2. ค้นหา DNS Armor - Custom Dashboard ในช่องค้นหา แล้วคลิก DNS Armor - Custom Dashboard เพื่อเปิดแดชบอร์ด

3. ดูแดชบอร์ด

วิดเจ็ตในแดชบอร์ด
ส่วนนี้จะอธิบายวิดเจ็ตต่างๆ ที่มีในแดชบอร์ดที่กำหนดเอง โดยจะแสดงภาพรวมของฟังก์ชันการทำงานและข้อมูลที่วิดเจ็ตแสดง
- บันทึกภัยคุกคาม: แผนภูมิแท่งแบบซ้อนที่แสดงบันทึกภัยคุกคามที่สร้างขึ้นสำหรับเครือข่ายทั้งหมดที่รวมไว้ในโปรเจ็กต์ในช่วงระยะเวลาที่ระบุ
- บันทึกภัยคุกคามต่อภูมิภาค: แผนภูมิแท่งแบบซ้อนที่แสดงบันทึกภัยคุกคามซึ่งจัดกลุ่มตามภูมิภาคในช่วงเวลาที่กำหนด
- จัดกลุ่มตามภัยคุกคาม: แผนภูมิวงกลมที่จัดหมวดหมู่บันทึกภัยคุกคามตามประเภทภัยคุกคามภายในกรอบเวลาที่กำหนด
- รายการยอดนิยม - ThreatID: รายการที่แสดง ThreatID 30 รายการแรกภายในกรอบเวลาที่ระบุ
- จัดกลุ่มตามความรุนแรง: แผนภูมิวงกลมที่จัดกลุ่มบันทึกภัยคุกคามตามระดับความรุนแรงภายในกรอบเวลาที่กำหนด
- รายการยอดนิยม - แหล่งที่มา: รายการที่แสดงรหัสอินสแตนซ์ 30 อันดับแรก (VM ต้นทาง) ภายในกรอบเวลาที่ระบุ
- จัดกลุ่มตามโดเมน: แผนภูมิแท่งแบบซ้อนที่จัดกลุ่มบันทึกภัยคุกคามตามชื่อโดเมนที่พบในคำค้นหา
9. ล้างข้อมูล
โปรดลบทรัพยากรที่สร้างขึ้นใน Codelab นี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินในอนาคต อย่าลืมออกจาก Shell ของ VM และกลับไปที่ Cloud Shell เมื่อเรียกใช้คำสั่งล้างข้อมูล
1. ลบแดชบอร์ดที่กำหนดเอง
เนื่องจากระบบจะสร้างรหัสแดชบอร์ดแบบไดนามิกเมื่อสร้าง คุณจึงต้องดึงข้อมูลชื่อทรัพยากรโดยใช้ชื่อที่แสดงก่อน
DASHBOARD_NAME=$(gcloud monitoring dashboards list --filter="displayName='DNS Armor - Custom Dashboard'" --format='value(name)')
gcloud monitoring dashboards delete $DASHBOARD_NAME --quiet
2. ลบเมตริกตามบันทึก
gcloud logging metrics delete dns-armor-log-based-metric --quiet
3. ลบ VM
gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet
4. ลบกฎไฟร์วอลล์
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
5. ลบเกตเวย์ Cloud NAT
gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet
6. ลบ Cloud Router
gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
7. ลบซับเน็ต
gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
8. ลบตัวตรวจหาภัยคุกคาม DNS
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
9. ลบ VPC
gcloud compute networks delete network-a --quiet
10. ขอแสดงความยินดี
ยินดีด้วย คุณกำหนดค่า ปรับใช้ และแสดงภาพบันทึกการตรวจหาภัยคุกคามของ DNS Armor ได้สำเร็จแล้ว คุณได้รับประสบการณ์จริงในการปกป้องสภาพแวดล้อม Google Cloud จากภัยคุกคามที่อิงตาม DNS และการสร้างโซลูชันการตรวจสอบที่กำหนดเองเพื่อรับข้อมูลเชิงลึกด้านความปลอดภัย
ใน Codelab นี้ คุณจะมีสิ่งต่อไปนี้
- จัดสรรสภาพแวดล้อมเครือข่ายด้วย VPC, ซับเน็ต และเครื่องเสมือน
- กำหนดค่าการรับส่งข้อมูลอินเทอร์เน็ตขาออกสำหรับ VM ส่วนตัวโดยใช้ Cloud NAT
- ติดตั้งใช้งานเครื่องมือตรวจหาภัยคุกคาม DNS Armor
- จำลองภัยคุกคาม DNS และตรวจสอบการกำหนดค่าการตรวจจับภัยคุกคาม
- สร้างเมตริกตามบันทึกที่กำหนดเองจากบันทึกภัยคุกคาม DNS
- สร้างแดชบอร์ด Cloud Monitoring ที่กำหนดเองเพื่อแสดงภาพและวิเคราะห์ภัยคุกคาม DNS