Bắt đầu sử dụng tính năng Phát hiện mối đe doạ nâng cao của DNS Armor

1. Giới thiệu và Tổng quan

DNS Armor, do Infoblox cung cấp, là một dịch vụ được quản lý toàn diện, cung cấp chế độ bảo mật ở lớp DNS cho các tải công việc trên Google Cloud. Trình phát hiện mối đe doạ nâng cao của tính năng này được thiết kế để phát hiện hoạt động độc hại ở giai đoạn sớm nhất trong chuỗi tấn công (truy vấn DNS) mà không làm tăng độ phức tạp trong hoạt động hoặc hiệu suất.

Lớp học lập trình này cung cấp hướng dẫn từng bước để định cấu hình và kiểm thử dịch vụ DNS Armor. Bạn sẽ thiết lập cơ sở hạ tầng mạng cần thiết, tạo trình phát hiện mối đe doạ, kiểm thử dịch vụ bằng cách mô phỏng các mối đe doạ DNS và cuối cùng là phân tích nhật ký mối đe doạ bằng Trình khám phá nhật ký.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ cung cấp các tài nguyên sau:

  • Hai mạng VPC: network-anetwork-b
  • network-a sẽ bao gồm các mạng con và máy ảo ở các khu vực us-east4us-central1.
  • network-b sẽ chỉ bao gồm một mạng con và máy ảo trong us-east4.
  • Một trình phát hiện mối đe doạ nâng cao của DNS Armor được định cấu hình để kiểm tra các truy vấn DNS.

75d6eeb807735645.png

Kiến thức bạn sẽ học được

  • Cách cung cấp các tài nguyên mạng cần thiết, bao gồm cả VPC và máy ảo.
  • Cách triển khai một trình phát hiện mối đe doạ nâng cao và loại trừ các mạng cụ thể.
  • Cách xác thực cấu hình phát hiện mối đe doạ bằng tập lệnh mô phỏng mối đe doạ.
  • Cách phân tích nhật ký về mối đe doạ trong Trình khám phá nhật ký.

Bạn cần có

  • Một dự án trên Google Cloud.
  • Quyền truy cập vào công cụ dòng lệnh gcloud.

2. Điều kiện tiên quyết

Trong phần này, bạn sẽ thực hiện các nhiệm vụ sau:

  • Xác minh rằng dự án Google Cloud của bạn đáp ứng các điều kiện ràng buộc cần thiết của Chính sách tổ chức.
  • Xác nhận rằng tài khoản người dùng của bạn có các vai trò và quyền IAM bắt buộc.
  • Bật các API Google Cloud cần thiết cho lớp học lập trình này.
  • Chỉ định vai trò roles/logging.viewer IAM cho Tài khoản dịch vụ Compute Engine.

Các ràng buộc về chính sách của tổ chức

Để hoàn tất thành công lớp học lập trình này, vui lòng xác minh các ràng buộc về Chính sách của tổ chức được áp dụng cho dự án của bạn. Một số chính sách có thể cản trở việc cung cấp các tài nguyên cần thiết. Các ràng buộc sau đây có thể ảnh hưởng đến cấu hình của lớp học lập trình này:

  • constraints/gcp.resourceLocations: Hạn chế các khu vực mà bạn có thể tạo tài nguyên; lớp học lập trình yêu cầu us-east4us-central1.
  • constraints/compute.vmExternalIpAccess: Ngăn việc tạo máy ảo có địa chỉ IP công khai. Điều này có thể gây trở ngại cho quá trình thiết lập nếu bạn không tuân theo cách sử dụng cờ --no-address của codelab.
  • constraints/compute.shieldedVm: Buộc tạo các VM được bảo vệ mà các lệnh tạo VM của codelab không chỉ định, có thể gây ra lỗi.
  • constraints/gcp.restrictServiceUsage: Giới hạn những API Google Cloud có thể được bật và có thể chặn lớp học lập trình nếu không cho phép compute.googleapis.com, networksecurity.googleapis.com, logging.googleapis.commonitoring.googleapis.com.

Vai trò và quyền trong IAM

Để hoàn tất thành công lớp học lập trình này, vui lòng xác minh các vai trò và quyền IAM được cấp cho người dùng của bạn. Bạn cần có các quyền và vai trò IAM sau đây để hoàn thành Lớp học lập trình này.

  • Quản trị viên sử dụng dịch vụ (roles/serviceusage.serviceUsageAdmin): Để bật các API Google Cloud cần thiết cho lớp học lập trình.
  • Quản trị viên mạng điện toán (roles/compute.networkAdmin): Để tạo và quản lý mạng VPC, mạng con và NAT trên đám mây.
  • Quản trị viên bảo mật điện toán (roles/compute.securityAdmin): Để định cấu hình các quy tắc tường lửa cho quyền truy cập SSH vào máy ảo.
  • Quản trị viên của đối tượng trong Compute Engine (v1) (roles/compute.instanceAdmin.v1): Để tạo và quản lý các máy ảo cần thiết cho phòng thí nghiệm.
  • Người dùng đường hầm được bảo mật bằng IAP (roles/iap.tunnelResourceAccessor): Để kết nối với các máy ảo bằng SSH thông qua Identity-Aware Proxy (IAP).
  • Quản trị viên bảo mật mạng (roles/networksecurity.admin): Có thể tạo và quản lý trình phát hiện mối đe doạ DNS Armor.
  • Trình xem nhật ký (roles/logging.viewer): Để xem và phân tích nhật ký mối đe doạ trong Logs Explorer.

API của Google Cloud

Hãy đảm bảo rằng bạn đã bật các API Google Cloud cần thiết trong dự án của mình.

1. Bật các API cần thiết, chạy các lệnh gcloud sau đây trong Cloud Shell.

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com

2. Xác minh rằng các API đã được Bật, hãy chạy các lệnh gcloud sau trong Cloud Shell.

gcloud services list --enabled

Tài khoản dịch vụ Compute Engine

Tập lệnh kiểm thử cần có quyền đọc nhật ký mối đe doạ từ Cloud Logging. Vì tập lệnh sẽ được thực thi từ một VM sử dụng Tài khoản dịch vụ Compute Engine mặc định, nên bạn phải chỉ định vai trò roles/logging.viewer IAM cho tài khoản dịch vụ này.

1. Thiết lập các biến môi trường, chạy các lệnh sau trong Cloud Shell.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

2. Cấp vai trò người xem nhật ký cho SA Compute Engine. Chạy các lệnh gcloud sau đây trong Cloud Shell

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"

3. Thiết lập môi trường cơ bản

Trong phần này, bạn sẽ thực hiện các nhiệm vụ sau:

  • Tạo mạng VPC (network-anetwork-b) bằng các mạng con tuỳ chỉnh.
  • Định cấu hình Bộ định tuyến đám mây và Cloud NAT để lưu lượng truy cập ra bên ngoài Internet ở cả network-anetwork-b.
  • Tạo quy tắc tường lửa để cho phép truy cập SSH vào các VM từ dải IP của IAP cho cả network-anetwork-b.
  • Cung cấp máy ảo Linux trong cả network-anetwork-b mà không có địa chỉ IP công khai.

Tạo VPC và mạng con

1. Tạo network-a và các mạng con của mạng này trong các khu vực us-east4us-central1. Chạy các lệnh gcloud sau đây trong 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. Tạo network-b và mạng con trong khu vực us-east4. Chạy các lệnh gcloud sau đây trong 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

Định cấu hình lưu lượng truy cập Internet đi ra

1. Tạo Cloud Router và Cloud NAT cho network-a để cho phép lưu lượng truy cập Internet đi cho các VM không có IP công khai.

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. Tạo Cloud Router và Cloud NAT cho network-b để cho phép lưu lượng truy cập Internet đi cho các VM không có IP công khai.

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

Định cấu hình quy tắc tường lửa

1. Tạo quy tắc tường lửa cho network-a để cho phép truy cập SSH từ dải IP của IAP. Chạy các lệnh gcloud sau đây trong 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. Tạo quy tắc tường lửa cho network-b để cho phép truy cập SSH từ dải IP của IAP. Chạy các lệnh gcloud sau đây trong Cloud Shell.

gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20

Tạo máy ảo

1. Tạo máy ảo Linux trong 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. Tạo máy ảo Linux trong network-b

gcloud compute instances create vm-b-use4 \
--zone=us-east4-c \
--network=network-b \
--subnet=subnet-b-use4 \
--no-address \
--scopes=cloud-platform

4. Tạo Trình phát hiện mối đe doạ DNS

Trong phần này, bạn sẽ thực hiện các nhiệm vụ sau:

  • Tạo trình phát hiện mối đe doạ.
  • Liệt kê trình phát hiện mối đe doạ.
  • Mô tả tài nguyên.

Sau khi cung cấp VPC, mạng con và máy ảo, bước tiếp theo là tạo trình phát hiện mối đe doạ DNS.

1. Tạo trình phát hiện mối đe doạ bằng lệnh gcloud beta network-security dns-threat-detectors create. Sử dụng cờ --excluded-networks để loại trừ network-b.

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox \
--excluded-networks=projects/$PROJECT_ID/global/networks/network-b

2. Liệt kê trình phát hiện mối đe doạ để xác nhận việc tạo.

gcloud beta network-security dns-threat-detectors list --location=global

3. Mô tả tài nguyên để xác minh rằng network-b được liệt kê chính xác trong excludedNetworks.

gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global

Ví dụ về kết quả đầu ra:

createTime: '2025-08-06T17:06:30.297586089Z'
excludedNetworks:
- projects/dns-armor-demo-project/global/networks/network-b
name: projects/dns-armor-demo-project/locations/global/dnsThreatDetectors/my-dns-threat-detector
provider: INFOBLOX
updateTime: '2025-08-27T01:14:09.666357239Z'

5. Kiểm thử chế độ thiết lập

Trong phần này, bạn sẽ thực hiện các nhiệm vụ sau:

  • Tạo kết nối SSH vào các máy ảo.
  • Cài đặt Git trên các VM.
  • Sao chép kho lưu trữ trình mô phỏng phát hiện mối đe doạ của Infoblox.
  • Chạy tập lệnh và phân tích kết quả được tạo.

Xác thực chế độ thiết lập bằng cách tạo các truy vấn DNS độc hại được mô phỏng từ các VM. Bạn nên quan sát các mục nhật ký cho những truy vấn bắt nguồn từ network-a, trong khi không có nhật ký nào được tạo từ network-b.

1. SSH vào vm-a-use4. Chạy các lệnh gcloud sau đây trong Cloud Shell.

gcloud compute ssh vm-a-use4 --zone=us-east4-c

2. Cài đặt Git trên máy ảo.

sudo apt-get install git -y

3. Sao chép kho lưu trữ trình mô phỏng phát hiện mối đe doạ của Infoblox.

git clone https://github.com/infobloxopen/ib-threat-detection-simulator

4. Thay đổi thư mục thành thư mục của trình mô phỏng.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. Chạy tập lệnh và phân tích kết quả được tạo.

Chạy tập lệnh.

chmod +x run.sh

Chạy tập lệnh.

./run.sh info basic

6. Đầu ra mẫu

Ảnh chụp màn hình bên dưới cho thấy một phần đầu ra của tập lệnh từ một VM trong network-a. Kết quả cho thấy 100% các mối đe doạ đã được phát hiện.

a66c1757f8c74da6.png

Ảnh chụp màn hình bên dưới cho thấy một phần đầu ra của tập lệnh từ một VM trong network-b. Kết quả cho thấy 0% mối đe doạ đã được phát hiện. Điều này là bình thường vì network-b đã bị loại trừ trong quá trình tạo trình phát hiện mối đe doạ.

c12d130c95c04e84.png

7. Quay lại Cloud Shell bằng cách thoát phiên SSH.

exit

6. Xem nhật ký về mối đe doạ trong Trình khám phá nhật ký

Bạn có thể xem nhật ký mối đe doạ đã tạo trong Trình khám phá nhật ký sau khi chạy tập lệnh kiểm thử, vì nhật ký này được ghi vào Cloud Logging.

Mục nhập nhật ký mẫu

Phần này cung cấp một mục nhập nhật ký mẫu cho mối đe doạ DNS được phát hiện, minh hoạ thông tin chi tiết mà DNS Armor thu thập được, bao gồm cả IP nguồn, miền được truy vấn và danh mục mối đe doạ. Đây là thông tin tham khảo để bạn hiểu được cấu trúc và nội dung của nhật ký mà bạn sẽ phân tích.

{
  "insertId": "1izjkneb44",
  "jsonPayload": {
    "partnerId": "Infoblox",
    "detectionTime": "2025-08-08T01:49:54.092250101Z",
    "dnsQuery": {
      "authAnswer": false,
      "rdata": "random.malicious-domain.com.\t300\tIN\ta\t196.251.118.39",
      "protocol": "UDP",
      "projectNumber": "1234567890",
      "responseCode": "NOERROR",
      "queryType": "A",
      "location": "us-east4",
      "sourceIp": "10.10.0.2",
      "queryName": "random.malicious-domain.com.",
      "vmProjectNumber": "1234567890",
      "vmInstanceId": "01234567899876543210",
      "destinationIp": "",
      "queryTime": "2025-08-08T01:49:53.712692495Z"
    },
    "threatInfo": {
      "severity": "HIGH",
      "confidence": "HIGH",
      "threatDescription": "",
      "category": "EmergentDomain",
      "threatId": "Suspicious_EmergentDomain",
      "type": "Suspicious",
      "threatIndicator": "izumisv1.cc",
      "threatIndicatorType": "FQDN",
      "threat": "Suspicious",
      "threatFeed": "suspicious-noed"
    }
  },
  "resource": {
    "type": "networksecurity.googleapis.com/DnsThreatDetector",
    "labels": {
      "resource_container": "projects/1234567890",
      "id": "",
      "location": "us-east4"
    }
  },
  "timestamp": "2025-08-08T01:49:54.092250101Z",
  "severity": "INFO",
  "logName": "projects/dns-armor-demo-project/logs/networksecurity.googleapis.com%2Fdns_threat_events",
  "receiveTimestamp": "2025-08-08T01:49:55.290965780Z"
}

Xem nhật ký trong Trình khám phá nhật ký

1. Chuyển đến phầnMonitoring trong Google Cloud Console, rồi chọn Logs explorer.

4a90c593d7e339d8.png

2. Để lọc tất cả nhật ký mối đe doạ DNS Armor, hãy sử dụng truy vấn sau. Thao tác này lọc nhật ký dựa trên loại tài nguyên cho Trình phát hiện mối đe doạ DNS.

resource.type="networksecurity.googleapis.com/DnsThreatDetector"

3. Lọc nhật ký cho khu vực us-east4, thêm bộ lọc cho vị trí. Truy vấn này sẽ chỉ cho thấy các mối đe doạ được phát hiện ở khu vực us-east4.

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"

4. Lọc nhật ký theo mạng nguồn, lọc nhật ký dựa trên địa chỉ IP nguồn của truy vấn DNS để xem các mối đe doạ bắt nguồn từ một mạng VPC cụ thể.

Để xem nhật ký từ network-a (mạng con 10.10.0.0/24 và 10.10.1.0/24):

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")

Cách xem nhật ký từ network-b (mạng con 10.20.0.0/24):

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."

7. Dọn dẹp

Để tránh phát sinh các khoản phí trong tương lai, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này. Hãy nhớ thoát khỏi trình bao của VM và quay lại Cloud Shell khi chạy các lệnh dọn dẹp.

1. Xoá các 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
gcloud compute instances delete vm-b-use4 --zone=us-east4-c --quiet

2. Xoá các quy tắc tường lửa.

gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet

3. Xoá các Cổng NAT trên đám mây.

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
gcloud compute routers nats delete nat-b-use4 --router=router-b-use4 --region=us-east4 --quiet

4. Xoá Cloud Router

gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
gcloud compute routers delete router-b-use4 --region=us-east4 --quiet

5. Xoá các mạng con.

gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
gcloud compute networks subnets delete subnet-b-use4 --region=us-east4 --quiet

6. Xoá trình phát hiện mối đe doạ DNS.

gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet

7. Xoá VPC.

gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet

8. Xin chúc mừng

Xin chúc mừng! Bạn đã định cấu hình, triển khai và kiểm thử thành công trình phát hiện mối đe doạ DNS Armor. Bạn đã có được kinh nghiệm thực tế trong việc bảo vệ môi trường Google Cloud của mình khỏi các mối đe doạ dựa trên DNS.

Trong lớp học lập trình này, bạn đã:

  • Cung cấp một môi trường mạng có nhiều VPC, mạng con và máy ảo.
  • Đã định cấu hình lưu lượng truy cập internet cho các VM riêng tư bằng Cloud NAT.
  • Triển khai một trình phát hiện mối đe doạ DNS Armor và tìm hiểu cách loại trừ các mạng cụ thể.
  • Mô phỏng các mối đe doạ DNS và xác thực cấu hình phát hiện mối đe doạ.
  • Phân tích nhật ký mối đe doạ trong Trình khám phá nhật ký để xác định và nắm bắt hoạt động DNS độc hại.

Tiếp theo là gì?

Tài liệu tham khảo