Lê Gia Hoàng Thiện
Intern
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.
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).
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


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




Bài viết liên quan
Bài viết mới