Triển khai Wazuh SIEM và XDR trên Linux: Bảo mật tập trung và phản ứng chủ động Active Response

Security tutorial - IT technology blog
Security tutorial - IT technology blog

So sánh các phương pháp phát hiện mối đe dọa: Log cục bộ độc lập và SIEM/XDR

Đó là lúc 2 giờ sáng khi điện thoại của tôi rung liên hồi vì các cảnh báo quá tải hệ thống. Một mạng botnet phân tán đã phát động hơn 15.000 yêu cầu đồng thời nhắm vào edge API gateway của chúng tôi. Việc cố gắng grep các tệp /var/log/auth.log thô trên sáu node khác nhau qua SSH trong trạng thái hoảng loạn khi môi trường production đang sập là một cơn ác mộng vận hành thực sự. Sự cố đó đã dạy cho tôi một bài học đắt giá: bạn không thể bảo vệ một cụm máy chủ hiện đại chỉ bằng các tệp log nằm rải rác và cô lập.

Khi bảo vệ hạ tầng Linux, các đội ngũ kỹ thuật thường dựa vào một trong ba mô hình giám sát và phản ứng sự cố sau:

  • Script cục bộ phân tán (Fail2ban & Logrotate): Chạy trên từng máy chủ riêng lẻ để phân tích log nội bộ và chèn các quy tắc chặn vào tường lửa. Quá trình thiết lập chỉ mất năm phút, nhưng lại khiến bạn hoàn toàn mất khả năng quan sát trước các cuộc tấn công phối hợp trên nhiều node.
  • Thu thập log tập trung truyền thống (ELK / Loki): Đẩy từng dòng log về cụm Elasticsearch hoặc Grafana Loki. Giải pháp này rất hiệu quả để gỡ lỗi khi ứng dụng gặp sự cố. Tuy nhiên, bạn phải tự xây dựng lại toàn bộ các quy tắc phát hiện, mô hình trạng thái và luồng dữ liệu tình báo mối đe dọa (threat intelligence) từ đầu.
  • SIEM/XDR mã nguồn mở (Wazuh): Hợp nhất khả năng quản lý log tập trung, giám sát tính toàn vẹn tệp theo thời gian thực (FIM), quét lỗ hổng bảo mật và kiểm toán tuân thủ. Quan trọng hơn cả, giải pháp này tích hợp tính năng Active Response hai chiều giúp chặn đứng kẻ tấn công ngay tại tầng máy chủ.

Ưu và nhược điểm khi vận hành Wazuh

Wazuh mang đến khả năng phát hiện mối đe dọa chuẩn doanh nghiệp, nhưng đòi hỏi bạn phải tính toán tài nguyên kỹ lưỡng ngay từ đầu.

Ưu điểm

  • Tự động hóa với Active Response: Thực thi tức thì các script xử lý sự cố—chẳng hạn như chặn IP qua iptables/nftables, khóa tài khoản bị xâm nhập hoặc tiêu diệt tiến trình độc hại—chỉ trong tích tắc ngay khi phát hiện quy tắc trùng khớp.
  • Dữ liệu đo kiểm bảo mật hợp nhất: Tổng hợp các sự kiện kiểm toán hệ thống, cảnh báo rootkit, mã CVE lỗ hổng gói cài đặt và ánh xạ ma trận MITRE ATT&CK vào một giao diện dashboard duy nhất.
  • Bộ quy tắc dựng sẵn phong phú: Cung cấp hơn 4.000 quy tắc được cấu hình sẵn, bao quát từ system call trên Linux, Docker container, Nginx, Apache, OpenSSH cho đến log kiểm toán trên AWS/GCP.

Nhược điểm

  • Yêu cầu tài nguyên lớn: Wazuh Indexer và Dashboard vận hành trên nền tảng OpenSearch. Chúng yêu cầu tối thiểu từ 4 GB đến 8 GB RAM trên node manager, do đó quá nặng đối với các gói VPS giá rẻ cấu hình thấp.
  • Cần thời gian tinh chỉnh (tuning): Bộ quy tắc mặc định ban đầu có thể tạo ra nhiều cảnh báo nhiễu trên các máy chủ bận rộn cho đến khi bạn tinh chỉnh các danh sách trắng (whitelist) phù hợp với workload thực tế của mình.

Kiến trúc triển khai khuyến nghị

Đối với các mô hình quy mô vừa và nhỏ (từ 1 đến 100 node được giám sát), mô hình một Wazuh Central Node duy nhất quản lý các endpoint agent nhẹ nhàng sẽ đảm bảo khả năng cô lập đáng tin cậy mà không tốn công bảo trì cụm phức tạp.

  • Node Central Manager: Ubuntu 22.04 hoặc 24.04 LTS, 4 vCPU, 8 GB RAM và tối thiểu 50 GB dung lượng lưu trữ NVMe/SSD.
  • Các node Endpoint Agent: Các máy chủ Linux chạy agent viết bằng C siêu nhẹ. Mỗi tiến trình daemon tiêu thụ chưa đến 1% CPU và khoảng 35 MB đến 50 MB RAM.
  • Các cổng Ingress trên tường lửa của Manager: Cổng TCP 1514 (Luồng sự kiện từ agent), cổng TCP 1515 (Dịch vụ đăng ký agent) và cổng TCP 443 (Giao diện Web UI qua HTTPS).

Hướng dẫn triển khai: Cài đặt Manager, Agent và cấu hình Active Response

Bước 1: Cài đặt Wazuh All-in-One Manager

Trên máy chủ trung tâm chuyên dụng, hãy chạy trình hỗ trợ cài đặt chính thức. Script này sẽ tự động thiết lập Wazuh Manager, OpenSearch Indexer và Web Dashboard kèm theo các chứng chỉ TLS được tạo tự động.

# Tải xuống và chạy trình hỗ trợ cài đặt tự động
curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
sudo bash ./wazuh-install.sh -a

Sau khi script hoàn tất, thông tin đăng nhập của người dùng admin cùng đường dẫn Web UI (https://<YOUR_MANAGER_IP>) sẽ được hiển thị trên màn hình. Hãy sao chép và lưu trữ ngay vào trình quản lý mật khẩu của bạn.

Xác nhận cả ba dịch vụ cốt lõi đều đang hoạt động bình thường:

sudo systemctl status wazuh-manager wazuh-indexer wazuh-dashboard

Bước 2: Triển khai và đăng ký Wazuh Agent trên các máy chủ Endpoint

SSH vào bất kỳ máy chủ Linux nào bạn muốn giám sát và cài đặt gói agent chính thức.

# Thêm khóa GPG và kho lưu trữ APT của Wazuh
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-get update

# Cài đặt agent và trỏ trực tiếp về địa chỉ IP nội bộ của manager
sudo WAZUH_MANAGER='192.168.1.100' apt-get install wazuh-agent

# Kích hoạt và khởi chạy dịch vụ agent
sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-agent

Trong vòng ba mươi giây, endpoint mới sẽ tự động đăng ký và hiển thị ở trạng thái Active trên giao diện Wazuh Dashboard.

Bước 3: Cấu hình tự động chặn IP với Active Response

Active Response biến Wazuh thành một lá chắn phòng thủ thực thụ. Khi agent phát hiện hành vi đáng ngờ, nó sẽ kích hoạt ngay một hành động khắc phục tự động tại máy cục bộ. Hãy cùng cấu hình Wazuh để tự động chặn các IP tấn công trong 30 phút sau khi ghi nhận nhiều lần xác thực SSH thất bại liên tiếp.

Trên máy chủ Wazuh Manager, mở tệp /var/ossec/etc/ossec.conf:

sudo nano /var/ossec/etc/ossec.conf

Tìm khối <ossec_config> và thêm các quy tắc cấu hình command và active-response sau:

<!-- Tham chiếu script firewall-drop có sẵn -->
<command>
  <name>firewall-drop</name>
  <executable>firewall-drop</executable>
  <timeout_allowed>yes</timeout_allowed>
</command>

<!-- Kích hoạt firewall-drop đối với các nhóm cảnh báo brute-force SSH -->
<active-response>
  <command>firewall-drop</command>
  <location>local</location>
  <rules_group>authentication_failed|authentication_failures</rules_group>
  <timeout>1800</timeout> <!-- Chặn IP tấn công trong vòng 30 phút -->
</active-response>

Khởi động lại manager để áp dụng logic phát hiện mới:

sudo systemctl restart wazuh-manager

Bước 4: Bật tính năng giám sát tính toàn vẹn tệp theo thời gian thực (FIM)

Kẻ tấn công thường cài cắm webshell vào thư mục gốc của website hoặc chỉnh sửa các tệp thực thi hệ thống sau khi chiếm được quyền truy cập. FIM sẽ theo dõi mã checksum của tệp và cảnh báo cho bạn biết về bất kỳ thay đổi trái phép nào.

Trên node agent được giám sát, chỉnh sửa tệp /var/ossec/etc/ossec.conf để theo dõi các thư mục quan trọng theo thời gian thực:

<syscheck>
  <disabled>no</disabled>
  <frequency>3600</frequency>
  <directories realtime="yes" check_all="yes" report_changes="yes">/etc,/var/www,/usr/bin,/usr/sbin</directories>
</syscheck>

Khởi động lại agent để bắt đầu theo dõi các sự kiện trên hệ thống tệp:

sudo systemctl restart wazuh-agent

Bước 5: Kiểm thử và xác thực cơ chế phòng thủ chủ động

Để kiểm tra chuỗi phản ứng, hãy giả lập năm lần đăng nhập SSH thất bại vào agent từ một địa chỉ IP bên ngoài. Sau đó theo dõi log của active response trên agent mục tiêu theo thời gian thực:

sudo tail -f /var/ossec/logs/active-responses.log

Khi chạm ngưỡng kích hoạt, bạn sẽ thấy script thêm một mục chặn tạm thời vào tường lửa:

/var/ossec/active-response/bin/firewall-drop add - 203.0.113.45 1718929200.12845 5716

Cuối cùng, mở giao diện Wazuh Dashboard và điều hướng đến mục Security Events. Bạn sẽ thấy biểu đồ sự kiện tương quan, cấp độ quy tắc, nhãn chiến thuật MITRE và log khắc phục chi tiết được phản ánh đồng bộ trên toàn bộ cụm máy chủ của mình.

Share: