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

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

119e13312f3cec25.jpeg

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

  1. Đă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.

96a9c957bc475304.pngs

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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!

428c18eee6708c28.pngS

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.

d00e4102fc89e44f.png

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

983a6cab0cff940d.pngS

Nhật ký RCE

988a3a571f9d9d45.pngS

Nhật ký phát hiện máy quét

7ed661863ba27555.pngS

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

17ee3cbe0bd98939.pngS

Nhật ký khắc phục phiên

80d1ddfd0fe982e1.png.

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