Phần này mình sẽ tiếp tục triển khai thêm các công cụ hỗ trợ cho việc tạo logs và cô lập các máy ảo với nhau trong cùng một mạng LAN để mô phỏng giống môi trường doanh nghiệp nhất có thể.
NOTEPhần 2 này mình viết dựa hoàn toàn theo tài liệu chính thức của Wazuh (documentation.wazuh.com) và blog chính thức (wazuh.com/blog) — mỗi mục đều có link nguồn kèm theo. Khác với Part 1, phần này mình không chụp lại từng bước (lab đang chạy ở máy khác) nên sẽ tập trung vào command/config chính xác thay vì screenshot.
Hoàn thiện Pfsense — Forward log về Wazuh
Ở Part 1 mình mới dừng lại ở việc dựng xong Pfsense làm router/firewall trung tâm cho LAN, chưa cho nó gửi log về Wazuh. Đây là bước nối tiếp bắt buộc để Wazuh biết được traffic nào đang đi qua firewall.
Vào Status > System Logs > Settings trên Pfsense:
- Bật Remote Logging, chọn Source Address = LAN
- Chọn format log là syslog (RFC 5424)
- Remote log server: nhập IP của VM1 (Wazuh), port
514
Nhớ thêm Firewall Rule ở Firewall > Rules > LAN cho phép traffic UDP cổng 514 từ Pfsense đi tới IP của Wazuh Server — không có rule này thì log sẽ không bao giờ tới nơi dù cấu hình remote logging đúng.
Một lưu ý quan trọng hay gặp khi làm theo nhiều hướng dẫn: Pfsense mặc định không gửi kèm hostname chuẩn trong header syslog, khiến bộ pre-decoder của Wazuh không parse đúng được nguồn log. Cách khắc phục phổ biến nhất là dựng thêm một syslog-ng làm trung gian, ép định dạng đúng chuẩn RFC 3164 trước khi forward tiếp vào Wazuh.
Phía Wazuh Manager, thêm block sau vào /var/ossec/etc/ossec.conf để mở cổng lắng nghe syslog:
<remote>
<connection>syslog</connection>
<port>514</port>
<protocol>udp</protocol>
<allowed-ips>10.0.1.0/24</allowed-ips>
<local_ip>10.0.1.1</local_ip>
</remote>allowed-ips bắt buộc phải khai báo khi dùng connection type syslog — nếu bỏ trống, Wazuh sẽ từ chối toàn bộ log gửi tới dù đúng port.
VM3 — Cài Sysmon và tích hợp vào Wazuh Agent
Log Windows Event mặc định khá nghèo nàn (đã nói trong bài Event ID) — Sysmon là thứ bắt buộc phải có để lấp đầy khoảng trống đó, đặc biệt là log process creation kèm hash file và parent process.
Cài Sysmon
Tải Sysmon tại trang chính thức của Microsoft Sysinternals: learn.microsoft.com/sysinternals/downloads/sysmon.
Thay vì tự viết config từ đầu, mình dùng config cộng đồng rất nổi tiếng và được khuyên dùng rộng rãi trong giới DFIR — SwiftOnSecurity/sysmon-config — đã cấu hình sẵn một bộ filter cân bằng giữa việc bắt đủ sự kiện đáng ngờ mà không làm log phình quá to.
Cài đặt qua CMD với quyền Administrator:
Sysmon64.exe -accepteula -i sysmonconfig-export.xmlCho Wazuh Agent đọc log Sysmon
Thêm vào ossec.conf của agent trên VM3 (đường dẫn C:\Program Files (x86)\ossec-agent\ossec.conf):
<localfile>
<location>Microsoft-Windows-Sysmon/Operational</location>
<log_format>eventchannel</log_format>
</localfile>eventchannel là format báo cho Wazuh biết đọc trực tiếp từ Windows Event Log channel được chỉ định, thay vì đọc file text thông thường. Restart Wazuh Agent để áp dụng.
Tích hợp VirusTotal — Tự động phát hiện và xóa file độc hại
Đây là phần mình thích nhất vì nó biến Wazuh từ chỗ chỉ “biết” có file lạ xuất hiện, thành chỗ tự hành động luôn mà không cần người ngồi canh dashboard.
Cơ chế hoạt động: Wazuh dùng module FIM (File Integrity Monitoring) để theo dõi một thư mục, mỗi khi có file mới/thay đổi, Wazuh gửi hash của file đó lên VirusTotal API để kiểm tra. Nếu VirusTotal báo file độc hại, Wazuh kích hoạt Active Response để tự động xóa file đó.
Bước 1 — Bật FIM real-time cho thư mục cần giám sát
<syscheck>
<disabled>no</disabled>
<directories realtime="yes">/root</directories>
</syscheck>(trên Windows thì dùng đường dẫn kiểu C:\Users\<USER_NAME>\Downloads)
Bước 2 — Khai báo integration VirusTotal (trên Wazuh Server)
<integration>
<name>virustotal</name>
<api_key><YOUR_VIRUS_TOTAL_API_KEY></api_key>
<rule_id>100200,100201</rule_id>
<alert_format>json</alert_format>
</integration>Lưu ý: API key free của VirusTotal giới hạn 4 request/phút — nếu giám sát thư mục có nhiều file thay đổi liên tục sẽ dễ bị rate-limit, cần cân nhắc khi áp dụng thực tế chứ không chỉ cho môi trường lab.
Bước 3 — Active Response tự động xóa file độc hại
<command>
<name>remove-threat</name>
<executable>remove-threat.sh</executable>
<timeout_allowed>no</timeout_allowed>
</command>
<active-response>
<disabled>no</disabled>
<command>remove-threat</command>
<location>local</location>
<rules_id>87105</rules_id>
</active-response>(trên Windows thay remove-threat.sh bằng remove-threat.exe)
Rule 87105 chính là rule Wazuh sinh ra khi VirusTotal xác nhận file độc hại — active response này sẽ tự chạy script xóa ngay khi rule đó match, không cần chờ người can thiệp.
Nguồn: Wazuh documentation - Detecting and removing malware using VirusTotal integration.
Tích hợp Suricata — Network IDS
Nếu VirusTotal + FIM lo phần host-based, Suricata bổ sung thêm phần network-based — bắt những traffic đáng ngờ đi qua mạng mà các agent trên endpoint không thấy được.
Cài Suricata (trên Ubuntu)
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata -yTải bộ rule Emerging Threats (bộ rule mã nguồn mở phổ biến nhất cho Suricata):
cd /tmp/ && curl -LO https://rules.emergingthreats.net/open/suricata-6.0.8/emerging.rules.tar.gz
sudo tar -xvzf emerging.rules.tar.gz && sudo mkdir /etc/suricata/rules && sudo mv rules/*.rules /etc/suricata/rules/Cấu hình suricata.yaml
Các giá trị quan trọng cần chỉnh trong /etc/suricata/suricata.yaml:
HOME_NET: "<IP_MANG_LAB>"
EXTERNAL_NET: "any"
default-rule-path: /etc/suricata/rules
rule-files:
- "*.rules"
af-packet:
- interface: enp0s3 # đổi thành đúng tên interface đang dùngRestart lại service:
sudo systemctl restart suricataCho Wazuh Agent đọc eve.json
File eve.json là nơi Suricata ghi toàn bộ alert dưới dạng JSON (mặc định ở /var/log/suricata/eve.json). Thêm vào ossec.conf:
<localfile>
<log_format>json</log_format>
<location>/var/log/suricata/eve.json</location>
</localfile>Điểm hay là Wazuh đã có sẵn ruleset xử lý Suricata ngay khi cài đặt (/var/ossec/ruleset/rules/0475-suricata_rules.xml), không cần tự viết decoder từ đầu — restart agent là alert sẽ tự xuất hiện trên dashboard, lọc nhanh bằng rule.groups:suricata.
Tổng kết
Vậy là lab đã hoàn chỉnh cả 4 mảnh: Pfsense forward log mạng, Sysmon cho visibility sâu trên Windows endpoint, VirusTotal cho khả năng tự động phản ứng với file độc hại, và Suricata cho góc nhìn network-based. Bước tiếp theo mình dự định sẽ là mô phỏng tấn công thật từ VM4 (Attacker) để xem toàn bộ chuỗi alert hoạt động trơn tru thế nào từ đầu tới cuối — sẽ viết tiếp ở Part 3 nếu có dịp.