SIEM/Log Management [SIEM/Log Management] Triển khai phần mềm Wazuh: Nền tảng SIEM + HIDS mã nguồn mở

1) Wazuh là gì? Triết lý và phạm vi tính năng

Wazuh là nền tảng bảo mật mã nguồn mở kết hợp hai lớp năng lực:
  • HIDS (Host-based Intrusion Detection System): giám sát endpoint (FIM, rootkit, SCA cấu hình, thu thập log hệ thống/ứng dụng).
  • SIEM nhẹ: phân tích, chuẩn hoá, lưu trữ và trực quan hoá sự kiện bảo mật; phát hiện lỗ hổng (Vulnerability Detection) nhờ dữ liệu gói phần mềm & CTI của Wazuh.
Triết lý: agent đa nền tảng thu thập & gửi sự kiện → Wazuh Server phân tích theo rule/decoder → đẩy kết quả sang Wazuh Indexer (dựa trên OpenSearch) để truy vấn & hiển thị trên Wazuh Dashboard. Với thiết bị không cài được agent (tường lửa/switch/router), Wazuh vẫn hỗ trợ agentless qua Syslog/SSH/API.

2) Kiến trúc & luồng dữ liệu

2.1 Bức tranh tổng thể

  • Wazuh Agent (Windows/Linux/macOS/Container) → gửi sự kiện (log, FIM, SCA, Syscollector) tới…
  • Wazuh Server/Manager: trái tim phân tích, gồm nhiều daemonnội bộ:
    • wazuh-remoted: cổng giao tiếp với agent, xác thực & nhận sự kiện.
    • wazuh-analysisd: máy phân tích rule/decoder, gán level, tạo alert.
    • wazuh-modulesd: quản lý các module (Vulnerability Detection, AWS/GCP/Azure, OSQuery, SCA…).
    • ossec-authd (enrollment): đăng ký agent và cấp khóa.
  • Wazuh Indexer: cụm OpenSearch đóng vai trò lưu trữ & tìm kiếm. Wazuh Dashboard hiển thị (dựa trên OpenSearch Dashboards).
Luồng dữ liệu cốt lõi
Agent → (TLS) → remoted → analysisd (decoder + rule) → sinh alert → ghi về Indexer → hiển thị trên Dashboard.

2.2 Các năng lực hạt nhân ở agent & server

  • FIM (File Integrity Monitoring): theo dõi thay đổi file/thư mục nhạy cảm.
  • SCA (Security Configuration Assessment): đối chiếu policy kiểm tra cấu hình hệ điều hành/dịch vụ.
  • Syscollector: kiểm kê phần mềm/gói, network, phần cứng — đầu vào cho Vulnerability Detection.
  • Vulnerability Detection: so sánh inventory với cơ sở tri thức CTI của Wazuh (tập hợp từ vendor OS & nguồn CVE uy tín), phản ánh thành danh sách lỗ hổng trên Dashboard.
  • Cloud/Container: tích hợp AWS/GCP/Azure; trên K8s có thể chạy agent trong pod/daemonset để gom log container & node.

2.3 Rule, Decoder, List — bộ ba phân tích của analysisd

  • Decoder (XML): tách cấu trúc từ dòng log (regex/parent-child decoder).
  • Rule (XML): điều kiện khớp (program, srcip, user…), gán level, gộp tần suất (frequency/timeframe), ignore/if_matched_sid, và bắn alert.
  • CDB lists: whitelist/blacklist (IP, process…), chèn vào rule qua tham chiếu.

2.4 Indexer & Dashboard: vì sao là OpenSearch?

Wazuh tiêu chuẩn hoá stack trên OpenSearch (fork từ Elasticsearch, giấy phép Apache 2.0) để đảm bảo 100% open-source. Triển khai single-node hoặc multi-node (HA), kết hợp chính sách vòng đời dữ liệu (ILM) & snapshot backup để tối ưu chi phí.

3) Khi nào nên dùng Wazuh? Ưu/nhược điểm & “reality check”

3.1 Điểm mạnh

  • Mã nguồn mở hoàn toàn: tránh lock-in, phù hợp lab → SME → doanh nghiệp cần tự chủ.
  • Một nền tảng – nhiều mảng: HIDS, SIEM nhẹ, Vulnerability Detection tích hợp CTI, SCA, FIM, Cloud.
  • Đa nền tảng & agentless: endpoint truyền thống lẫn thiết bị mạng qua Syslog/SSH/API.
  • Ecosystem & vận hành: dựa trên OpenSearch nên dễ mở rộng truy vấn, dashboard, snapshot S3/NFS, v.v.

3.2 Điểm yếu / Cần lưu ý

  • Độ phức tạp triển khai: nhiều thành phần (Server/Indexer/Dashboard/cert). Khuyến nghị tự động hoá bằng Docker/Helm.
  • Nhu cầu tài nguyên: indexer yêu cầu I/O và RAM đáng kể khi số agent & EPS tăng.
  • Tuning bắt buộc: rule mặc định nhiều → dễ false positive nếu không làm whitelist & correlation phù hợp.
  • Khác biệt môi trường cloud-managed: nếu bạn muốn dùng AWS Managed OpenSearch làm Indexer cần kiểm chứng khả năng tương thích/chính sách; cộng đồng có thảo luận nhưng không phải “plug-and-play” chính thức. (Khuyến nghị theo stack chính thức để được support tài liệu).

3.3 Khi nào Wazuh toả sáng?

  • Doanh nghiệp muốn SIEM + HIDS “all-in-one” mã nguồn mở, có khả năng tự vận hành.
  • Bài toán compliance + Vulnerability Detection tích hợp ngay trên dashboard.
  • Môi trường hybrid (VM + container + cloud) cần agent + agentless linh hoạt.

4) Triển khai (v4.11.0)

- Chuyển sang quyền root cập nhật các gói cài đặt docker và docker compose​

Sudo su –

sudo apt-get update

sudo apt-get install -y ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \

sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \

"deb [arch=$(dpkg --print-architecture) \

signed-by=/etc/apt/keyrings/docker.gpg] \

https://download.docker.com/linux/ubuntu \

$(lsb_release -cs) stable" | \

sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker $USER

newgrp docker

- Cài đặt package từ hệ thống về cấp quyền các file và chỉnh sửa file docker- compose​


git clone https://github.com/wazuh/wazuh-docker.git

cd wazuh-docker

git checkout v4.11.0

cd single-node

nano docker-compose.yml

version: '3.7'



services:

wazuh.manager:

image: wazuh/wazuh-manager:4.11.0

hostname: wazuh.manager

restart: always

ulimits:

memlock: { soft: -1, hard: -1 }

nofile: { soft: 655360, hard: 655360 }

ports:

- "1514:1514"

- "1515:1515"

- "514:514/udp"

- "55000:55000"

environment:

- INDEXER_URL=https://wazuh.indexer:9200

- INDEXER_USERNAME=admin

- INDEXER_PASSWORD=SecretPassword

- FILEBEAT_SSL_VERIFICATION_MODE=full

- SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/root-ca.pem

- SSL_CERTIFICATE=/etc/ssl/filebeat.pem

- SSL_KEY=/etc/ssl/filebeat.key

- API_USERNAME=wazuh-wui

- API_PASSWORD=MyS3cr37P450r.*-

volumes:

- wazuh_api_configuration:/var/ossec/api/configuration

- wazuh_etc:/var/ossec/etc

- wazuh_logs:/var/ossec/logs

- wazuh_queue:/var/ossec/queue

- wazuh_var_multigroups:/var/ossec/var/multigroups

- wazuh_integrations:/var/ossec/integrations

- wazuh_active_response:/var/ossec/active-response/bin

- wazuh_agentless:/var/ossec/agentless

- wazuh_wodles:/var/ossec/wodles

- filebeat_etc:/etc/filebeat

- filebeat_var:/var/lib/filebeat

# TLS cho Filebeat -> Indexer (bên trái PHẢI là file thật)

- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/etc/ssl/root-ca.pem:ro

- ./config/wazuh_indexer_ssl_certs/wazuh.manager.pem:/etc/ssl/filebeat.pem:ro

- ./config/wazuh_indexer_ssl_certs/wazuh.manager-key.pem:/etc/ssl/filebeat.key:ro

# (tuỳ chọn) mount ossec.conf

- ./config/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf:ro

depends_on:

- wazuh.indexer



wazuh.indexer:

image: wazuh/wazuh-indexer:4.11.0

hostname: wazuh.indexer

restart: always

ports:

- "9200:9200"

environment:

- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"

ulimits:

memlock: { soft: -1, hard: -1 }

nofile: { soft: 65536, hard: 65536 }

volumes:

- wazuh-indexer-data:/var/lib/wazuh-indexer

# Khớp chính xác opensearch.yml (certs ở /usr/share/wazuh-indexer/certs)

- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-indexer/certs/root-ca.pem:ro

- ./config/wazuh_indexer_ssl_certs/wazuh.indexer.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.pem:ro

- ./config/wazuh_indexer_ssl_certs/wazuh.indexer-key.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.key:ro

- ./config/wazuh_indexer_ssl_certs/admin.pem:/usr/share/wazuh-indexer/certs/admin.pem:ro

- ./config/wazuh_indexer_ssl_certs/admin-key.pem:/usr/share/wazuh-indexer/certs/admin-key.pem:ro

# Cấu hình OpenSearch

- ./config/wazuh_indexer/wazuh.indexer.yml:/usr/share/wazuh-indexer/opensearch.yml:ro

- ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/opensearch-security/internal_users.yml:ro



wazuh.dashboard:

image: wazuh/wazuh-dashboard:4.11.0

hostname: wazuh.dashboard

restart: always

ports:

- "443:5601"

environment:

- INDEXER_USERNAME=admin

- INDEXER_PASSWORD=SecretPassword

- WAZUH_API_URL=https://wazuh.manager

- DASHBOARD_USERNAME=kibanaserver

- DASHBOARD_PASSWORD=kibanaserver

- API_USERNAME=wazuh-wui

- API_PASSWORD=MyS3cr37P450r.*-

volumes:

- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard.pem:ro

- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard-key.pem:ro

- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem:ro

- ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml:ro

- ./config/wazuh_dashboard/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml:ro

- wazuh-dashboard-config:/usr/share/wazuh-dashboard/data/wazuh/config

- wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom

depends_on:

- wazuh.indexer

- wazuh.manager

links:

- wazuh.indexer:wazuh.indexer

- wazuh.manager:wazuh.manager



volumes:

wazuh_api_configuration:

wazuh_etc:

wazuh_logs:

wazuh_queue:

wazuh_var_multigroups:

wazuh_integrations:

wazuh_active_response:

wazuh_agentless:

wazuh_wodles:

filebeat_etc:

filebeat_var:

wazuh-indexer-data:

wazuh-dashboard-config:

wazuh-dashboard-custom:

mkdir -p ./config/wazuh_indexer_ssl_certs

mkdir -p ./config/wazuh_indexer

mkdir -p ./config/wazuh_dashboard

mkdir -p ./config/wazuh_cluster

chmod 644 ./config/wazuh_indexer_ssl_certs/*.pem ./config/wazuh_indexer_ssl_certs/*-key.pem


ls -l ./config/wazuh_indexer_ssl_certs/

chmod 644 ./config/wazuh_indexer_ssl_certs/*.pem 2>/dev/null || true

chmod 644 ./config/wazuh_indexer_ssl_certs/*-key.pem 2>/dev/null || true

- Chạy chương trình​


docker compose pull

docker compose up -d


- Đăng nhập dashboard https://ipmáy với​

  • Username: admin​

  • Password: SecretPassword​

1756279629531.png

1756279712434.png

- Tạo agent và giám sát chúng​

1756279794969.png

1756279821971.png

1756279838431.png

1756279852915.png
 
Back
Top