SIEM/Log Management [Phần 3] Triển khai Manager Node trong hệ thống SIEM trên service, có cluster (Opensearch + Wazuh Manager + Vector)

Mô hình triển khai:

1764050983160.png

Chú thích: Các node Management + Agent Management; Log pipeline + Load Blancing sẽ được gộp lại để giảm chi phí triển khai.


VMIP
Data0110.30.194.181
Data0210.30.194.182
Data0310.30.194.183
Dashboard10.30.194.184
Manager0110.30.194.185
Manager0210.30.194.186
Pipeline0110.30.194.187
Pipeline0210.30.194.188

Vai trò của Manager Node trong hệ thống:​

1. Vai trò của Wazuh Manager ("Bộ não" phân tích)​

Wazuh Manager là thành phần cốt lõi chịu trách nhiệm xử lý logic an ninh.
  • Thu thập dữ liệu từ Agent (Log Collection):
    • Nó mở cổng (thường là 1514/TCP) để Wazuh Agent gửi log về.
    • Nó quản lý việc kết nối, mã hóa và xác thực các Agent này.
  • Giải mã & Chuẩn hóa (Decoding):
    • Log gửi về thường lộn xộn (định dạng Syslog, EventLog, Apache log...). Wazuh Manager dùng Decoders để dịch chúng sang định dạng chuẩn JSON mà hệ thống hiểu được.
  • Ghi log cục bộ:
    • Manager ghi các raw log vào file cục bộ tại: /var/ossec/logs/archives/archives.json.

2. Vai trò của Vector ("Shipper" vận chuyển log)​

  • Đọc và Theo dõi Log (Tail & Read):
    • Vector đứng tại file /var/ossec/logs/alerts/alerts.json, ngay khi Wazuh Manager ghi một dòng log mới, Vector đọc ngay lập tức.
  • Bộ đệm (Buffering):
    • Nếu Data Node (OpenSearch) bị quá tải hoặc mất mạng, Vector sẽ giữ log lại trong bộ nhớ RAM hoặc đĩa (Disk Buffer).
    • Điều này giúp không bị mất log khi hệ thống lưu trữ gặp sự cố.
  • Chuyển đổi dữ liệu (Transform):
    • Vector có thể sửa đổi log trước khi gửi đi (ví dụ: đổi tên trường, xóa bớt thông tin rác).
  • Đẩy dữ liệu (Sink):
    • Vector đóng gói log và bắn sang Data Node (OpenSearch Indexer) qua giao thức HTTP với tốc độ cực cao.

Chi tiết triển khai:​

Để 2 Wazuh Manager cùng quản lý các agent và đảm bảo tính dự phòng (HA), phải cấu hình chúng theo mô hình Wazuh Cluster (1 Master - 1 Worker).
  • Node 1 (Master): Quản lý cơ sở dữ liệu khóa của Agent (client.keys), đồng bộ rule/conf xuống Worker, thu thập log từ agent.
  • Node 2 (Worker): Lấy dữ liệu khóa của Agent, thu thập log agent.
Nếu 1 trong 2 node sập thì node kia sẽ đảm nhiệm luôn nhiệm vụ của node bị sập.

Cài Wazuh Manager:

Cài các package cần thiết:

sudo apt-get install gnupg apt-transport-https
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && chmod 644 /usr/share/keyrings/wazuh.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
apt-get update
apt-get -y install wazuh-manager
apt-get -y install filebeat
Tải file config của filebeat:

Chỉnh cấu hình file /var/ossec/etc/ossec.conf để chỉ thu raw log chứ không wazuh manager sẽ trigger và biến thành các dạng alert log:

<alerts_log>no</alerts_log>
<logall>no</logall>
<logall_json>yes</logall_json>
File log nằm ở /var/ossec/logs/archives/archives.json
Khởi động Wazuh manager:

systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
Tạo key 32 ký tự cho các cluster node và lưu lại để cấu hình cluster:

openssl rand -hex 16
Cấu hình trên node Master:
Chỉnh lại cấu hình /var/ossec/etc/ossec.conf để cấu hình cluster:

<cluster>
<name>wazuh</name>
<node_name>master-node</node_name>
<node_type>master</node_type>
<key>c98b62a9b6169ac5f67dae55ae4a9088</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>10.30.194.185</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
  • Địa chỉ IP trong <node> là địa chỉ IP của node Master.
  • <key> là 32 ký tự tạo ở trên
Restart wazuh manager:

systemctl restart wazuh-manager
Cấu hình trên node Worker:
Chỉnh lại cấu hình /var/ossec/etc/ossec.conf để cấu hình cluster:

<cluster>
<name>wazuh</name>
<node_name>worker-node01</node_name>
<node_type>worker</node_type>
<key>c98b62a9b6169ac5f67dae55ae4a9088</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>10.30.194.185</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
Restart wazuh manager:

systemctl restart wazuh-manager
Kiểm tra 2 node thấy nhau chưa:

/var/ossec/bin/cluster_control -l
1764051566308.png

Cài Vector:

Cài Vector trên cả 2 node:
bash -c "$(curl -L https://setup.vector.dev)"
sudo apt-get install vector
Cấu hình file /etc/vector/vector.yaml để gửi file log của wazuh manager:
sources:
wazuh_logs:
type: file
include:
- "/var/ossec/logs/archives/archives.json"
ignore_older: 0

transforms:
parse_logs:
type: remap
inputs: ["wazuh_logs"]
source: |
. = parse_json!(string!(.message))
.index_name = "manager1"

sinks:
to_nginx_lb:
type: http
inputs: ["parse_logs"]
uri: "http://10.30.194.200:9000"
encoding:
codec: "json"
Phần source đọc file log raw thu được từ agent, phần sink gửi đến virtual ip của 2 node pipeline bằng http.
Thêm user vector vào group wazuh để đọc được log trong file:
sudo usermod -aG wazuh vector
Load config mới:
sudo systemctl enable vector
sudo systemctl start vector
 
Back
Top