SIEM/Log Management Xây dựng hệ thống SIEM sử dụng OpenSearch, Wazuh Manager và Vector

I. Hệ thống triển khai
1. Thông tin hệ thống

OSRAMNhânBộ nhớ
SIEM stackUbuntu 22.04.5 amd648GB470GB
UbuntuUbuntu 22.04.5 amd644GB230GB
WindowsWindows 11 Home4GB264GB
FirewallOPNsense 26.7 dvd amd642GB120GB
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.

1791186411586.png

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].
1791187554588.png

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.
1791188401779.png

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
1791188551929.png

Hình 4. Chỉnh kích thước heap

Cấu hình thông số OpenSearch
1791188667777.png

1791188695298.png

Hình 5. Cấu hình OpenSearch

Kiểm tra trạng thái hoạt động
1791188938937.png

Hình 6. Kiểm thử OpenSearch

2. OpenSearch Dashboard
Cài đặt key của Dashboard và cài đặt OpenSearch Dashboard [3]
1791189209893.png

1791189308082.png

Hình 7. Cài đặt key và OpenSearch Dashboard

3. Wazuh Manager
Tải key và cài đặt Wazuh Manager [4]
1791189646783.png

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
1791189753102.png

Hình 9. Cấu hình nhận log thô

4. Vector
Cài đặt Vector sử dụng apt install [5]
1791189907762.png

1791189944590.png

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"
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
1791190350968.png

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
1791190579938.png

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.
1791190702352.png

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.
1791190819346.png

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
1791191062233.png

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.
1791191242946.png

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"}
]
}
}
Bảng 2. Lệnh truy vấn Vega

Kết quả
1791191419254.png

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
Bảng 3. Lệnh truy vấn PPL

Kết quả
1791191619975.png

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
 

Đính kèm

  • 1791190439118.png
    1791190439118.png
    32.7 KB · Lượt xem: 0
Back
Top