Võ Đức Chính
Intern
Mô hình triển khai:
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.
| VM | IP |
| Data01 | 10.30.194.181 |
| Data02 | 10.30.194.182 |
| Data03 | 10.30.194.183 |
| Dashboard | 10.30.194.184 |
| Manager01 | 10.30.194.185 |
| Manager02 | 10.30.194.186 |
| Pipeline01 | 10.30.194.187 |
| Pipeline02 | 10.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.
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 |
| curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.12/tpl/wazuh/filebeat/filebeat.yml |
| <alerts_log>no</alerts_log> <logall>no</logall> <logall_json>yes</logall_json> |
Khởi động Wazuh manager:
| systemctl daemon-reload systemctl enable wazuh-manager systemctl start wazuh-manager |
| openssl rand -hex 16 |
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
| systemctl restart wazuh-manager |
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> |
| systemctl restart wazuh-manager |
| /var/ossec/bin/cluster_control -l |
Cài Vector:
Cài Vector trên cả 2 node:| bash -c "$(curl -L https://setup.vector.dev)" sudo apt-get install vector |
| 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" |
Thêm user vector vào group wazuh để đọc được log trong file:
| sudo usermod -aG wazuh vector |
| sudo systemctl enable vector sudo systemctl start vector |
Bài viết liên quan
Được quan tâm
Bài viết mới