1. Giới thiệu
Chính sách bảo mật của Cloud Armor được dùng để định cấu hình các quy tắc do người dùng xác định nhằm lọc lưu lượng truy cập ở rìa mạng của Google, lưu lượng truy cập từ cơ sở hạ tầng của bạn. Chính sách bảo mật Network Edge có thể được dùng để giúp bảo vệ và cho phép hoặc chặn lưu lượng truy cập nhắm đến các loại thiết bị đầu cuối sau: Trình cân bằng tải mạng, Chuyển tiếp giao thức và VM có IP công khai.
Trong lớp học lập trình này, chúng ta sẽ trình bày cách định cấu hình các chính sách bảo mật của Cloud Armor với các quy tắc do người dùng xác định để ngăn chặn các cuộc tấn công DDoS.
Hình 1. Cloud Armor cho máy ảo có cơ chế bảo vệ IP công khai.
Kiến thức bạn sẽ học được
- Chính sách bảo mật của Cloud Armor với cấu hình quy tắc do người dùng xác định
- Cấu hình và kiểm thử Mức chênh lệch UDP.
Bạn cần có
- Có kiến thức về TCP/IP
- Có kiến thức về dòng lệnh Unix/Linux
2. Trước khi bắt đầu
Bên trong Cloud Shell, hãy đảm bảo rằng bạn thiết lập mã dự án
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
3. Tạo mạng VPC mục tiêu
Trong phần sau, chúng ta sẽ thiết lập mạng lưới VPC và các cấu hình mạng liên quan. Chính sách bảo mật mạng của Cloud Armor dựa trên khu vực. Chúng tôi thiết lập tất cả tài nguyên liên quan ở khu vực asia-southeast1.
Mạng VPC
Của Cloud Shell
gcloud compute networks create ca4nlb --project=$prodproject --subnet-mode=custom
Tạo mạng con
Của Cloud Shell
gcloud compute networks subnets create ca4nlb-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=ca4nlb --region=asia-southeast1
Tạo quy tắc về tường lửa.
Trong phần này, chúng ta sẽ thêm quy tắc tường lửa để cho phép lưu lượng truy cập UDP dự kiến đến cổng 10000.
Từ Cloud Shell, tạo một quy tắc tường lửa để mở cổng UDP 10000 cho hoạt động kiểm thử sau.
gcloud compute firewall-rules create ca4nlb-udp10000 --allow udp:10000 --network ca4nlb --source-ranges 0.0.0.0/0 --enable-logging
Trong Cloud Shell, bạn có thể tạo một quy tắc tường lửa để cho phép IAP kết nối với các thực thể máy ảo của bạn.
gcloud compute firewall-rules create ca4nlb-iap-prod --network ca4nlb --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
4. Tạo thực thể máy ảo mục tiêu
Tạo một máy ảo mục tiêu để kiểm thử các chính sách bảo mật. Máy ảo này phải có địa chỉ IP công khai và mở cổng UDP 10000.
Từ Cloud Shell, tạo thực thể targetvm
gcloud compute instances create targetvm \ --zone=asia-southeast1-b \ --image-family=debian-11 \ --image-project=debian-cloud \ --network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=ca4nlb-asia-southeast1 \ --shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring
5. Định cấu hình biện pháp bảo vệ nâng cao chống lại các cuộc tấn công DDoS trên mạng
Của Cloud Shell
gcloud compute security-policies create ca_advanced_ddos \ --type CLOUD_ARMOR_NETWORK \ --region asia-southeast1 gcloud compute security-policies update ca_advanced_ddos \ --network-ddos-protection ADVANCED \ --region asia-southeast1 gcloud compute network-edge-security-services create caedgepolicy \ --security-policy ca_advanced_ddos \ --region asia-southeast1
6. Tạo Chính sách bảo mật cạnh mạng với các quy tắc mặc định
Tạo chính sách bảo mật cho Network Edge
Của Cloud Shell
gcloud alpha compute security-policies create customnetworkedge --type=CLOUD_ARMOR_NETWORK --region=asia-southeast1
Sửa đổi quy tắc mặc định
Của Cloud Shell
gcloud alpha compute security-policies rules update 2147483647 --security-policy=customnetworkedge --action=deny --region=asia-southeast1
7. Tạo Chính sách bảo mật cho Network Edge bằng các quy tắc đã định cấu hình
Độ lệch UDP do người dùng xác định trước và được định cấu hình trong chính sách áo giáp của đám mây. Gói tin có "giá trị bù trừ" này sẽ vượt qua quy trình kiểm tra chính sách rồi gửi đến máy ảo phụ trợ. Trong ví dụ sau, chúng tôi sẽ xác định hai "phần bù" với các giá trị khác nhau.
Giá trị đầu tiên ngay sau tiêu đề UDP, khớp chính xác với 2 byte 0x1700
Giá trị thứ hai được bù trừ 8 byte của tiêu đề UDP, khớp chính xác với 4 byte 0x12345678
Giá trị được xác định trước ở trên sẽ chuyển sang chế độ xem bit gói UDP.
Của Cloud Shell
gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG1_AT_0 \ --base=udp --offset=8 --size=2 --mask=0xFF00 \ --region=asia-southeast1 gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG2_AT_8 \ --base=udp --offset=16 --size=4 --mask=0xFFFFFFFF \ --region=asia-southeast1 gcloud alpha compute security-policies rules create 1000 \ --security-policy=customnetworkedge \ --network-user-defined-fields="SIG1_AT_0;0x1700,SIG2_AT_8;0x12345678" \ --action=allow --region=asia-southeast1
8. Đính kèm chính sách bảo mật vào máy ảo mục tiêu
Cloud Shell đính kèm chính sách bảo mật vào máy ảo được bảo vệ.
gcloud alpha compute instances network-interfaces update targetvm \ --security-policy=customnetworkedge \ --security-policy-region=asia-southeast1 \ --network-interface=nic0 \ --zone=asia-southeast1-b
Trong phần Cloud Shell, bạn sẽ thấy phần securityPolicy được đính kèm. Ghi lại IP công khai cho mục đích kiểm thử sau.
gcloud alpha compute instances describe targetvm --zone=asia-southeast1-b networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: External NAT natIP: 35.240.148.100 networkTier: PREMIUM securityPolicy: https://www.googleapis.com/compute/alpha/projects/<project>/regions/asia-southeast1/securityPolicies/customnetworkedge
Trên Cloud Shell, hãy tách chính sách bảo mật khỏi máy ảo được bảo vệ.
gcloud alpha compute instances network-interfaces update targetvm \ --network-interface=nic0 \ --zone=asia-southeast1-b \ --security-policy=
9. Chuẩn bị tài nguyên kiểm thử.
Tạo mạng VPC thử nghiệm
Của Cloud Shell
gcloud compute networks create test --project=$prodproject --subnet-mode=custom
Tạo mạng con thử nghiệm
Của Cloud Shell
gcloud compute networks subnets create test-asia-southeast1 --project=$prodproject --range=10.0.1.0/24 --network=test --region=asia-southeast1
Tạo tường lửa
Trong Cloud Shell, bạn có thể tạo một quy tắc tường lửa để cho phép IAP kết nối với các thực thể máy ảo của bạn.
gcloud compute firewall-rules create test-iap-prod --network test --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Tạo máy ảo thử nghiệm
Của Cloud Shell
gcloud compute instances create test01 \ --zone=asia-southeast1-b \ --image-family=debian-11 \ --image-project=debian-cloud \ --network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=test-asia-southeast1 \ --shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring
10. Xác minh
Đăng nhập vào Bảng điều khiển VM và cài đặt trình tạo gói packit
.
sudo apt install packit
Theo thiết kế độ lệch UDP, hãy sử dụng gói để tạo gói UDP. Chúng ta mô phỏng một gói (-t udp) từ địa chỉ IP nguồn giao diện (-s ens4) (-s 10.0.1.2) với các cổng nguồn (-S 10000) đến địa chỉ IP đích targetVM (-d 35.240.148.100) với các cổng đích (-D 10000). Nội dung gói khớp với các giá trị (-p '0x 17 00 00 00 00 00 00 00 12 34 56 78'). Chúng tôi sẽ gửi (-c 4) gói.
sudo packit -m inject -t UDP -i ens4 -s 10.0.1.2 -d 35.240.148.100 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 4
Trong máy ảo mục tiêu, hãy chạy tcpdump để thu thập gói UDP.
sudo tcpdump port 10000 -v -n tcpdump: listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes 06:36:18.434106 IP (tos 0x0, ttl 128, id 17173, offset 0, flags [none], proto UDP (17), length 40) 35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12 06:36:19.433656 IP (tos 0x0, ttl 128, id 55641, offset 0, flags [none], proto UDP (17), length 40) 35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12 06:36:20.433935 IP (tos 0x0, ttl 128, id 27161, offset 0, flags [none], proto UDP (17), length 40) 35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12 06:36:21.434150 IP (tos 0x0, ttl 128, id 46782, offset 0, flags [none], proto UDP (17), length 40) 35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
Nếu thay đổi mẫu lưu lượng truy cập trong máy ảo kiểm thử, chúng tôi không thể thu thập bất kỳ gói nào trong máy ảo mục tiêu.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 33 33 00 00 00 00 00 00 12 34 56 78' -c 4
11. Telemetry
Mở Chỉ số đám mây, sử dụng MQL bên dưới để truy vấn dữ liệu đo từ xa của NetworkSercurityPolicy.
fetch networksecurity.googleapis.com/RegionalNetworkSecurityPolicy | metric 'networksecurity.googleapis.com/l3/external/packet_count' | filter (resource.policy_name == 'customnetworkedge') | align rate(1m) | every 1m | group_by [metric.blocked], [value_packet_count_mean: mean(value.packet_count)] | group_by 1m, [value_packet_count_mean_mean: mean(value_packet_count_mean)] | every 1m
Tạo lưu lượng truy cập khối lượng lớn bằng lệnh bù trừ so khớp.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
Tạo lưu lượng truy cập khối lượng cao bằng lệnh bù trừ không khớp.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 11 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
Phép đo từ xa được lọc theo policy_name và được nhóm theo Policy_name bị chặn. Đường màu xanh dương cho biết lưu lượng truy cập được cho phép theo các quy tắc chính sách. Đường màu xanh lục biểu thị lưu lượng truy cập bị chặn theo quy tắc chính sách.
12. Các bước dọn dẹp
Từ một vỏ đám mây trong thiết bị đầu cuối, hãy xoá các thành phần trong phòng thí nghiệm
gcloud compute instances delete targetvm --zone=asia-southeast1-b gcloud compute firewall-rules delete ca4nlb-udp10000 gcloud compute firewall-rules delete ca4nlb-iap-prod gcloud compute networks subnets delete ca4nlb-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete ca4nlb gcloud alpha compute security-policies delete customnetworkedge --region=asia-southeast1 gcloud alpha compute network-edge-security-services delete caedgepolicy --region=asia-southeast1 gcloud alpha compute security-policies delete ca_advanced_ddos --region=asia-southeast1 gcloud compute instances delete test01 --zone=asia-southeast1-b gcloud compute firewall-rules delete test-iap-prod gcloud compute networks subnets delete test-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete test
13. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình.
Nội dung đã đề cập
- Chính sách bảo mật của Cloud Armor với các quy tắc do khách hàng xác định