Quick start: Dựng Wazuh Server chạy ngay sau 5 phút
Cần test lab gấp hoặc bảo vệ vài máy chủ nội bộ? Script all-in-one từ hãng là đường tắt nhanh nhất. Script tự kéo OpenSearch (Wazuh Indexer), Wazuh Server và Dashboard về máy. Bạn không cần ngồi chỉnh tay từng file YAML dễ lỗi.
Phần cứng tối thiểu cho CentOS Stream 9: 4 vCPU và 8GB RAM. OpenSearch ăn RAM khá bạo, dưới mức này dịch vụ rất dễ crash giữa chừng.
# 1. Cập nhật hệ thống và cài curl
sudo dnf update -y && sudo dnf install -y curl tar
# 2. Tải script all-in-one chính thức
curl -sO https://packages.wazuh.com/4.8/wazuh-install.sh
# 3. Chạy cài đặt tự động toàn bộ components
sudo bash ./wazuh-install.sh -a
Quá trình kéo và dựng mất tầm 4-6 phút. Cài xong, terminal sẽ nhả thông tin đăng nhập dashboard. User mặc định là admin kèm một password sinh ngẫu nhiên. Trích xuất và lưu ngay mật khẩu này ra ngoài:
# Xem lại mật khẩu được tạo ngẫu nhiên
sudo tar -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O
Giờ hãy mở trình duyệt, gõ https://<IP_SERVER>. Bạn bỏ qua cảnh báo SSL tự ký là vào thẳng WebUI trung tâm của Wazuh.
Kiến trúc hệ thống và các bước cấu hình chuẩn chỉ
Hồi CentOS 8 EOL, team mình phải dọn gấp 5 server production sang Rocky Linux vỏn vẹn trong 7 ngày. Bài học đắt giá nhất: cài lại OS chỉ mất nửa buổi. Nhưng mù log bảo mật và không biết server có dính botnet rà port lúc chuyển giao hay không mới thật sự thót tim. Kể từ đợt đó, sau khi dựng CentOS Stream 9 hay bất kỳ distro họ RHEL nào, dịch vụ đầu tiên mình bật sau OpenSSH luôn là Wazuh.
1. Ba trụ cột của hệ thống Wazuh
- Wazuh Indexer: Bản fork từ OpenSearch. Nhiệm vụ chính: lưu trữ, đánh chỉ mục và truy vấn hàng triệu dòng log mỗi giây.
- Wazuh Server: Bộ não phân tích. Thành phần này hứng log từ Agent, so khớp với bộ luật (decoders & rules), soi toàn vẹn file (FIM) và kích hoạt đòn chặn tức thì (Active Response).
- Wazuh Dashboard: Giao diện WebUI trực quan hóa các cảnh báo CVE, biểu đồ MITRE ATT&CK và báo cáo tuân thủ PCI-DSS hay ISO 27001.
2. Mở cổng Firewalld trên CentOS Stream 9
CentOS Stream 9 khóa sạch cổng ngoài trừ SSH. Để cụm máy chủ nói chuyện được với nhau, bạn phải gõ lệnh mở đúng 3 port sau:
# Port 1514 (TCP): Nhận log từ Agent gửi về
# Port 1515 (TCP): Cấp phát key và đăng ký Agent mới
# Port 443 (TCP): Truy cập Wazuh Dashboard qua web
sudo firewall-cmd --permanent --add-port=1514/tcp
sudo firewall-cmd --permanent --add-port=1515/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
3. Cài đặt Wazuh Agent lên máy trạm cần giám sát
Chuyển sang máy chủ CentOS/RHEL mục tiêu. Bạn add kho repo rồi kéo gói wazuh-agent về:
# Thêm GPG key và repo Wazuh
sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat <<EOF | sudo tee /etc/yum.repos.d/wazuh.repo
[wazuh]
name=Wazuh repository
baseurl=https://packages.wazuh.com/4.x/yum/
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
EOF
# Cài agent kèm trỏ IP về máy Wazuh Server
sudo WAZUH_MANAGER='192.168.1.100' dnf install -y wazuh-agent
# Kích hoạt và cho agent khởi động cùng OS
sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-agent
Nâng cao: Bật FIM và tự động block IP brute-force SSH
Chỉ ngồi ngắm dashboard gom log là chưa đủ. Giá trị thực tế của SIEM nằm ở phản xạ tự vệ: tóm gọn kẻ sửa trộm code web và đá bay IP lạ ngay khi chúng vừa mò pass.
1. Bật giám sát toàn vẹn file (File Integrity Monitoring – FIM)
Mở file /var/ossec/etc/ossec.conf trên máy trạm, tìm khối <syscheck>. Khai báo ngay các thư mục quan trọng để bắt mọi hành vi ghi đè file theo thời gian thực:
<syscheck>
<!-- Quét realtime mã nguồn web và file nhị phân hệ thống -->
<directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories realtime="yes" check_all="yes">/var/www/html</directories>
<!-- Bỏ qua file sinh nhật ký tạm để tránh ngập lụt disk I/O -->
<ignore>/etc/mtab</ignore>
<ignore>/etc/hosts.deny</ignore>
</syscheck>
2. Chặn đứng IP gõ sai mật khẩu SSH quá 5 lần
Trở lại Wazuh Manager. Chúng ta tận dụng kịch bản firewall-drop có sẵn để drop gói tin ngay tại tầng iptables/firewalld:
<!-- Khai báo trong /var/ossec/etc/ossec.conf trên Wazuh Server -->
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5712</rules_id> <!-- Trigger khi dính rule SSH brute-force -->
<timeout>1800</timeout> <!-- Khóa mõm IP tấn công trong 30 phút -->
</active-response>
Cập nhật file xong, restart manager để nạp cấu hình mới:
sudo systemctl restart wazuh-manager
Kinh nghiệm thực chiến khi vận hành Wazuh trên CentOS 9
- Đừng tắt SELinux bừa bãi: Thấy lỗi kết nối, nhiều bạn quen tay gõ
setenforce 0. Đừng làm vậy, bạn vừa tự tay vứt bỏ một lớp giáp hạt nhân của Linux. Hãy chạysudo ausearch -m avc -ts recentđể kiểm tra chính xác rule nào bị chặn. Sau đó, dùngaudit2allow -M wazuh_customđể tạo policy chuẩn. - Coi chừng tràn ổ cứng vì log: Mặc định Indexer gom log liên tục không nghỉ. Đẩy 50-100GB log mỗi tuần sẽ làm cạn ổ cứng chỉ sau 1 tháng. Bạn nên vào Dashboard dựng ngay Index Lifecycle Management (ILM): nén log sau 7 ngày và xóa hẳn log quá 30 ngày.
- Khống chế RAM cho OpenSearch: Với node 8GB RAM, hãy ghim heap size của Indexer đúng 50% RAM vật lý (tức 4GB). Bạn sửa file
/etc/wazuh-indexer/jvm.options:
# Khai báo trong /etc/wazuh-indexer/jvm.options
-Xms4g
-Xmx4g
Mức trần 4GB này để lại đủ khoảng thở cho kernel và Wazuh Manager. Bạn sẽ không bao giờ phải chịu cảnh Linux OOM Killer đột ngột hạ sát tiến trình giữa đêm.

