I. Hệ thống triển khai
1. Thông tin hệ thống
2. Mô hình triển khai
Mô hình SIEM stack sử dụng các công nghệ [1]:
- Wazuh Agent: Sẽ phụ trách thu thập log trên Windows và Linux.
- Wazuh Manager: Tập trung các log từ các agent rồi parse thành archive log và tiến hành tạo ra alert log.
- Vector: Thành phần chuyển tiếp log từ wazuh và syslog từ tường lửa đến OpenSearch.
- OpenSearch: Lưu trữ và index các log chuẩn bị thao tác tìm kiếm.
- OpenSearch Dashboard: Thành phần trực quan cung cấp giao diện cho người dùng tìm kiếm thông tin.
Hình 1. Mô hình hệ thống SIEM triển khai
II. Cài đặt công nghệ trong hệ thống SIEM
1. OpenSearch
Vô hiệu hóa tính năng phân trang và hoán đổi bộ nhớ cùng với tăng số lượng bộ nhớ ảo [2].
Hình 2. Cấu hình môi trường cho công nghệ SIEM
Tải public key của OpenSearch xuống và cập nhật danh sách đường dẫn tải công nghệ xuống.
Hình 3. Tải key của OpenSearch
Chỉnh lại kích thước heap về 512MB để tránh bị treo máy
Hình 4. Chỉnh kích thước heap
Cấu hình thông số OpenSearch
Hình 5. Cấu hình OpenSearch
Kiểm tra trạng thái hoạt động
Hình 6. Kiểm thử OpenSearch
2. OpenSearch Dashboard
Cài đặt key của Dashboard và cài đặt OpenSearch Dashboard [3]
Hình 7. Cài đặt key và OpenSearch Dashboard
3. Wazuh Manager
Tải key và cài đặt Wazuh Manager [4]
Hình 8. Tải key và cài đặt Wazuh Manager
Cấu hình logall và logall_json thành yes để lưu log thô dưới dạng JSON
Hình 9. Cấu hình nhận log thô
4. Vector
Cài đặt Vector sử dụng apt install [5]
Hình 10. Cài đặt Vector
Cấu hình Vector
- Nguồn: phần sources sẽ nhận log thô, log cảnh báo từ Wazuh Manager và nhận trực tiếp log tường lửa trên cổng 5140
- Chuyển biến: phần transforms biến log nhận được thành dạng JSON và gán timestamp vào, riêng log tường lửa sẽ phân thêm thành log hệ thống và log tường lửa.
- Đích: phần sink sẽ ghi endpoint của OpenSearch, truy cập sử dụng thông tin đăng nhập với index để phân biệt các loại log
Bảng 1. Cấu hình chuyển tiếp Vector
III. Cài đặt và cấu hình thiết bị đầu cuối
1. Thiết bị Linux
Cài đặt tệp .deb trên trang web chính thức của Wazuh [6]
Sau đó tiến hành cài đặt và thêm vào cấu hình địa chỉ ip của máy chạy Manager
Hình 11. Cài đặt Wazuh Agent trên Linux
2. Thiết bị Windows
Tải tệp msi của Wazuh Agent cho Windows [7]
Cài đặt và đăng ký agent với msiexec
Hình 12. Cài đặt Wazuh Agent trên Windows
3. Thiết bị tường lửa
Cài đặt tệp ios từ trang web chính của OPNsense khi chọn lại image là dvd [8]
Cấu hình 2 interface mạng cho tường lửa và cấp ip cho thành phần giao diện cấu hình tường lửa OPNsense.
Hình 13. Cấu hình giao diện tường lửa
Sau khi đã có giao diện cấu hình vào System > Settings > Logging > Remote, thêm một điểm đích mới. Cấu hình gửi trực tiếp các log đến cổng 5140, nơi Vector đang lắng nghe.
Hình 14. Cấu hình log tường lửa
IV. Thao tác log trên OpenSearch Dashboard
1. Cấu hình log trên Dashboard
Vào tab DashBoard Management > Index patterns > Create index pattern, tiến hành tạo index cho tất cả loại log
Hình 15. Tạo index trên OpenSearch Dashboard
2. Truy vấn Dashboards Query Language
Trong mục Dev Tools, sử dụng ngôn ngữ này để truy vấn. [9]
Ví dụ ở đây truy vấn một cảnh báo đăng nhập sai của Windows, kết quả trả về sẽ là ở dạng JSON.
Hình 16. Truy vấn DQL
3. Truy vấn Vega
Vào Dashboard để tạo một Dashboard mới với loại Visualization là Vega [10]
Sử dụng vega-lite v5, tạo ra một văn bản các câu lệnh truy vấn tạo ra một biểu đồ hiển thị các loại sự kiện xảy ra trong máy Windows cùng với số lượng xuất hiện.
Bảng 2. Lệnh truy vấn Vega
Kết quả
Hình 17. Truy vấn Vega
4. Truy vấn Piped Processing Language
Vào Observability > Logs > Explore, tiến hành nhập lệnh truy vấn sau để tìm cảnh báo Windows đã nói trên. [11]
Bảng 3. Lệnh truy vấn PPL
Kết quả
Hình 18. Truy vấn PPL
Tài liệu tham khảo
[1] https://nathanberg.io/posts/home-siem-architecture-wazuh-opensearch-zeek
[2] https://docs.opensearch.org/latest/install-and-configure/install-opensearch/debian/
[3] https://docs.opensearch.org/latest/install-and-configure/install-dashboards/debian/
[4] https://documentation.wazuh.com/current/installation-guide/wazuh-server/step-by-step.html
[5] https://vector.dev/docs/reference/configuration/
[6] https://documentation.wazuh.com/cur...de/wazuh-agent/wazuh-agent-package-linux.html
[7] https://documentation.wazuh.com/cur.../wazuh-agent/wazuh-agent-package-windows.html
[8] https://opnsense.org/download/
[9] https://docs.opensearch.org/latest/sql-and-ppl/sql/partiql/
[10] https://docs.opensearch.org/latest/dashboards/visualize/visualize-app/vega/
[11] https://docs.opensearch.org/latest/sql-and-ppl/ppl/index
1. Thông tin hệ thống
| OS | RAM | Nhân | Bộ nhớ | |
| SIEM stack | Ubuntu 22.04.5 amd64 | 8GB | 4 | 70GB |
| Ubuntu | Ubuntu 22.04.5 amd64 | 4GB | 2 | 30GB |
| Windows | Windows 11 Home | 4GB | 2 | 64GB |
| Firewall | OPNsense 26.7 dvd amd64 | 2GB | 1 | 20GB |
Mô hình SIEM stack sử dụng các công nghệ [1]:
- Wazuh Agent: Sẽ phụ trách thu thập log trên Windows và Linux.
- Wazuh Manager: Tập trung các log từ các agent rồi parse thành archive log và tiến hành tạo ra alert log.
- Vector: Thành phần chuyển tiếp log từ wazuh và syslog từ tường lửa đến OpenSearch.
- OpenSearch: Lưu trữ và index các log chuẩn bị thao tác tìm kiếm.
- OpenSearch Dashboard: Thành phần trực quan cung cấp giao diện cho người dùng tìm kiếm thông tin.
Hình 1. Mô hình hệ thống SIEM triển khai
II. Cài đặt công nghệ trong hệ thống SIEM
1. OpenSearch
Vô hiệu hóa tính năng phân trang và hoán đổi bộ nhớ cùng với tăng số lượng bộ nhớ ảo [2].
Hình 2. Cấu hình môi trường cho công nghệ SIEM
Tải public key của OpenSearch xuống và cập nhật danh sách đường dẫn tải công nghệ xuống.
Hình 3. Tải key của OpenSearch
Chỉnh lại kích thước heap về 512MB để tránh bị treo máy
Hình 4. Chỉnh kích thước heap
Cấu hình thông số OpenSearch
Hình 5. Cấu hình OpenSearch
Kiểm tra trạng thái hoạt động
Hình 6. Kiểm thử OpenSearch
2. OpenSearch Dashboard
Cài đặt key của Dashboard và cài đặt OpenSearch Dashboard [3]
Hình 7. Cài đặt key và OpenSearch Dashboard
3. Wazuh Manager
Tải key và cài đặt Wazuh Manager [4]
Hình 8. Tải key và cài đặt Wazuh Manager
Cấu hình logall và logall_json thành yes để lưu log thô dưới dạng JSON
Hình 9. Cấu hình nhận log thô
4. Vector
Cài đặt Vector sử dụng apt install [5]
Hình 10. Cài đặt Vector
Cấu hình Vector
- Nguồn: phần sources sẽ nhận log thô, log cảnh báo từ Wazuh Manager và nhận trực tiếp log tường lửa trên cổng 5140
- Chuyển biến: phần transforms biến log nhận được thành dạng JSON và gán timestamp vào, riêng log tường lửa sẽ phân thêm thành log hệ thống và log tường lửa.
- Đích: phần sink sẽ ghi endpoint của OpenSearch, truy cập sử dụng thông tin đăng nhập với index để phân biệt các loại log
| api: enabled: true address: "0.0.0.0:8686" sources: wazuh_alert_logs: type: file include: - "/var/ossec/logs/alerts/alerts.json" read_from: beginning wazuh_archive_logs: type: file include: - "/var/ossec/logs/archives/archives.json" read_from: beginning opnsense_syslog: type: "syslog" address: "0.0.0.0:5140" mode: "udp" transforms: parse_alerts: type: "remap" inputs: - "wazuh_alert_logs" source: | . = parse_json!(.message) .@timestamp = .timestamp del(.timestamp) parse_archives: type: "remap" inputs: - "wazuh_archive_logs" source: | . = parse_json!(.message) .@timestamp = .timestamp del(.timestamp) parse_opnsense: type: "remap" inputs: - "opnsense_syslog" source: | .@timestamp = del(.timestamp) || now() if .appname == "filterlog" { .log_type = "firewall" } else { .log_type = "system" } sinks: opensearch_alerts: type: "elasticsearch" inputs: - "parse_alerts" endpoints: - "https://127.0.0.1:9200" tls: verify_certificate: false auth: strategy: "basic" user: "admin" password: "Th3adm1n@" api_version: "v7" suppress_type_name: true bulk: index: "wazuh-alerts-%Y.%m.%d" opensearch_archives: type: "elasticsearch" inputs: - "parse_archives" endpoints: - "https://127.0.0.1:9200" tls: verify_certificate: false auth: strategy: "basic" user: "admin" password: "Th3adm1n@" api_version: "v7" suppress_type_name: true bulk: index: "wazuh-archives-%Y.%m.%d" opensearch_opnsense: type: "elasticsearch" inputs: - "parse_opnsense" endpoints: - "https://127.0.0.1:9200" tls: verify_certificate: false auth: strategy: "basic" user: "admin" password: "Th3adm1n@" api_version: "v7" suppress_type_name: true bulk: index: "opnsense-logs-%Y.%m.%d" |
III. Cài đặt và cấu hình thiết bị đầu cuối
1. Thiết bị Linux
Cài đặt tệp .deb trên trang web chính thức của Wazuh [6]
Sau đó tiến hành cài đặt và thêm vào cấu hình địa chỉ ip của máy chạy Manager
Hình 11. Cài đặt Wazuh Agent trên Linux
2. Thiết bị Windows
Tải tệp msi của Wazuh Agent cho Windows [7]
Cài đặt và đăng ký agent với msiexec
Hình 12. Cài đặt Wazuh Agent trên Windows
3. Thiết bị tường lửa
Cài đặt tệp ios từ trang web chính của OPNsense khi chọn lại image là dvd [8]
Cấu hình 2 interface mạng cho tường lửa và cấp ip cho thành phần giao diện cấu hình tường lửa OPNsense.
Hình 13. Cấu hình giao diện tường lửa
Sau khi đã có giao diện cấu hình vào System > Settings > Logging > Remote, thêm một điểm đích mới. Cấu hình gửi trực tiếp các log đến cổng 5140, nơi Vector đang lắng nghe.
Hình 14. Cấu hình log tường lửa
IV. Thao tác log trên OpenSearch Dashboard
1. Cấu hình log trên Dashboard
Vào tab DashBoard Management > Index patterns > Create index pattern, tiến hành tạo index cho tất cả loại log
Hình 15. Tạo index trên OpenSearch Dashboard
2. Truy vấn Dashboards Query Language
Trong mục Dev Tools, sử dụng ngôn ngữ này để truy vấn. [9]
Ví dụ ở đây truy vấn một cảnh báo đăng nhập sai của Windows, kết quả trả về sẽ là ở dạng JSON.
Hình 16. Truy vấn DQL
3. Truy vấn Vega
Vào Dashboard để tạo một Dashboard mới với loại Visualization là Vega [10]
Sử dụng vega-lite v5, tạo ra một văn bản các câu lệnh truy vấn tạo ra một biểu đồ hiển thị các loại sự kiện xảy ra trong máy Windows cùng với số lượng xuất hiện.
| { "$schema": "schema/vega-lite/v5.json", "title": "Recent Windows Security Alerts", "data": { "url": { "index": "wazuh-alerts-*", "body": { "size": 50, "sort": [{ "@timestamp": { "order": "desc" } }], "query": { "bool": { "must": [ { "match": { "rule.groups": "windows" } } ] } }, "_source": ["rule", "@timestamp", "agent"] } }, "format": {"property": "hits.hits"} }, "transform": [ { "calculate": "datum._source.rule.description ? datum._source.rule.description : 'Unknown Windows Alert'", "as": "FullDescription" }, { "calculate": "datum._source.agent.name ? datum._source.agent.name : 'Unknown Host'", "as": "HostName" }, { "calculate": "substring(datum.FullDescription, 0, 40) + '... (' + datum.HostName + ')'", "as": "CleanShortLabel" } ], "mark": "bar", "encoding": { "y": { "field": "CleanShortLabel", "type": "nominal", "axis": { "title": "Recent Alerts (Host)", "labelLimit": 300 } }, "x": { "aggregate": "count", "type": "quantitative", "title": "Occurrences Count" }, "color": { "field": "FullDescription", "type": "nominal", "legend": null }, "tooltip": [ {"field": "FullDescription", "type": "nominal", "title": "Full Alert Description"}, {"field": "HostName", "type": "nominal", "title": "Host Source"}, {"aggregate": "count", "type": "quantitative", "title": "Total Hits"} ] } } |
Kết quả
Hình 17. Truy vấn Vega
4. Truy vấn Piped Processing Language
Vào Observability > Logs > Explore, tiến hành nhập lệnh truy vấn sau để tìm cảnh báo Windows đã nói trên. [11]
| source=wazuh-alerts-* | where data.win.system.channel='System' | eval ShortMsg = substr(data.win.system.message, 1, 45) | fields @timestamp, agent.name, data.win.system.eventID, data.win.eventdata.param1, ShortMsg | sort -@timestamp | head 5 |
Kết quả
Hình 18. Truy vấn PPL
Tài liệu tham khảo
[1] https://nathanberg.io/posts/home-siem-architecture-wazuh-opensearch-zeek
[2] https://docs.opensearch.org/latest/install-and-configure/install-opensearch/debian/
[3] https://docs.opensearch.org/latest/install-and-configure/install-dashboards/debian/
[4] https://documentation.wazuh.com/current/installation-guide/wazuh-server/step-by-step.html
[5] https://vector.dev/docs/reference/configuration/
[6] https://documentation.wazuh.com/cur...de/wazuh-agent/wazuh-agent-package-linux.html
[7] https://documentation.wazuh.com/cur.../wazuh-agent/wazuh-agent-package-windows.html
[8] https://opnsense.org/download/
[9] https://docs.opensearch.org/latest/sql-and-ppl/sql/partiql/
[10] https://docs.opensearch.org/latest/dashboards/visualize/visualize-app/vega/
[11] https://docs.opensearch.org/latest/sql-and-ppl/ppl/index