iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
AI Security

30 天打造 AI 輔助 SOC 資安事件分析平台系列 第 12 篇

Day 12|事件欄位標準化:把不同 Suricata Log 整理成統一格式

  • 分享至 

  • xImage
  •  

昨天我們檢視了 Suricata 產生的各種不同事件(如 DNS Event、HTTP Event、fileinfo Event 等),發現它們各自擁有不同的 JSON 結構。
如果未來的 Dashboard 針對每一種事件都要寫不同的邏輯來處理,程式碼將會變得非常雜亂且難以維護。
因此今天要加入事件標準化,先將不同類型的 Suricata Event 整理成一致的資料結構。

原始資料的問題

Suricata 的 EVE JSON 可以記錄多種網路事件,不同 event_type 會有各自特有的欄位。雖然這種設計可以保留完整資訊,但對 Dashboard 而言,如果每種 Event 都使用不同格式,後續的儲存、搜尋、統計與 AI 分析都會比較困難。
所以今天定義:

timestamp
event_type
src_ip
src_port
dest_ip
dest_port
protocol
description

作為目前的共通欄位。

實作事件標準化

建立 normalize_events.py

cd ~/ai-soc-dashboard/backend
nano normalize_events.py

建立標準化函式

def normalize_event(event):
    normalized = {
        "timestamp": event.get("timestamp"),
        "event_type": event.get("event_type"),
        "src_ip": event.get("src_ip"),
        "src_port": event.get("src_port"),
        "dest_ip": event.get("dest_ip"),
        "dest_port": event.get("dest_port"),
        "protocol": event.get("proto"),
        "description": ""
    }

    return normalized

https://ithelp.ithome.com.tw/upload/images/20260926/201777542IrtylgSDk.png
透過 normalize_event(),不論輸入的是 HTTP 或 DNS Event,都先取得共同的網路欄位,再依照 Event Type 產生適合閱讀的 description。
執行

sudo python3 normalize_events.py

https://ithelp.ithome.com.tw/upload/images/20260926/201777545KqpAti8IF.png


上一篇
Day 11|解析 Suricata Log : 從 EVE JSON 讀取真實網路事件
下一篇
Day 13|Severity 分類:區分一般事件與資安告警
系列文
30 天打造 AI 輔助 SOC 資安事件分析平台 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言