Bối cảnh & Lý do: Sự hỗn loạn khi xử lý sự cố trong thực tế
Khi xảy ra sự cố bảo mật, mỗi giây trôi qua đều tạo lợi thế cho kẻ tấn công. Phần lớn các đội ngũ an ninh quy mô vừa và nhỏ đều ngập trong hàng loạt cảnh báo gây nhiễu (alert noise). Chỉ một cảnh báo tăng vọt từ firewall hay endpoint cũng làm bùng nổ vô số thông báo rời rạc trên Slack, Teams và hòm thư chung. Các analyst phải cuống cuồng sao chép – dán thủ công từng địa chỉ IP, tên miền và mã hash SHA-256 vào VirusTotal, AbuseIPDB hay ANY.RUN để tra cứu.
Lặp lại thao tác này cho 40 cảnh báo mỗi ca trực sẽ khiến analyst kiệt sức rất nhanh. Việc theo dõi sự cố qua bảng tính hoặc Jira tạo ra nhiều điểm mù, làm mất ngữ cảnh điều tra số (forensic context) và phá vỡ chuỗi bảo quản chứng cứ (chain of custody). Hậu quả là thời gian cô lập sự cố kéo dài từ vài phút lên đến nhiều giờ đồng hồ.
Một vụ tấn công SSH brute-force vào lúc 2 giờ sáng nhằm vào chính máy chủ jump host của tôi đã chứng minh rõ điều này. Hơn 14.000 lượt đăng nhập thất bại tràn ngập trong log trước khi có người kịp nhận biết. Quá trình phân loại (triage) thủ công dưới áp lực lớn chắc chắn sẽ thất bại. Một nền tảng ứng cứu sự cố an ninh chuyên dụng (SIRP) chính là giải pháp dứt điểm. Kết hợp TheHive để quản lý case với Cortex để tự động phân tích observable. Bộ đôi này vừa giữ trọn vẹn dữ liệu đo lường nhạy cảm trên phần cứng của bạn, vừa kích hoạt kiểm tra mối đe dọa qua nhiều engine chỉ với một cú nhấp chuột.
Cài đặt: Triển khai TheHive và Cortex qua Docker Compose
Docker Compose mang lại giải pháp triển khai gọn gàng nhất trên Ubuntu 22.04 hoặc Debian 12. Phương pháp này ngăn ngừa triệt để xung đột phụ thuộc giữa Cassandra, OpenSearch và môi trường Python runtime. Yêu cầu cấu hình máy chủ tối thiểu gồm 4 vCPU, 16 GB RAM và 50 GB ổ cứng SSD.
Bước 1: Chuẩn bị hệ thống và các điều kiện tiên quyết
Cập nhật các gói phần mềm cơ sở và nâng giới hạn bộ nhớ ảo của kernel. OpenSearch sẽ không thể khởi động nếu vm.max_map_count vẫn giữ giá trị mặc định của Linux:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git apt-transport-https ca-certificates gnupg lsb-release
# OpenSearch yeu cau toi thieu 262.144 vung anh xa bo nho (memory map areas)
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# Cai dat Docker Engine va plugin Compose
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
Bước 2: Chuẩn bị thư mục dự án và file cấu hình Compose
Tạo các thư mục riêng biệt cho persistent volume và tiến trình thực thi job của Cortex:
mkdir -p ~/thehive-cortex/{cortex-data,thehive-data,opensearch-data,cortex-jobs}
cd ~/thehive-cortex
# Dam bao quyen ghi cho container backend tim kiem theo UID (1000)
sudo chown -R 1000:1000 opensearch-data
Tạo file docker-compose.yml:
version: '3.8'
networks:
soc-net:
driver: bridge
services:
opensearch:
image: opensearchproject/opensearch:2.11.0
container_name: opensearch
environment:
- discovery.type=single-node
- plugins.security.disabled=true
- "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
volumes:
- ./opensearch-data:/usr/share/opensearch/data
networks:
- soc-net
restart: unless-stopped
cortex:
image: thehiveproject/cortex:3.1.8
container_name: cortex
depends_on:
- opensearch
environment:
- http.port=9001
- job.directory=/tmp/cortex-jobs
volumes:
- ./cortex-jobs:/tmp/cortex-jobs
- /var/run/docker.sock:/var/run/docker.sock
networks:
- soc-net
ports:
- "127.0.0.1:9001:9001"
restart: unless-stopped
thehive:
image: thehiveproject/thehive:5.2.5
container_name: thehive
depends_on:
- opensearch
- cortex
environment:
- http.port=9000
networks:
- soc-net
ports:
- "127.0.0.1:9000:9000"
restart: unless-stopped
Khởi chạy toàn bộ dịch vụ ở chế độ chạy ngầm:
docker compose up -d
docker compose ps
Cấu hình: Kết nối TheHive với Cortex và kích hoạt các Analyzer
Cả hai ứng dụng đều liên kết tới loopback cục bộ (127.0.0.1) để đảm bảo an toàn. Để truy cập giao diện web mà không phải mở cổng trực tiếp ra internet, hãy tạo SSH tunnel từ máy tính của bạn:
ssh -N -L 9000:127.0.0.1:9000 -L 9001:127.0.0.1:9001 user@<server-ip>
Bước 1: Khởi tạo Cortex và kích hoạt Analyzer
Truy cập http://localhost:9001 trên trình duyệt của bạn.
- Nhấp vào Update Database để khởi tạo chỉ mục ES/OpenSearch.
- Thiết lập tài khoản SuperAdmin với mật khẩu từ 16 ký tự trở lên.
- Chuyển tới Organizations và tạo một tổ chức có tên
SOC_Core. - Thêm một người dùng vào
SOC_Corevới vai tròorgadminđể quản lý các key của analyzer. - Thêm một tài khoản tự động hóa có tên
thehive-connector. Gán các quyềnread, analyze, nhấp Create API Key và lưu token này cẩn thận.
Đăng nhập bằng tài khoản orgadmin vừa tạo, truy cập Organization > Analyzers và tìm kiếm AbuseIPDB. Nhấp Enable, nhập API key miễn phí hoặc gói thương mại của bạn và đặt check_days thành 30.
Bước 2: Cấu hình TheHive kết nối với Cortex
Truy cập vào http://localhost:9000. Khởi tạo cấu trúc cơ sở dữ liệu khi có yêu cầu. Đăng nhập bằng thông tin xác thực mặc định ([email protected] / secret), sau đó đổi ngay mật khẩu tạm thời này.
Tiếp theo, tiến hành liên kết Cortex thông qua bảng điều khiển quản trị của TheHive:
- Chuyển tới mục Platform Management > Organizations và thiết lập đội SOC chính của bạn.
- Vào Cortex Connectors và chọn Add Cortex Server.
- Đặt URL endpoint thành
http://cortex:9001. Do các container cùng nằm trong mạng bridge nội bộ của Docker nên cơ chế phân giải tên máy chủ sẽ tự động hoạt động. - Dán API Key đã tạo cho tài khoản
thehive-connector. - Nhấp Test & Save. Biểu tượng kiểm tra trạng thái sẽ chuyển sang màu xanh lá cây.
Kiểm thử & Giám sát: Vận hành quy trình xử lý sự cố hoàn chỉnh
Kiểm tra toàn bộ pipeline qua một kịch bản phân loại thực tế.
Bước 1: Tạo Case và đính kèm Observable
- Trong TheHive, truy cập Cases > New Case.
- Nhập thông tin case: Title:
Suspicious Inbound SSH Brute-Force, Severity:Medium, TLP:Amber. - Mở case vừa tạo và nhấp vào tab Observables.
- Nhấp Add Observable, chọn loại
ipvà nhập một địa chỉ IP kiểm thử từ bên ngoài như198.51.100.24.
Bước 2: Kích hoạt Cortex Analyzer
Tích chọn ô bên cạnh observable IP mới, nhấp Actions > Run Analyzers và chọn AbuseIPDB_1_0.
Cortex sẽ khởi tạo một container tạm thời thông qua Docker socket, gửi truy vấn tới AbuseIPDB, phân tích JSON payload và trả kết quả phân loại (taxonomy) trực tiếp vào ngăn chi tiết của observable chỉ trong vòng chưa đầy 4 giây:
{
"status": "Success",
"observable": "198.51.100.24",
"taxonomy": [
{
"level": "malicious",
"namespace": "AbuseIPDB",
"predicate": "ConfidenceScore",
"value": "100%"
}
]
}
Bước 3: Kiểm tra trạng thái và giám sát dịch vụ
Đảm bảo các container vận hành ổn định bằng cách thường xuyên theo dõi mức sử dụng tài nguyên và nhật ký hàng đợi:
# Theo doi muc tieu thu CPU va RAM theo thoi gian thuc
docker stats --no-stream
# Xem truc tiep log ket noi va danh chi muc
docker logs -f thehive --tail 50
docker logs -f cortex --tail 50
# Kiem tra trang thai hoat dong cua cum OpenSearch
curl -s -X GET "http://localhost:9200/_cluster/health?pretty"
Đến đây, bạn đã làm chủ một hệ sinh thái ứng cứu sự cố hoàn toàn độc lập và khép kín. Bạn có thể dễ dàng tiếp nhận cảnh báo từ Wazuh, Suricata hay webhook Python, để Cortex tự động làm giàu thông tin tình báo ngầm và cung cấp ngữ cảnh chuẩn xác nhất giúp analyst nhanh chóng cô lập hiểm họa trước khi thiệt hại lan rộng.

