iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
AI 自動化

從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報系列 第 23 篇

Day 23 | 降低維運疲勞 — 實作 SOAR 誤報過濾與動態白名單機制

  • 分享至 

  • xImage
  •  

大家好!歡迎來到鐵人賽第二十三天。

隨著我們前幾天將 SOAR 的防禦網建立得越來越完整(自動分析、聯防封鎖),系統的敏感度也隨之提高。在真實的企業環境中,這往往會帶來一個副作用:誤報(False Positives)。

例如,IT 團隊的網管人員每天都需要遠端登入伺服器,或者公司內部有定期的弱點掃描工具(如 Nessus)正在對網段進行掃描。這些正常的維運行為,很容易觸發 Wazuh 的暴力破解或攻擊告警。如果每一次都要資安人員在 LINE 上按「拒絕封鎖」,久而久之就會產生「告警疲勞(Alert Fatigue)」,甚至導致真正發生攻擊時被忽略。

因此,今天我們要為這套 SOAR 系統導入「動態白名單(Allowlist)與豁免機制」,讓系統學會辨識「自己人」,從源頭過濾掉已知的安全行為。


情境設定:內部弱掃工具豁免

假設公司內部的弱點掃描伺服器 IP 為 10.0.0.55。
當 Wazuh 偵測到來自這個 IP 的大量異常連線時,我們希望 n8n 在進入 AI 分析與 LINE 通報「之前」,就能先查閱「白名單資料庫」。如果是授權的 IP,就直接略過或僅作低級別紀錄;如果不是,才進入標準的防禦流程。


第一步:建立動態白名單資料庫

為了方便非技術人員(如 IT 主管)也能隨時新增或移除白名單,我們再次運用萬用的 Google Sheets。

  1. 開啟我們之前的「SecOps 資安自動化稽核日誌」試算表。
  2. 在底下新增一個工作表(Tab),命名為 「例外白名單 (Allowlist)」。
  3. 建立以下欄位:
  • IP Address (豁免的 IP)
  • Owner (申請人/負責人)
  • Reason (豁免原因,例如:內部弱掃主機)
  • Status (狀態:Active / Inactive)

在表格中輸入一筆測試資料,將 IP Address 填入 10.0.0.55,Status 設為 Active。


第二步:在工作流最前端加入「白名單檢查」

回到處理 Wazuh 告警的 n8n 工作流。我們要將「檢查」這個動作,安插在 Webhook 收到告警之後的第一關。

  1. 在 Webhook 節點 後方,立刻新增一個 Google Sheets 節點。
  2. Action:選擇 Lookup(在舊版 n8n 可能是 Read Rows 搭配 Filter)。
  3. Target:選擇剛剛建立的「例外白名單 (Allowlist)」工作表。
  4. Lookup Column:選擇 IP Address。
  5. Lookup Value:填入 Wazuh 告警傳來的來源 IP 變數 {{ $json.body.data.srcip }}。

這個節點的功用是:拿著攻擊者的 IP,去試算表裡面比對看看有沒有符合的紀錄。


第三步:使用 If 節點建立豁免分流

檢查完畢後,我們需要根據檢查結果來決定下一步。

在 Google Sheets 節點後方,新增一個 If 節點(條件判斷):

  • Condition 1 (條件 1):判斷 Google Sheets 是否有找到資料,並且該 IP 的 Status 是否為生效中。
  • 設定為:{{ $json.Status }} Equal Active。

If 節點會產生兩條分支:

  • True 分支(命中白名單):
    代表這個 IP 是自己人。我們可以在這裡接一個簡單的 Google Sheets Append Row 節點,在日誌中靜靜留下一筆「自動豁免」的紀錄,然後直接結束流程,不發送 LINE 告警。
  • False 分支(未命中白名單):
    代表這是真正的未知威脅。我們將這條分支連接到後續的 VirusTotal 情資查詢 ➡ Gemini AI 分析 ➡ LINE 人機審批 的標準 Playbook。

完整流程架構

經過今天的改良,我們的核心 SOAR 工作流變得更加成熟,架構如下:

Wazuh (觸發告警)
 ↓
Webhook
 ↓
Google Sheets (比對動態白名單)
 ↓
If 節點 (判斷是否為已知安全 IP)
 ├── True (命中白名單) ➡ 寫入豁免紀錄 ➡ 流程結束 (不打擾維運人員)
 │
 └── False (未知威脅) ➡ VirusTotal 查詢
                         ↓
                       Gemini AI 摘要
                         ↓
                       LINE 審批卡片
                         ↓
                       執行聯防封鎖


今天的成果

今天我們為 SOAR 系統實作了非常關鍵的「例外處理(Exception Handling)」機制。

一套好的自動化系統,不只要能精準打擊,還要能「減少噪音」。透過整合 Google Sheets 作為動態白名單,我們把系統調整規則的權力交還給了管理團隊,而且完全不需要動到任何程式碼。IT 人員只要在試算表上新增一行 IP,就能立刻讓該 IP 獲得豁免。

這大幅降低了資安團隊的「告警疲勞」,確保每一則傳送到 LINE 上的審批通知,都是真正需要人類介入處理的高價值威脅。

明天(Day 24),我們將探討資安維運中的另一個重要議題:「憑證與金鑰管理」。當 n8n 串接了這麼多外部 API(VirusTotal、LINE、Google),我們要如何確保這些敏感 Token 的安全?我們明天見!


上一篇
Day 22 | 識破社交工程 — 實作 SOAR 釣魚郵件自動化分析
下一篇
Day 24 | 守護自動化的心臟 :實作 n8n 憑證與金鑰安全管理
系列文
從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言