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

119e13312f3cec25.jpeg

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

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

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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!

428c18eee6708c28.png

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.

d00e4102fc89e44f.png

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

983a6cab0cff940d.png

Nhật ký RCE

988a3a571f9d9d45.png

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

7ed661863ba27555.png

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

17ee3cbe0bd98939.png

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

80d1ddfd0fe982e1.png

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