1. Giới thiệu
Xin chào! Chào mừng bạn đến với lớp học lập trình về các quy tắc WAF được định cấu hình sẵn của Cloud Armor!
Google Cloud Armor là giải pháp bảo mật mạng biên dành cho doanh nghiệp của Google, cung cấp khả năng bảo vệ chống tấn công từ chối dịch vụ (DDoS), thực thi quy tắc tường lửa cho ứng dụng web (WAF) và khả năng quản lý thích ứng ở quy mô lớn.
Cloud Armor đã mở rộng các bộ quy tắc WAF được định cấu hình sẵn để giảm thiểu các lỗ hổng bảo mật ứng dụng web OWASP Top 10. Các bộ quy tắc dựa trên bộ quy tắc cốt lõi OWASP Modsecurity phiên bản 3.0.2 để bảo vệ khỏi một số rủi ro bảo mật ứng dụng web phổ biến nhất, bao gồm cả việc đưa tệp cục bộ (lfi), đưa tệp từ xa (rfi), thực thi mã từ xa (rce) và nhiều rủi ro khác.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách giảm thiểu một số lỗ hổng bảo mật phổ biến bằng cách sử dụng các quy tắc WAF của Google Cloud Armor.
Kiến thức bạn sẽ học được
- Cách thiết lập Nhóm phiên bản và Trình cân bằng tải toàn cầu để hỗ trợ một dịch vụ
- Cách định cấu hình chính sách bảo mật Cloud Armor bằng các quy tắc WAF được định cấu hình sẵn để bảo vệ khỏi lfi, rce, trình quét, các cuộc tấn công giao thức và việc cố định phiên
- Cách xác thực rằng Cloud Armor đã giảm thiểu một cuộc tấn công bằng cách quan sát nhật ký.
Bạn cần có
- Kiến thức cơ bản về Google Compute Engine ( lớp học lập trình)
- Kiến thức cơ bản về mạng và TCP/IP
- Kiến thức cơ bản về dòng lệnh Unix/Linux
- Bạn nên hoàn tất một chuyến tham quan về mạng trong GCP bằng Kết nối mạng trong Google Cloud
- (Không bắt buộc) Hoàn thành bài tập Cloudnet20 Cloud Armor để tìm hiểu cách bảo vệ các tải bằng quy tắc dựa trên SQL injection, IP và vị trí địa lý.
Cấu trúc liên kết và trường hợp sử dụng của lớp học lập trình

Hình 1 – Cấu trúc liên kết lớp học lập trình về các quy tắc WAF của Cloud Armor
Ứng dụng OWASP Juice Shop rất hữu ích cho việc đào tạo và nâng cao nhận thức về bảo mật, vì ứng dụng này chứa các trường hợp của từng lỗ hổng bảo mật trong OWASP Top 10 (theo thiết kế). Kẻ tấn công có thể khai thác lỗ hổng này cho mục đích kiểm thử. Trong lớp học lập trình này, chúng ta sẽ sử dụng công cụ này để minh hoạ một số cuộc tấn công vào ứng dụng, sau đó bảo vệ ứng dụng bằng các quy tắc WAF của Cloud Armor. Ứng dụng này sẽ được hỗ trợ bởi một Trình cân bằng tải của Google Cloud, trong đó chính sách và quy tắc bảo mật Cloud Armor sẽ được áp dụng. Dịch vụ này sẽ được phân phát trên Internet công cộng, do đó có thể truy cập từ hầu hết mọi nơi và được bảo vệ bằng Cloud Armor và các quy tắc tường lửa VPC.
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.
Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn chỉ cần một trình duyệt là có thể thực hiện mọi thao tác trong phòng thí nghiệm này.
Trước khi bắt đầu
Trong Cloud Shell, hãy đảm bảo rằng bạn đã thiết lập mã dự án
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Cho phép API
Bật tất cả các dịch vụ cần thiết
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Tạo mạng VPC
Tạo mạng VPC
Từ Cloud Shell
gcloud compute networks create ca-lab-vpc --subnet-mode custom
Đầu ra
Created NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 ca-lab-vpc CUSTOM REGIONAL
Tạo một mạng con
Từ Cloud Shell
gcloud compute networks subnets create ca-lab-subnet \
--network ca-lab-vpc --range 10.0.0.0/24 --region us-central1
Đầu ra
Created NAME REGION NETWORK RANGE ca-lab-subnet us-central1 ca-lab-vpc 10.0.0.0/24
Tạo quy tắc tường lửa VPC
Sau khi tạo VPC và mạng con, giờ đây, bạn sẽ thiết lập một số quy tắc tường lửa. Quy tắc tường lửa đầu tiên sẽ được dùng để cho phép tất cả các IP truy cập vào IP ngoài của trang web ứng dụng kiểm thử trên cổng 3000. Quy tắc tường lửa thứ hai sẽ được dùng để cho phép các quy trình kiểm tra tình trạng từ IP nguồn của bộ cân bằng tải.
Từ Cloud Shell
gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc
Đầu ra
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-js-site ca-lab-vpc INGRESS 1000 tcp:3000 False
Tạo các quy tắc tường lửa để cho phép kiểm tra tình trạng từ các dải kiểm tra tình trạng của Google.
Từ Cloud Shell
gcloud compute firewall-rules create allow-health-check \
--network=ca-lab-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-healthcheck \
--rules=tcp
Đầu ra
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-health-check ca-lab-vpc INGRESS 1000 tcp False
4. Thiết lập ứng dụng kiểm thử
Bước tiếp theo là tạo ứng dụng kiểm thử, trong trường hợp này là máy chủ web OWASP Juice Shop.
Khi tạo phiên bản điện toán, chúng ta sẽ sử dụng một hình ảnh vùng chứa để đảm bảo máy chủ có các dịch vụ phù hợp. Máy chủ này sẽ được triển khai trong us-central1-c và sẽ có một thẻ mạng cho phép kiểm tra tình trạng.
Tạo ứng dụng OWASP Juice Shop
Sử dụng ứng dụng OWASP Juice Shop nguồn mở nổi tiếng để làm ứng dụng dễ bị tấn công. Bạn cũng có thể sử dụng ứng dụng này để thực hiện các thử thách bảo mật OWASP thông qua trang web của họ.
Từ Cloud Shell
gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
--network ca-lab-vpc \
--subnet ca-lab-subnet \
--private-network-ip=10.0.0.3 \
--machine-type n1-standard-2 \
--zone us-central1-c \
--tags allow-healthcheck
Đầu ra
NAME ZONE MACHINE_TYPE PREEMPTIBLE owasp-juice-shop-app us-central1-c n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 <public IP> RUNNING
Thiết lập thành phần trình cân bằng tải trên đám mây: nhóm phiên bản
Tạo nhóm phiên bản không được quản lý.
Từ Cloud Shell
gcloud compute instance-groups unmanaged create juice-shop-group \
--zone=us-central1-c
Đầu ra
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES juice-shop-group us-central1-c zone 0
Thêm phiên bản Juice Shop GCE vào nhóm phiên bản không được quản lý.
Từ Cloud Shell
gcloud compute instance-groups unmanaged add-instances juice-shop-group \
--zone=us-central1-c \
--instances=owasp-juice-shop-app
Đầu ra
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
Đặt cổng có tên thành cổng của ứng dụng Juice Shop.
Từ Cloud Shell
gcloud compute instance-groups unmanaged set-named-ports \ juice-shop-group \ --named-ports=http:3000 \ --zone=us-central1-c
Đầu ra
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
Giờ đây, khi bạn đã tạo nhóm phiên bản không được quản lý, bước tiếp theo là tạo một quy tắc chuyển tiếp, đích đến proxy, bản đồ URL, dịch vụ phụ trợ và quy trình kiểm tra tình trạng.
Thiết lập thành phần trình cân bằng tải trên đám mây: kiểm tra tình trạng
Tạo quy trình kiểm tra tình trạng cho cổng dịch vụ Juice Shop.
Từ Cloud Shell
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
Đầu ra
Created NAME PROTOCOL tcp-port-3000 TCP
Thiết lập thành phần trình cân bằng tải trên đám mây: dịch vụ phụ trợ
Tạo các tham số dịch vụ phụ trợ.
Từ Cloud Shell
gcloud compute backend-services create juice-shop-backend \
--protocol HTTP \
--port-name http \
--health-checks tcp-port-3000 \
--enable-logging \
--global
Đầu ra
NAME BACKENDS PROTOCOL juice-shop-backend HTTP
Thêm nhóm thực thể Juice Shop vào dịch vụ phụ trợ.
Từ Cloud Shell
gcloud compute backend-services add-backend juice-shop-backend \
--instance-group=juice-shop-group \
--instance-group-zone=us-central1-c \
--global
Đầu ra
Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].
Thiết lập thành phần Bộ cân bằng tải Cloud: Bản đồ URL
Tạo bản đồ URL để gửi đến phần phụ trợ.
Từ Cloud Shell
gcloud compute url-maps create juice-shop-loadbalancer \
--default-service juice-shop-backend
Đầu ra
NAME DEFAULT_SERVICE juice-shop-loadbalancer backendServices/juice-shop-backend
Thiết lập thành phần bộ cân bằng tải Cloud: proxy mục tiêu
Tạo Target Proxy để đặt trước bản đồ URL.
Từ Cloud Shell
gcloud compute target-http-proxies create juice-shop-proxy \
--url-map juice-shop-loadbalancer
Đầu ra
NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer
Thiết lập thành phần trình cân bằng tải trên đám mây: quy tắc chuyển tiếp
Tạo quy tắc chuyển tiếp cho Trình cân bằng tải.
Từ Cloud Shell
gcloud compute forwarding-rules create juice-shop-rule \
--global \
--target-http-proxy=juice-shop-proxy \
--ports=80
Đầu ra
Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].
Xác minh rằng dịch vụ Juice Shop đang hoạt động
Từ Cloud Shell
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
Từ Cloud Shell
echo $PUBLIC_SVC_IP
Đầu ra
<public VIP of service>
Đợi vài phút trước khi tiếp tục, nếu không bạn có thể nhận được phản hồi HTTP/1.1 404 Not Found.
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP
Đầu ra
HTTP/1.1 200 OK <...>
Bạn cũng có thể truy cập vào trình duyệt để xem Juice Shop!

Giờ đây, chúng ta đã sẵn sàng khám phá các lỗ hổng của Juice Shop và cách bảo vệ trước các lỗ hổng đó bằng các bộ quy tắc WAF của Cloud Armor.
5. Minh hoạ các lỗ hổng đã biết
Để tiết kiệm thời gian, chúng tôi sẽ minh hoạ các trạng thái trước và sau khi các quy tắc WAF của Cloud Armor được truyền tải trong các bước cô đọng.
Quan sát lỗ hổng LFI: path traversal
Local File Inclusion (LFI) là quy trình quan sát các tệp có trên máy chủ bằng cách khai thác việc thiếu xác thực đầu vào trong yêu cầu để có khả năng làm lộ dữ liệu nhạy cảm. Sau đây chỉ đơn giản cho thấy có thể thực hiện thao tác duyệt đường dẫn. Trong trình duyệt hoặc bằng curl, hãy quan sát một đường dẫn hiện có do ứng dụng phân phát.
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp
Đầu ra
HTTP/1.1 200 OK <...>
Ngoài ra, hãy quan sát xem đường dẫn truyền tải cũng hoạt động:
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
Đầu ra
HTTP/1.1 200 OK <...>
Quan sát lỗ hổng RCE
Thực thi mã từ xa bao gồm nhiều tình huống chèn lệnh UNIX và Windows, cho phép kẻ tấn công thực thi các lệnh hệ điều hành thường chỉ dành cho người dùng có đặc quyền. Sau đây là một ví dụ đơn giản về lệnh ls được truyền vào.
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
Đầu ra
HTTP/1.1 200 OK <...>
Bạn có thể xoá các cờ curl để xem toàn bộ đầu ra.
Theo dõi quyền truy cập của một trình quét nổi tiếng
Cả ứng dụng quét thương mại và ứng dụng quét nguồn mở cho nhiều mục đích, bao gồm cả quét tìm lỗ hổng. Các công cụ này sử dụng User-Agent và các tiêu đề khác. Quan sát curl hoạt động với một Tiêu đề tác nhân người dùng nổi tiếng:
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
Đầu ra
HTTP/1.1 200 OK <...>
Quan sát một cuộc tấn công giao thức: Phân tách HTTP
Một số ứng dụng web sử dụng thông tin đầu vào của người dùng để tạo tiêu đề trong các phản hồi. Nếu ứng dụng không lọc dữ liệu đầu vào đúng cách, kẻ tấn công có thể làm hỏng tham số đầu vào bằng chuỗi %0d%0a (chuỗi CRLF dùng để phân tách các dòng khác nhau). Sau đó, mọi thứ phân tích cú pháp phản hồi này (chẳng hạn như một máy chủ proxy trung gian) đều có thể diễn giải phản hồi này thành hai phản hồi, có khả năng phân phát nội dung sai trong các yêu cầu tiếp theo. Chèn chuỗi %0d%0a vào tham số đầu vào. Điều này có thể dẫn đến việc phân phát một trang gây hiểu lầm.
Từ Cloud Shell
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
Đầu ra
HTTP/1.1 200 OK <...>
Quan sát việc cố định phiên
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X
Đầu ra
HTTP/1.1 200 OK <...>
6. Xác định các quy tắc WAF của Cloud Armor
Liệt kê các quy tắc WAF được định cấu hình sẵn:
Từ Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets
Đầu ra
EXPRESSION_SET
Sqli-canary
RULE_ID
owasp-crs-v030001-id942110-sqli
owasp-crs-v030001-id942120-sqli
<...>
Tạo chính sách bảo mật Cloud Armor
Trong Cloud Shell:
gcloud compute security-policies create block-with-modsec-crs \
--description "Block with OWASP ModSecurity CRS"
Cập nhật quy tắc mặc định của chính sách bảo mật
Xin lưu ý rằng mức độ ưu tiên mặc định của quy tắc có giá trị bằng số là 2147483647
Trong Cloud Shell:
gcloud compute security-policies rules update 2147483647 \
--security-policy block-with-modsec-crs \
--action "deny-403"
Vì quy tắc mặc định được định cấu hình với hành động từ chối, nên chúng ta phải cho phép truy cập từ IP của bạn. Vui lòng tìm địa chỉ IP công khai của bạn (curl, ipmonkey, whatismyip, v.v.).
Trong Cloud Shell:
MY_IP=$(curl ifconfig.me)
Thêm quy tắc đầu tiên để cho phép truy cập từ IP của bạn (CHÈN IP CỦA BẠN BÊN DƯỚI)
Trong Cloud Shell:
gcloud compute security-policies rules create 10000 \
--security-policy block-with-modsec-crs \
--description "allow traffic from my IP" \
--src-ip-ranges "$MY_IP/32" \
--action "allow"
Cập nhật chính sách bảo mật để chặn các cuộc tấn công LFI
Áp dụng Bộ quy tắc cốt lõi OWASP ModSecurity để ngăn chặn path traversal đối với các nội dung bao gồm tệp cục bộ.
Trong Cloud Shell:
gcloud compute security-policies rules create 9000 \
--security-policy block-with-modsec-crs \
--description "block local file inclusion" \
--expression "evaluatePreconfiguredExpr('lfi-stable')" \
--action deny-403
Cập nhật chính sách bảo mật để chặn việc Thực thi mã từ xa (rce)
Theo Bộ quy tắc cốt lõi ModSecurity của OWASP, hãy áp dụng các quy tắc tìm kiếm rce, bao gồm cả lệnh chèn. Các lệnh hệ điều hành thông thường sẽ bị phát hiện và chặn.
Trong Cloud Shell:
gcloud compute security-policies rules create 9001 \
--security-policy block-with-modsec-crs \
--description "block rce attacks" \
--expression "evaluatePreconfiguredExpr('rce-stable')" \
--action deny-403
Cập nhật chính sách bảo mật để chặn các trình quét bảo mật
Áp dụng Bộ quy tắc cốt lõi ModSecurity của OWASP để chặn các trình quét bảo mật, ứng dụng HTTP kịch bản và trình thu thập thông tin trên web đã biết.
Trong Cloud Shell:
gcloud compute security-policies rules create 9002 \
--security-policy block-with-modsec-crs \
--description "block scanners" \
--expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
--action deny-403
Cập nhật chính sách bảo mật để chặn các cuộc tấn công giao thức
Theo Bộ quy tắc cốt lõi ModSecurity của OWASP, hãy áp dụng các quy tắc tìm ký tự Carriage Return (CR) %0d và Linefeed (LF) %0a cũng như các loại tấn công giao thức khác như HTTP Request Smuggling.
Trong Cloud Shell:
gcloud compute security-policies rules create 9003 \
--security-policy block-with-modsec-crs \
--description "block protocol attacks" \
--expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
--action deny-403
Cập nhật chính sách bảo mật để chặn hành vi cố định phiên
Theo Bộ quy tắc cốt lõi ModSecurity của OWASP, hãy áp dụng các quy tắc...
Trong Cloud Shell:
gcloud compute security-policies rules create 9004 \
--security-policy block-with-modsec-crs \
--description "block session fixation attacks" \
--expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
--action deny-403
Đính kèm chính sách bảo mật vào dịch vụ phụ trợ
Trong Cloud Shell:
gcloud compute backend-services update juice-shop-backend \
--security-policy block-with-modsec-crs \
--global
Các quy tắc có thể mất một khoảng thời gian để có hiệu lực (nhưng không quá 10 phút). Sau khi chắc chắn rằng đã đủ thời gian, hãy kiểm thử các lỗ hổng đã được minh hoạ trước đó để xác nhận việc thực thi quy tắc WAF của Cloud Armor ở bước tiếp theo.
7. Quan sát khả năng bảo vệ của Cloud Armor bằng Bộ quy tắc cốt lõi ModSecurity của OWASP
Xác nhận rằng lỗ hổng LFI đã được giảm thiểu
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/?a=../
Đầu ra
HTTP/1.1 403 Forbidden <...>
Xác nhận rằng cuộc tấn công RCE đã được giảm thiểu
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
Đầu ra
HTTP/1.1 403 Forbidden <..>
Xác nhận phát hiện máy quét đã biết
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
Đầu ra
HTTP/1.1 403 Forbidden <..>
Xác nhận rằng cuộc tấn công giao thức đã được giảm thiểu
Theo OWASP ModSecurity Core Rule Set phiên bản 3.0.2, cuộc tấn công giao thức sẽ được giảm thiểu bằng cách
Từ Cloud Shell
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
Đầu ra
HTTP/1.1 403 Forbidden <..>
Xác nhận rằng các nỗ lực cố định phiên đã bị chặn
Từ Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a
Đầu ra
HTTP/1.1 403 Forbidden <..>
8. Xem xét các quy tắc bảo mật của Cloud Armor
Bây giờ chúng ta đã tạo chính sách bảo mật, hãy xem chính xác những quy tắc nào đã được định cấu hình.

Các quy tắc được đánh giá theo mức độ ưu tiên: các số thấp hơn sẽ được đánh giá trước và sau khi được kích hoạt, quá trình xử lý sẽ không tiếp tục đối với các quy tắc có giá trị ưu tiên cao hơn.
- Mức độ ưu tiên 9000 – Chặn LFI (bao gồm tệp cục bộ)
- Mức độ ưu tiên 9001 – Chặn RCE (thực thi mã từ xa/chèn lệnh)
- Mức độ ưu tiên 9002 – Đã phát hiện thấy thiết bị quét chặn
- Mức độ ưu tiên 9003 – Chặn các cuộc tấn công theo giao thức như phân tách HTTP và xâm nhập HTTP
- Mức độ ưu tiên 9004 – Ngăn chặn các cuộc tấn công cố định phiên
- Mức độ ưu tiên 10000 – Cho phép địa chỉ IP của bạn truy cập vào Trang web
- Mức độ ưu tiên mặc định – Từ chối.
*Lưu ý rằng quy tắc "cho phép IP của bạn" được định cấu hình với số ưu tiên cao nhất để cho phép truy cập vào trang web, nhưng chặn mọi cuộc tấn công.
9. Theo dõi nhật ký chính sách bảo mật Cloud Armor
Trên trang Cloud Armor Console, bạn có thể xem thông tin chi tiết về chính sách bảo mật và nhấp vào thẻ Logs, sau đó nhấp vào đường liên kết View policy logs để được chuyển đến trang Cloud Logging. Công cụ này sẽ tự động lọc dựa trên chính sách bảo mật mà bạn quan tâm, ví dụ: resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). Quan sát mã phản hồi lỗi 403 và mở rộng thông tin chi tiết về nhật ký để quan sát tên của chính sách bảo mật được thực thi, giá trị trường khớp và xa hơn nữa là mã nhận dạng biểu thức được định cấu hình sẵn (hoặc mã nhận dạng chữ ký). Các ảnh chụp màn hình sau đây cho thấy ví dụ về nhật ký cho các chính sách bảo mật bắt buộc được định cấu hình trong lớp học lập trình này.
Nhật ký LFI

Nhật ký RCE

Nhật ký phát hiện trình quét

Nhật ký tấn công giao thức

Nhật ký cố định phiên

10. Làm sạch phòng thí nghiệm
Dọn dẹp các tài nguyên sau khi bạn hoàn thành bài thực hành.
Chạy các lệnh này để xoá chính sách bảo mật Cloud Armor, Bộ cân bằng tải, các phiên bản, quy tắc tường lửa và mạng VPC.
Xoá chính sách bảo mật Cloud Armor khỏi dịch vụ phụ trợ
gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global
Xoá chính sách bảo mật Cloud Armor
Khi bạn xoá chính sách bảo mật, các quy tắc liên quan cũng sẽ tự động bị xoá.
gcloud -q compute security-policies delete block-with-modsec-crs
Xoá các tài nguyên của bộ cân bằng tải
Các tài nguyên Load Balancer cần xoá bao gồm quy tắc chuyển tiếp, target-http-proxies, url-maps, backend, health-checks và nhóm phiên bản.
gcloud -q compute forwarding-rules delete juice-shop-rule --global
gcloud -q compute target-http-proxies delete juice-shop-proxy
gcloud -q compute url-maps delete juice-shop-loadbalancer
gcloud -q compute backend-services delete juice-shop-backend \
--global
gcloud -q compute health-checks delete tcp-port-3000
gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c
Xoá phiên bản
gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c
Xoá các quy tắc tường lửa, mạng con và VPC
gcloud -q compute firewall-rules delete allow-health-check gcloud -q compute firewall-rules delete allow-js-site gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1 gcloud -q compute networks delete ca-lab-vpc
11. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình về các quy tắc WAF được định cấu hình sẵn của Cloud Armor!
Nội dung đã đề cập
- Cách thiết lập một nhóm phiên bản và một Cloud Load Balancer toàn cầu
- Cách định cấu hình chính sách bảo mật Cloud Armor bằng các quy tắc WAF được định cấu hình sẵn để bảo vệ khỏi lfi, rce, trình quét, các cuộc tấn công giao thức và việc cố định phiên
- Cách xác thực rằng Cloud Armor đã giảm thiểu một số cuộc tấn công trong danh sách 10 mối đe doạ hàng đầu của OWASP thông qua nhật ký
Các bước tiếp theo
- Bảo vệ ứng dụng của bạn khỏi 10 lỗ hổng bảo mật hàng đầu của OWASP bằng các quy tắc WAF được định cấu hình sẵn của Cloud Armor
- Điều chỉnh quy tắc dựa trên mức độ nhạy cảm
- Sử dụng tài liệu tham khảo về ngôn ngữ quy tắc tuỳ chỉnh để thực thi bảo mật cụ thể hơn.