Triển khai Wazuh SIEM & XDR trên Docker: Giám sát an toàn toàn diện cho HomeLab

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

So sánh các phương án triển khai

Khi hệ thống homelab của bạn mở rộng vượt quá vài container cơ bản để chạy các ứng dụng web công khai, Nextcloud hay VPN WireGuard, các công cụ xem syslog thông thường và biểu đồ firewall sẽ không còn đáp ứng đủ nhu cầu. Bạn cần những tín hiệu bảo mật mang tính hành động: cảnh báo can thiệp tệp tin, theo dõi tấn công dò mật khẩu SSH brute-force và quét CVE tự động. Việc vận hành một nền tảng bảo mật toàn diện như Wazuh thường quy về ba phương án thực tế sau.

1. Cài đặt trên máy chủ vật lý (Bare-Metal) hoặc máy ảo riêng biệt (Dedicated VM)

Cài đặt trực tiếp Wazuh lên máy ảo Ubuntu hoặc Debian cho phép bạn truy cập trực tiếp vào phần cứng và tận dụng khả năng quản trị gốc của systemd. Tuy nhiên, nhược điểm là việc nâng cấp sẽ nhanh chóng trở thành cơn ác mộng. Để giữ cho Indexer, Manager và Dashboard luôn đồng bộ phiên bản, bạn sẽ phải xử lý hàng loạt phụ thuộc gói APT trên ba dịch vụ riêng biệt, mỗi dịch vụ lại có đường dẫn lưu trữ và thiết lập quyền hạn đặc thù.

2. Sử dụng dịch vụ Cloud SIEM

Các nền tảng SaaS như Datadog Security, Wazuh Cloud hoặc Microsoft Sentinel giúp bạn thoát khỏi gánh nặng duy trì hạ tầng backend. Bạn chỉ cần cài agent là việc thu thập log sẽ bắt đầu ngay. Vấn đề nan giải duy nhất nằm ở hóa đơn chi phí. Việc thu thập khoảng 20 GB log container mỗi ngày có thể dễ dàng tiêu tốn hàng trăm USD mỗi tháng—con số này khó lòng phù hợp với một hệ thống homelab cá nhân.

3. Cụm Container hóa với Docker Compose

Docker Compose đóng gói trọn bộ bộ ba thành phần cốt lõi—Wazuh Indexer (lưu trữ và tìm kiếm), Wazuh Manager (phát hiện mối đe dọa và đánh giá rule) và Wazuh Dashboard (giao diện Kibana/OpenSearch)—vào các container độc lập. Toàn bộ tệp biến môi trường, chứng chỉ TLS và dữ liệu persistent đều nằm gọn trong một thư mục duy nhất. Khi cần khôi phục sau sự cố, bạn chỉ việc backup duy nhất thư mục đó.

Ưu và nhược điểm khi chạy Wazuh trên Docker

Trước khi phân bổ tài nguyên bộ nhớ trên hypervisor của bạn, hãy cân nhắc kỹ những điểm mạnh vượt trội và những lưu ý cần chú ý khi container hóa hệ thống này.

Ưu điểm

  • Triển khai nhanh chóng: Khởi chạy toàn bộ hệ thống SIEM 3 tầng hoàn chỉnh chỉ trong chưa đầy 10 phút với các tệp manifest YAML tiêu chuẩn.
  • Nâng cấp dễ dàng: Nâng cấp phiên bản chỉ đơn giản là đổi tag image trong docker-compose.yml và pull các layer mới về, loại bỏ hoàn toàn xung đột thư viện hệ thống.
  • Lưu trữ dự đoán được: Toàn bộ index sự kiện, cảnh báo và tệp trạng thái đều được cô lập trong các named volume rõ ràng của Docker.
  • Di chuyển thuận tiện: Chuyển cụm SIEM sang một mini-PC mới hoặc node Proxmox khác chỉ cần một lệnh rsync thư mục cấu hình và data volume.

Nhược điểm

  • Tốn nhiều RAM: Do Indexer chạy trên nền OpenSearch, nó đòi hỏi tối thiểu từ 4 GB đến 6 GB RAM dành riêng chỉ để tránh bị crash vì lỗi Out-Of-Memory (OOM).
  • Che khuất IP nguồn (Source IP Masking): Nếu không cấu hình host networking hoặc proxy header hợp lý, cơ chế bridge NAT mặc định của Docker có thể khiến lưu lượng gửi đến từ các agent trông như xuất phát từ 172.18.0.1 thay vì dải subnet thực tế của bạn.
  • Yêu cầu can thiệp Kernel của máy chủ: OpenSearch sử dụng cơ chế memory mapping rất nhiều, đồng nghĩa với việc bạn bắt buộc phải điều chỉnh các tham số sysctl ngay trên hệ điều hành máy chủ (host).

Yêu cầu phần cứng & hệ thống máy chủ

Vận hành một hệ thống SIEM chuẩn doanh nghiệp đòi hỏi nguồn tài nguyên thực sự. Đối với một cụm single-node thu thập log từ 5 đến 15 thiết bị trong homelab, bạn nên chuẩn bị mức cấu hình phần cứng tối thiểu sau:

  • Hệ điều hành máy chủ: Ubuntu Server 22.04 LTS hoặc 24.04 LTS (kiến trúc x86_64).
  • CPU: 4 nhân vật lý hoặc ảo (ví dụ: Intel Core i5 thế hệ thứ 8 hoặc AMD Ryzen 3000 series trở lên).
  • Bộ nhớ RAM: Tối thiểu 8 GB; nên cấp 16 GB nếu bạn dự định lưu trữ lịch sử raw index từ 30 ngày trở lên.
  • Ổ cứng: 100 GB dung lượng trống trở lên trên ổ cứng SSD NVMe hoặc SATA. Tránh chạy Indexer trên ổ HDD truyền thống hoặc thẻ nhớ SD—độ trễ ghi ngẫu nhiên sẽ làm nghẽn OpenSearch.
  • Docker: Docker Engine bản 24.0+ đi kèm plugin Docker Compose V2 (docker compose, không phải lệnh docker-compose cũ).

Hướng dẫn triển khai chi tiết

Dưới đây là các bước tinh chỉnh máy chủ, tạo chứng chỉ, khởi chạy cụm dịch vụ và đăng ký agent đầu tiên của bạn.

Bước 1: Tinh chỉnh giới hạn bộ nhớ ảo trên Host

Wazuh Indexer sẽ không thể khởi động nếu số lượng memory map trên máy chủ của bạn quá thấp. Mặc định, các bản phân phối Linux giới hạn giá trị này ở mức 65530. Hãy nâng con số này lên tối thiểu 262144.

# Kiểm tra giới hạn hiện tại
cat /proc/sys/vm/max_map_count

# Áp dụng vĩnh viễn giới hạn bắt buộc
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Bước 2: Clone kho lưu trữ Docker chính thức của Wazuh

Lấy mẫu triển khai single-node chính thức từ kho lưu trữ của Wazuh:

git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0 --depth=1
cd wazuh-docker/single-node

Bước 3: Khởi tạo chứng chỉ nội bộ TLS

Manager, Indexer và Dashboard giao tiếp với nhau qua giao thức mã hóa mTLS. Sử dụng container tạo chứng chỉ có sẵn của Wazuh để cấp phát chứng chỉ tự ký (self-signed certs) cho toàn bộ các thành phần nội bộ:

docker compose -f generate-indexer-certs.yml run --rm generator

Kiểm tra xác nhận các tệp khóa và chứng chỉ đã được ghi ra đĩa trước khi tiếp tục:

ls -la config/wazuh_indexer_ssl_certs/

Bước 4: Khởi chạy cụm dịch vụ (Cluster)

Khởi động 3 container cốt lõi ở chế độ chạy nền (detached mode):

docker compose up -d

Theo dõi quá trình khởi động. Quá trình khởi tạo OpenSearch thường mất khoảng 60 đến 90 giây:

docker compose logs -f wazuh.indexer

Khi log báo trạng thái cluster chuyển sang màu xanh lá (green), hãy mở trình duyệt và truy cập vào:

https://<IP_MAY_CHU_DOCKER_CUA_BAN>:443

Chấp nhận cảnh báo về chứng chỉ tự ký. Đăng nhập bằng tài khoản mặc định: username admin và password SecretPassword. Hãy đổi mật khẩu này ngay lập tức tại mục Server management > Security > Internal users, hoặc cập nhật thông tin đăng nhập trong tệp biến môi trường local trước khi khởi chạy các container.

Bước 5: Cài đặt Wazuh Agent trên máy Client

Bây giờ hãy cấp đối tượng giám sát cho hệ thống SIEM. Bạn hãy cài đặt agent dung lượng nhẹ lên một máy chủ Linux khác, ví dụ như máy chủ DNS nội bộ, node Docker hoặc reverse proxy.

SSH vào máy đích, nhập khóa ký số và cấu hình kho lưu trữ:

# Nhập khóa xác thực kho lưu trữ
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && sudo 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" | sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update

# Cài đặt agent và trỏ về địa chỉ IP của máy chủ Wazuh Manager
sudo WAZUH_MANAGER="192.168.1.100" apt install wazuh-agent

Bật và khởi động tiến trình daemon của agent:

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

Bước 6: Xác nhận thu thập dữ liệu và thông số an toàn

Quay lại giao diện Wazuh Dashboard. Trong vòng 30 đến 60 giây, máy client của bạn sẽ xuất hiện trong danh sách Endpoints Summary với trạng thái Active.

Agent sẽ lập tức gửi báo cáo về tình trạng an ninh cục bộ của máy:

  • Giám sát tính toàn vẹn tệp tin (FIM): Đưa ra cảnh báo thời gian thực nếu các tệp nhạy cảm như /etc/passwd, /etc/sudoers hoặc các tệp nhị phân hệ thống bị chỉnh sửa.
  • Kiểm toán lỗ hổng bảo mật: So sánh các phiên bản gói phần mềm đã cài đặt với nguồn cấp dữ liệu CVE từ NVD và các bản tin bảo mật của nhà cung cấp.
  • Săn lùng mối đe dọa & phát hiện Rootkit: Phát hiện các tiến trình bất thường, card mạng đang ở chế độ promiscuous và các cổng mạng lạ mở trái phép.

Giờ đây bạn đã có một trung tâm điều hành SIEM và XDR vận hành trơn tru để bảo vệ toàn diện homelab, chạy gọn gàng bên trong Docker mà không làm xáo trộn hệ điều hành máy chủ.

Share: