前兩天已經完成 Suricata EVE JSON 的解析以及事件欄位標準化。但目前處理的 HTTP 與 DNS Event 主要代表網路活動,本身並不一定代表發生資安攻擊。
因此今天進一步處理 Severity,希望讓系統能夠區分一般 Network Event 與具有嚴重程度資訊的 Security Alert。
Network Event 不等於 Security Alert
Suricata 的 EVE JSON 中包含不同種類的 event_type。例如 HTTP Event 代表觀察到 HTTP 網路活動,而 DNS Event 則記錄 DNS 查詢或回應。
因此不能單純因為出現 HTTP 或 DNS Event,就自行將事件分類成 High、Medium 或 Low。
在這次實作中,一般 HTTP 與 DNS Event 的 Severity 暫時設定為:
Severity : None
Severity Level : N/A
只有當 event_type = alert 時,才進一步讀取 Alert 中的 Severity。
severity_to_level() 函式:
def severity_to_level(severity):
if severity == 1:
return "High"
elif severity == 2:
return "Medium"
elif severity == 3:
return "Low"
else:
return "Unknown"

目前系統統一使用:
1 → High
2 → Medium
3 → Low
其他 → Unknown
並另外使用測試資料確認分類函式是否能正常運作。
在程式設計上,如果遇到沒有定義的 Severity,不應直接將它視為 Low Risk。
因此除了 High、Medium、Low 外,另外加入 Unknown,讓系統在收到無法識別的 Severity 時保留未知狀態,而不是自行做出錯誤判斷。