LAB REPORT – SIEM LOGGING & MONITORING VỚI SPLUNK ENTERPRISE + OPENVAS
Người thực hiện: Hoàng Nguyên Đạt
Môi trường lab: 3 máy ảo (Windows Server 2019, Ubuntu 22.04, Windows 10)
I. Executive Summary
Báo cáo này mô tả quá trình xây dựng một mô hình SIEM thu gọn sử dụng Splunk Enterprise làm nền tảng thu thập, lưu trữ và phân tích log từ:
- Web Server chạy Apache trên Ubuntu 22.04.
- Endpoint Windows 10 (Windows Event Logs).
Splunk Universal Forwarder (UF) được triển khai trên cả Ubuntu và Windows 10 để forward log về Splunk Enterprise chạy trên Windows Server 2019. Bên cạnh đó, OpenVAS được tích hợp trong phạm vi mô phỏng (mức cơ bản) cho bài toán vulnerability management.
Thông qua lab này, các mục tiêu chính đạt được gồm:
- Thiết lập pipeline log end-to-end (source → forwarder → indexer → SPL search).
- Chuẩn hóa index và sourcetype cho Apache và Windows Event Logs.
- Xác minh khả năng truy vấn, phân tích log bằng SPL.
- Chuẩn bị nền tảng cho các chức năng nâng cao: detection rule, alert, threat hunting và tích hợp sâu hơn với OpenVAS trong tương lai.
II. Giới thiệu & Mục tiêu
2.1. Mục đích xây dựng lab
Lab được xây dựng với các mục tiêu:
- Thiết lập hệ thống SIEM nhỏ gọn sử dụng Splunk Enterprise.
- Thu thập log từ Web Server (Apache trên Ubuntu) và Endpoint Windows (Windows Event Logs).
- Quan sát, phân tích và chuẩn hóa dữ liệu log.
- Kiểm tra end-to-end log pipeline, đảm bảo log đi đúng luồng và không bị mất mát.
- Chuẩn bị nền tảng cho các chức năng nâng cao:
- Viết detection rule.
- Thiết lập alert.
- Thực hiện threat hunting.
- Tích hợp OpenVAS ở mức cơ bản nhằm mô phỏng hoạt động vulnerability management.
2.2. Phạm vi (In-scope)
Trong lab này, phạm vi triển khai tập trung vào:
- Cài đặt Splunk Enterprise trên Windows Server 2019.
- Cài Splunk Universal Forwarder trên:
- Ubuntu 22.04 (Apache Web Server).
- Windows 10 (Endpoint).
- Thu thập và phân tích:
- Apache access/error logs (Ubuntu 22.04).
- Windows Event Logs (Security, System, Application).
- Xác minh log pipeline và tính toàn vẹn dữ liệu.
- Viết một số truy vấn SPL cơ bản để kiểm tra log ingestion.
2.3. Out-of-scope
Các nội dung sau chưa được triển khai trong phạm vi lab này:
- Thiết kế và triển khai dashboard nâng cao trong Splunk.
- Tối ưu hiệu năng Splunk (indexing, storage, search head scaling…).
- Xây dựng hệ thống alerting & correlation rule phức tạp.
- Phân tích chi tiết lỗ hổng từ kết quả scan của OpenVAS (mới dừng ở mức mô phỏng tích hợp).
III. Kiến trúc hệ thống
3.1. Sơ đồ tổng quan (Architecture Overview)
Luồng dữ liệu tổng quát:
[Windows 10 - UF] ────────────────→
\
→ [Windows Server 2019 - Splunk Enterprise]
/
[Ubuntu 22.04 - Apache + UF] ──────→
- Splunk Enterprise đóng vai trò indexer/search head.
- Hai Splunk Universal Forwarder (Ubuntu và Windows 10) gửi log về Splunk Enterprise qua port TCP 9997.
3.2. Thành phần hệ thống
Windows Server 2019 (192.168.1.10)
-
Cài đặt:
- Splunk Enterprise.
-
Vai trò:
- Nhận log từ tất cả Splunk Universal Forwarder.
- Lưu trữ log, thực hiện indexing.
- Cung cấp giao diện truy vấn log bằng SPL.
Ubuntu 22.04 (192.168.1.11)
-
Cài đặt:
- Apache Web Server.
- Splunk Universal Forwarder.
-
Nguồn log chính:
/var/log/apache2/access.log/var/log/apache2/error.log
Windows 10 (192.168.1.13)
-
Cài đặt:
- Splunk Universal Forwarder.
-
Nguồn log chính:
- Windows Security Event Logs.
- System Logs.
- Application Logs.
3.3. Data Flow (Luồng dữ liệu log)
- Hệ điều hành và ứng dụng (Apache/Windows) sinh log tại máy nguồn.
- Splunk Universal Forwarder đọc log tại local và gửi về Splunk Enterprise qua port 9997.
- Splunk Enterprise index log, lưu trữ vào các index tương ứng (ví dụ:
webserver,winsecevtx). - Người dùng sử dụng Splunk Web (SPL) để truy vấn, tìm kiếm, phân tích log.
IV. Danh sách máy ảo & thông số kỹ thuật
| Máy ảo | Hệ điều hành | IP | Vai trò | Ghi chú |
|---|---|---|---|---|
| VM1 | Windows Server 2019 | 192.168.1.10 | Splunk Enterprise Server | Nhận toàn bộ log |
| VM2 | Ubuntu Server 22.04 | 192.168.1.11 | Apache + Splunk UF | Web + log forwarding |
| VM3 | Windows 10 | 192.168.1.13 | Splunk UF | Windows Event Logs |
V. Chuẩn bị môi trường
5.1. Network Plan
- Subnet:
192.168.1.0/24 - Gateway:
192.168.1.1 - Tất cả máy ảo nằm trong cùng subnet để thuận tiện cho việc giao tiếp và forward log.
5.2. Các port cần thiết
| Service | Port | Host |
|---|---|---|
| Splunk Web UI | 8000 | Windows Server |
| Splunk Receiver (UF → Splunk) | 9997 | Windows Server |
| Apache Web Server | 80 | Ubuntu |
| SSH (quản trị Ubuntu) | 22 | Ubuntu |
netstat
5.3. Các tài khoản sử dụng
| Hệ thống | Tài khoản | Mô tả |
|---|---|---|
| Splunk Enterprise | admin / (mật khẩu) |
Đăng nhập Splunk Web UI |
| Ubuntu | user / root |
SSH + quản lý Apache |
| Windows 10 | Administrator |
Cài đặt & cấu hình Splunk UF |
VI. Cài đặt Splunk Enterprise trên Windows Server 2019
6.1. Tải Splunk Enterprise
- Truy cập trang chủ Splunk.
- Tải bản Splunk Enterprise cho Windows 64-bit (phiên bản mới nhất tại thời điểm thực hiện lab).
6.2. Cài đặt
- Chạy file cài đặt
.msivới quyền Administrator. -
Chọn kiểu chạy:
Run Splunk as Local System User(hoặc tài khoản dịch vụ riêng nếu có yêu cầu).
- Thiết lập mật khẩu cho user
admin(mật khẩu được sử dụng để đăng nhập Splunk Web UI). - Hoàn tất quá trình cài đặt theo wizard.
6.3. Cấu hình Splunk Receiver
Sau khi cài đặt, truy cập Splunk Web UI:
- URL:
http://192.168.1.10:8000 - Đăng nhập bằng tài khoản
admin.
Cấu hình port nhận log từ Universal Forwarder:
- Vào Settings → Forwarding and receiving → Receive data.
- Chọn Configure receiving → Add New.
- Nhập port:
9997→ Save.
6.4. Kiểm tra trạng thái Splunk
Mở Task manager kiểm tra splunkd.exe có đang chạy hay không:

6.5. Giao diện Splunk Web
- URL truy cập:
http://192.168.1.10:8000 - Đăng nhập bằng tài khoản
admin. -
Kiểm tra:
- Trang Home hiển thị bình thường.
- Không có thông báo lỗi license blocking (chỉ cảnh báo trial nếu có).
VII. Cài đặt Splunk Universal Forwarder trên Ubuntu 22.04
7.1. Giới thiệu
Trên máy Ubuntu 22.04 (IP 192.168.1.11), Splunk Universal Forwarder (UF) được triển khai với các mục tiêu:
- Thu thập log Apache Web Server.
- Chuẩn hóa sourcetype, index và luồng dữ liệu log.
- Forward log về Splunk Enterprise (IP 192.168.1.10, port 9997).
- Đảm bảo việc phân quyền truy cập log tuân thủ best practice của Linux.
7.2. Tải và cài đặt Splunk UF
Chạy các lệnh sau trên Ubuntu:
wget wget -O splunkforwarder-10.0.2-6293d562290e-linux-ppc64le.tgz "https://download.splunk.com/products/universalforwarder/releases/10.0.2/linux/splunkforwarder-10.0.2-6293d562290e-linux-ppc64le.tgz"
Giải nén file trên vào folder /opt:
sudo tar -xzvf linux/splunkforwarder-10.0.2-6293d562290e-linux-ppc64le.tgz -C /opt
7.3. Phân quyền log cho Splunk UF (Linux Permission)
Apache log được lưu tại:
/var/log/apache2/access.log/var/log/apache2/error.log
Các file này thuộc group adm. User chạy UF là splunk cần được cấp quyền đọc log:
sudo usermod -aG adm splunk
Kiểm tra lại:
groups splunk
Giải thích:
- Đây là best practice: cấp quyền qua group thay vì chỉnh sửa trực tiếp permission file log.
- Đảm bảo Splunk có thể đọc log mà không phá vỡ mô hình bảo mật mặc định của hệ thống.
7.4. Cấu hình kết nối tới Splunk Enterprise (outputs.conf)
Chuyển sang user splunk:
sudo su - splunk
Tạo file cấu hình:
vim /opt/splunkforwarder/etc/system/local/outputs.conf
Nội dung:
[tcpout]
defaultGroup = indexers
[tcpout:indexers]
server = 192.168.1.10:9997
Giải thích:
192.168.1.10:9997: địa chỉ Splunk Enterprise trên Windows Server 2019.defaultGroup = indexers: tất cả luồng log sẽ route tới nhóm này.
7.5. Cấu hình Apache log source (inputs.conf)
Tạo file:
vim /opt/splunkforwarder/etc/system/local/inputs.conf
Nội dung:
[monitor:///var/log/apache2/access.log]
source = apache
sourcetype = apache_access_log
index = webserver
_TCP_ROUTING = indexers
[monitor:///var/log/apache2/error.log]
source = apache
sourcetype = apache_error_log
index = webserver
_TCP_ROUTING = indexers
Giải thích:
monitor:///...: chỉ định file log cần theo dõi.sourcetype = apache_access_log/apache_error_log: chuẩn hóa định dạng log cho mục đích parsing.index = webserver: tập trung log web vào một index riêng biệt._TCP_ROUTING = indexers: route log theo group đã định nghĩa trongoutputs.conf.
7.6. Khởi động lại Splunk UF
Áp dụng cấu hình mới:
sudo /opt/splunkforwarder/bin/splunk restart
Kiểm tra trạng thái:
sudo /opt/splunkforwarder/bin/splunk status
Kỳ vọng: splunkd is running.
7.7. Xác minh Forwarder đã kết nối tới Splunk Enterprise
Trên Splunk Enterprise:
Cách 1 – Forwarder Management
- Vào Settings → Forwarder Management → Forwarders.
- Kiểm tra host Ubuntu (192.168.1.11) đã xuất hiện, trạng thái Active.
Cách 2 – Dùng SPL kiểm tra log Apache
index=webserver sourcetype=apache_access_log
| head 20
Hoặc:
index=webserver host=ubuntu* OR host=192.168.1.11
| stats count by sourcetype
Nếu có log trả về, chứng tỏ UF đã forward log thành công.
7.8. Kiểm tra pipeline log và field extraction
Dùng SPL để kiểm tra các trường quan trọng:
index=webserver sourcetype=apache_access_log
| table _time, host, clientip, method, uri, status, useragent
| head 20
Kỳ vọng:
- Các trường
clientip,method,uri,status,useragentđược extract chính xác. - Thời gian
_timetrùng khớp với thời điểm request thực tế.
VIII. Cài đặt Splunk Universal Forwarder trên Windows 10 (192.168.1.13)
8.1. Mục tiêu
Trên Windows 10, Splunk UF được sử dụng để thu thập:
- Security Event Logs.
- System Logs.
- Application Logs.
Các log này được gửi về index main trên Splunk Enterprise, phục vụ:
- Giám sát đăng nhập, thay đổi chính sách.
- Phân tích lỗi hệ thống, ứng dụng.
- Kết hợp với log Apache để hỗ trợ điều tra sự cố toàn diện.
8.2. Cài đặt Splunk UF trên Windows
Các bước chính:
- Tải Splunk Universal Forwarder for Windows (64-bit) từ trang Splunk.
- Chạy file
.msivới quyền Administrator. - Trong wizard cài đặt:
Chọn accept và mục on-premises
Tạo credential
Bỏ qua bước này
Điền
ipcủa máy chạy splunk enterprise indexer server
8.3. Enable Windows Event Logs
Cấu hình qua inputs.conf
Tại đường dẫn sau thêm file inputs.conf:
C:\Program Files\SplunkUniversalForwarder\etc\system\local
Thêm nội dung:
Sau đó vào Task manager tìm chọn Splunk UF như hình chọn restart
8.4. Kiểm tra kết nối và log Windows trong Splunk
Trên Splunk Enterprise:
index="winsecevtx"
| stats count by sourcetype
Kỳ vọng:
- Xuất hiện các sourcetype:
WinEventLog:Security,WinEventLog:System,WinEventLog:Application.
Ví dụ truy vấn chi tiết Security Log:
index=winsecevtx sourcetype="WinEventLog:Security"
| table _time, host, EventCode, Account_Name, Logon_Type
| head 20
index=winsecevtx sourcetype="WinEventLog:Security" | where isnotnull(Logon_Type) and EventCode=4625 | table _time, host, EventCode, Account_Name, Logon_Type | sort Logon_Type | head 20
IX. Kiểm thử Log từ Ubuntu (Apache, Syslog, Auth.log)
9.1. Vị trí các file log quan trọng trên Ubuntu 22.04
Trên máy chủ Ubuntu 22.04, các log chính được sử dụng trong lab gồm:
-
Apache Web Server
- Access log: ` /var/log/apache2/access.log`
- Error log:
/var/log/apache2/error.log
-
Syslog hệ thống
- System log tổng hợp:
/var/log/syslog
- System log tổng hợp:
-
Log xác thực (Authentication / SSH)
- Auth log:
/var/log/auth.log
- Auth log:
Các file này đã được cấu hình trong inputs.conf của Splunk Universal Forwarder (trình bày ở Mục VII) để gửi về Splunk Indexer với index và sourcetype tương ứng.
9.2. Sinh log test cho Apache Web Server
Từ một máy client (Windows, Kali, hoặc bất kỳ máy nào trong cùng subnet với Ubuntu), thực hiện các request HTTP đến web server:
curl http://192.168.1.11/
curl http://192.168.1.11/khongtontai
Trong đó:
- Lệnh thứ nhất: truy cập trang mặc định, dự kiến sinh log HTTP 200 OK.
- Lệnh thứ hai: truy cập đường dẫn không tồn tại, dự kiến sinh log HTTP 404 Not Found.
Có thể thay thế curl bằng trình duyệt (Chrome, Firefox…) truy cập trực tiếp:
http://192.168.1.11/http://192.168.1.11/khongtontai
[Screenshot 22]:
9.3. Sinh log test cho Auth.log (SSH / đăng nhập)
Để sinh log liên quan đến xác thực đăng nhập (SSH), thực hiện trực tiếp từ một máy khác trong cùng mạng (hoặc từ host/VM khác):
-
Thử đăng nhập SSH sai mật khẩu vài lần:
ssh testuser@192.168.1.11 # Nhập sai password 3–5 lần -
Sau đó, thử đăng nhập đúng mật khẩu ít nhất một lần (nếu có user hợp lệ):
ssh testuser@192.168.1.11 # Nhập đúng password
Kết quả mong đợi:
-
Trong
/var/log/auth.logsẽ xuất hiện các dòng:Failed password for ...(thử đăng nhập sai)Accepted password for ...(đăng nhập thành công)
Các sự kiện này sẽ được Universal Forwarder thu thập và gửi về Splunk (index dùng cho auth.log, ví dụ: ubuntusv-authlog).
[Screenshot 23]:
9.4. Sinh log test cho Syslog (Ubuntu System Log)
Để xác nhận Splunk đang thu thập đúng log hệ thống từ /var/log/syslog, có thể sinh một số sự kiện đơn giản:
-
Ghi log thủ công bằng lệnh
logger:logger "TEST_SYSLOG: Đây là log test gửi từ máy ubtsv-vm" -
Thực hiện một số hành động tạo log hệ thống, ví dụ:
-
Sử dụng
sudovới lệnh bất kỳ:sudo ls /root -
Restart một service:
sudo systemctl restart apache2
-
Các hành động trên sẽ sinh thêm thông tin trong /var/log/syslog, đồng thời được gửi về Splunk thông qua Universal Forwarder.
[Screenshot 24]:
9.5. Kiểm tra log Apache trong Splunk
Trên Splunk Enterprise, truy vấn log access của Apache:
index=webserver sourcetype=apache_access_log
| table _time, host, clientip, method, uri, status, useragent
| head 20
Hoặc chỉ tập trung vào các request lỗi HTTP 404:
index=webserver sourcetype=apache_access_log status=404
| stats count by uri, clientip
Các điểm cần kiểm tra:
- Có log từ đúng host web server (ví dụ:
ubtsv-vmhoặc IP192.168.1.11). -
Các request test:
//khongtontaiđã được ghi nhận đầy đủ.
- Các trường (fields) như:
clientip,method,uri,status,useragentđã được trích xuất chính xác. - Thời gian
_timetrên Splunk khớp với thời điểm thực hiện lệnhcurl/truy cập từ client.
[Screenshot 25]:
9.6. Kiểm tra log Auth.log (SSH) trong Splunk
Trên Splunk, kiểm tra log đăng nhập/SSH từ index dùng cho auth.log (ví dụ):
index=ubuntusv-authlog sourcetype=ubuntu-authlog "Failed password"
| table _time, host, user, src, message
| head 20
Hoặc thống kê số lần đăng nhập sai theo nguồn (IP):
index=ubuntusv-authlog sourcetype=ubuntu-authlog "Failed password"
| stats count as failed_count by src, user
| sort - failed_count
[Screenshot 26]:
9.7. Kiểm tra log Syslog trong Splunk
Đối với log hệ thống được forward từ /var/log/syslog, trên Splunk:
index=ubuntusv-syslog sourcetype=ubuntu-system-log
| table _time, host, facility, severity, message
| head 20
Để kiểm tra log test gửi bằng logger:
index=ubuntusv-syslog sourcetype=ubuntu-system-log "TEST_SYSLOG"
| table _time, host, message
[Screenshot 27]:












Tạo credential
Bỏ qua bước này
Điền 



