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 cho Cloud Armor!
Google Cloud Armor là giải pháp bảo mật mạng tối ưu cho doanh nghiệp của Google, cung cấp khả năng bảo vệ chống DDOS, thực thi quy tắc WAF và quản lý thích ứng trên 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 lỗ hổng bảo mật của ứng dụng web thuộc OWASP Top 10. Bộ quy tắc này 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 phổ biến nhất về ứng dụng web, bao gồm cả việc đưa tệp trên máy vào (lfi), đưa vào tệp từ xa (rfi), thực thi mã từ xa (rce) và nhiều vấn đề 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 thường gặp 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 thực thể và Trình cân bằng tải chung để hỗ trợ dịch vụ
- Cách định cấu hình các chính sách bảo mật của 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, tấn công giao thức và cố định phiên
- Cách xác thực rằng Cloud Armor giảm thiểu được 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 sẽ thấy hữu ích khi hoàn thành phần hướng dẫn về kết nối mạng trong GCP thông qua bài viết Kết nối mạng trong Google Cloud
- (Không bắt buộc) Hoàn thành phòng thí nghiệm Cloudnet20 Cloud Armor để tìm hiểu cách bảo vệ khối lượng công việc bằng tính năng chèn SQL, các quy tắc dựa trên IP và quy tắc dựa trên vị trí địa lý.
Cấu trúc liên kết của lớp học lập trình và trường hợp sử dụng
Hình 1 – Cấu trúc liên kết trong lớp học lập trình về các quy tắc WAF của Cloud Armor
Ứng dụng Juice Shop rất hữu ích cho việc đào tạo và nhận thức về bảo mật, vì ứng dụng này chứa các thực thể của từng lỗ hổng bảo mật trong số 10 lỗ hổng bảo mật Hàng đầu của OWASP theo thiết kế. Kẻ tấn công có thể khai thác dữ liệu này cho mục đích kiểm thử. Trong lớp học lập trình này, chúng ta sẽ dùng công cụ này để minh hoạ một số cuộc tấn công ứng dụng, sau đó bảo vệ ứng dụng bằng các quy tắc WAF của Cloud Armor. Trình cân bằng tải của Google Cloud sẽ hiển thị ứng dụng này. Trình cân bằng tải của Google Cloud sẽ áp dụng các quy tắc và chính sách bảo mật của Cloud Armor. Dịch vụ này sẽ được phân phát trên Internet công cộng, do đó có thể truy cập được từ hầu hết mọi nơi và được bảo vệ bằng các quy tắc tường lửa của Cloud Armor và VPC.
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại 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.
Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID
.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài 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í 300 USD.
Khởi động Cloud Shell
Mặc dù bạn 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 trong Đám mây.
Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:
Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.
Trước khi bắt đầu
Bên 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ả 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 lưới VPC
Tạo mạng lưới VPC
Của 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ạng con
Của 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 các quy tắc tường lửa VPC
Sau khi tạo VPC và mạng con, bây giờ bạn sẽ thiết lập một vài quy tắc về tường lửa. Quy tắc tường lửa đầu tiên sẽ được sử dụng để cho phép tất cả IP truy cập IP ngoài trên trang web của ứ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 kiểm tra tình trạng từ IP nguồn của các trình cân bằng tải.
Của 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 dành cho chương trình cơ sở để cho phép kiểm tra tình trạng trong phạm vi kiểm tra tình trạng của Google.
Của 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ử dụng 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
Dùng ứng dụng nguồn mở nổi tiếng OWASP Juice Shop để đóng vai trò là một ứng dụng dễ bị tấn công. Bạn cũng có thể 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ọ.
Của 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 thực thể
Tạo nhóm thực thể không được quản lý.
Của 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 thực thể GCE của Juice Shop vào nhóm thực thể không được quản lý.
Của 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 đã đặt tên thành cổng của ứng dụng Juice Shop.
Của 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, sau khi bạn đã tạo nhóm thực thể không được quản lý, bước tiếp theo là tạo quy trình kiểm tra tình trạng, dịch vụ phụ trợ, bản đồ URL, proxy mục tiêu và quy tắc chuyển tiếp.
Thiết lập thành phần Trình cân bằng tải của Cloud: kiểm tra tình trạng
Tạo yêu cầu kiểm tra tình trạng cho cổng dịch vụ của Juice Shop.
Của 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ợ.
Của 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ợ.
Của 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 trình cân bằng tải cho oud: ánh xạ URL
Tạo bản đồ URL để gửi đến phần phụ trợ.
Của 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 trình cân bằng tải cho oud: proxy mục tiêu
Tạo Proxy mục tiêu để truy cập bản đồ URL.
Của 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.
Của 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 trực tuyến
Của Cloud Shell
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
Của 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ể truy xuất phản hồi HTTP/1.1 404 Not found (Không tìm thấy HTTP/1.1 404).
Của Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP
Đầu ra
HTTP/1.1 200 OK <...>
Bạn cũng có thể sử dụng trình duyệt để xem Cửa hàng nước ép!
Giờ đây, chúng ta đã sẵn sàng khám phá các lỗ hổng bảo mật của Juice Shop và cách bảo vệ bằng bộ quy tắc WAF của Cloud Armor.
5. Chứng minh 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 áp dụng quy tắc WAF của Cloud Armor theo các bước súc tích.
Quan sát lỗ hổng bảo mật của LFI: truyền tải qua đường dẫn
Đưa tệp cục bộ vào là quá 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 dữ liệu đầu vào trong yêu cầu để có thể làm lộ dữ liệu nhạy cảm. Phần sau đây chỉ hiển thị việc truyền tải qua đường dẫn là có thể thực hiện được. Trong trình duyệt của bạn 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.
Của Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp
Đầu ra
HTTP/1.1 200 OK <...>
Ngoài ra, bạn cũng thấy rằng tính năng truyền tải qua đường dẫn cũng hoạt động:
Của Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
Đầu ra
HTTP/1.1 200 OK <...>
Quan sát lỗ hổng RCE
Quá trình 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ỉ giới hạn cho người dùng có đặc quyền. Sau đây là một quá trình thực thi lệnh ls đơn giản được truyền vào.
Của 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 để quan sát toàn bộ kết quả.
Quan sát quyền truy cập của một trình quét nổi tiếng
Cả ứng dụng quét mã nguồn mở và ứng dụng thương mại đều phục vụ nhiều mục đích, bao gồm cả việc quét tìm lỗ hổng bảo mật. Những công cụ này sử dụng tác nhân người dùng phổ biến 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 phổ biến:
Của Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
Đầu ra
HTTP/1.1 200 OK <...>
Quan sá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 từ người dùng để tạo tiêu đề trong phản hồi. Nếu ứng dụng không lọc đầu vào đúng cách, kẻ tấn công có thể đầu độc tham số đầu vào với trình tự %0d%0a (trình tự CRLF được sử dụng để phân tách các dòng khác nhau). Sau đó, phản hồi có thể được diễn giải là 2 phản hồi bởi bất kỳ trường hợp nào xảy ra việc phân tích cú pháp phản hồi, chẳng hạn như máy chủ proxy trung gian, có khả năng phân phát nội dung sai trong các yêu cầu tiếp theo. Chèn trình tự %0d%0a vào tham số đầu vào. Điều này có thể dẫn đến việc phân phát trang gây hiểu lầm.
Của 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 quá trình cố định phiên
Của 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:
Của 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 của Cloud Armor
Trên 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
Lưu ý rằng mức độ ưu tiên của quy tắc mặc định có giá trị bằng số là 2147483647
Trên 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 có thao tác từ chối, nên chúng tôi phải cho phép truy cập từ IP của bạn. Vui lòng tìm IP công cộng của bạn (curl, ip gói, whatismyip, v.v.).
Trên 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)
Trên 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 việc truyền tải qua đường dẫn để đưa vào tệp cục bộ.
Trên 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 Thực thi mã từ xa (rce)
Theo Bộ quy tắc cốt lõi OWASP ModSecurity, hãy áp dụng các quy tắc tìm rce, bao gồm cả tính năng chèn lệnh. Đã phát hiện và chặn các lệnh thông thường của hệ điều hành.
Trên 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 trình quét bảo mật
Áp dụng Bộ quy tắc cốt lõi OWASP ModSecurity để chặn các trình quét bảo mật phổ biến, ứng dụng viết tập lệnh HTTP và trình thu thập dữ liệu web.
Trên 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 bằng giao thức
Theo Bộ quy tắc cốt lõi OWASP ModSecurity, 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 Smugling.
Trên 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 bản sửa lỗi 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...
Trên 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ợ
Trên Cloud Shell:
gcloud compute backend-services update juice-shop-backend \ --security-policy block-with-modsec-crs \ --global
Có thể mất chút thời gian để quy tắc có hiệu lực (nhưng không quá 10 phút). Khi đã tự tin rằng đã đủ thời gian, hãy kiểm thử các lỗ hổng bảo mật đã chứng minh trước đó để xác nhận việc thực thi quy tắc WAF của Cloud Armor trong bước tiếp theo.
7. Quan sát biện pháp bảo vệ Cloud Armor bằng bộ quy tắc cốt lõi OWASP ModSecurity
Xác nhận rằng lỗ hổng bảo mật LFI đã được giảm thiểu
Của 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
Của Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
Đầu ra
HTTP/1.1 403 Forbidden <..>
Xác nhận khả năng phát hiện trình quét phổ biến
Của 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 Bộ quy tắc cốt lõi OWASP ModSecurity phiên bản 3.0.2, cuộc tấn công giao thức được giảm thiểu bằng
Của 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 các thao tác khắc phục phiên đã bị chặn
Của 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
Giờ đây, khi 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: số thấp hơn được đánh giá trước tiên 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 (đưa vào tệp cục bộ)
- Mức độ ưu tiên 9001 – Chặn RCE (thực thi mã/chèn lệnh từ xa)
- Mức độ ưu tiên 9002 – Đã phát hiện thấy máy quét dạng khối
- Mức độ ưu tiên 9003 – Chặn các cuộc tấn công giao thức như tách HTTP và nhập lậu HTTP
- Mức độ ưu tiên 9004 - Chặn các cuộc tấn công khắc phục phiên
- Mức độ ưu tiên 10000 – Cho phép IP của bạn truy cập vào Trang web
- Mặc định mức độ ưu tiên – Từ chối.
*Chú ý đến phần "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, tuy nhiên sẽ chặn mọi cuộc tấn công.
9. Quan sát nhật ký chính sách bảo mật của Cloud Armor
Trên trang Bảng điều khiển Cloud Armor, bạn có thể xem thông tin chi tiết về chính sách bảo mật, rồi nhấp vào thẻ Logs
, sau đó nhấp vào đường liên kết View policy logs
để chuyển đến trang Ghi nhật ký trên đám mây. Hệ thống 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, giá trị trường trùng khớp của chính sách bảo mật được thực thi và tìm hiểu sâu hơn về mã biểu thức được định cấu hình trước (hoặc mã nhận dạng chữ ký). Các ảnh chụp màn hình sau đây là ví dụ về nhật ký cho các chính sách bảo mật thực thi đượ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 máy quét
Nhật ký tấn công giao thức
Nhật ký khắc phục phiên
10. Vệ sinh phòng thí nghiệm
Dọn dẹp các tài nguyên sau khi bạn hoàn thành phòng thí nghiệm.
Chạy các lệnh sau để xoá chính sách bảo mật của Cloud Armor, Trình 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 của 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 của Cloud Armor
Thao tác xoá chính sách bảo mật sẽ tự động xoá các quy tắc liên quan.
gcloud -q compute security-policies delete block-with-modsec-crs
Xoá tài nguyên của trình cân bằng tải
Các tài nguyên Trình cân bằng tải cần xoá này bao gồm quy tắc chuyển tiếp, proxy http mục tiêu, bản đồ url, phần phụ trợ, kiểm tra tình trạng 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á thực thể
gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c
Xoá 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 cho Cloud Armor!
Nội dung đã đề cập
- Cách thiết lập nhóm thực thể và Trình cân bằng tải trên đám mây chung
- Cách định cấu hình các chính sách bảo mật của 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, tấn công giao thức và cố định phiên
- Cách xác thực rằng Cloud Armor giảm thiểu được một số cuộc tấn công thuộc nhóm 10 hàng đầu của OWASP qua nhật ký
Các bước tiếp theo
- Bảo vệ ứng dụng của bạn khỏi các lỗ hổng thuộc danh sách 10 lỗ hổng bảo mật hàng đầu của OWASP bằng các quy tắc WAF được thiết lập sẵn của Cloud Armor
- Tinh chỉnh các 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ữ cho quy tắc tuỳ chỉnh để biết biện pháp thực thi bảo mật cụ thể hơn.