iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
AI 自動化

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

Day 16|SecOps 的最後一道防線:實作 Human-in-the-Loop 審批

  • 分享至 

  • xImage
  •  

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

前幾天我們已經完成:

Wazuh → FastAPI → n8n → CVE API → AI → LINE

現在系統可以自動偵測漏洞、查詢情報並交給 AI 分析。

但如果下一步要讓 AI 自動執行伺服器修補,風險就會提高。因此今天加入 Human-in-the-Loop(HITL):

AI 負責分析,人類確認後,系統才執行修補。

今天主要實作三個部分:

LINE 審批
   ↓
Wait 等待
   ↓
SSH 修補

一、讓 n8n 可以被外部連線

因為我們的 n8n 是跑在 localhost:

http://localhost:5678

LINE 無法直接連進來,所以測試環境先使用 ngrok。

下載並解壓縮 ngrok.exe 後,在 PowerShell 執行:

.\ngrok config add-authtoken 你的_AUTH_TOKEN

接著建立 Tunnel:

.\ngrok http 5678

成功後會看到類似:

https://xxxx.ngrok-free.app

把這個網址先記下來。

實際部署時不建議直接將 n8n 服務暴露在公開網路,這裡主要是為了測試 Webhook。


請依照以下步驟完成安裝與設定:

下載與註冊 ngrok 帳號

  1. 前往 ngrok 官網,點擊「Sign up」免費註冊(直接用 Google 帳號登入最快)。
  2. 進入後台儀表板後,點擊「Download for Windows」下載 zip 壓縮檔。
  3. 下載後解壓縮,裡面只會有一個 ngrok.exe 檔案。
    為了方便終端機呼叫,請將這個檔案直接拖曳放到你專案的根目錄下。
    綁定授權金鑰 (Authtoken)

目前 ngrok 規定必須綁定帳號才能開啟 HTTP 隧道。請回到 ngrok 網頁儀表板,在左側選單點擊「Your Authtoken」,複製那串專屬的授權碼。

  1. 打開 PowerShell,確認路徑在 C:\Users\user\secops-project> 下,輸入以下指令綁定你的電腦:
    .\ngrok config add-authtoken
    啟動外網隧道

  2. 綁定完成後,直接輸入啟動指令,指定你要對外開放的 n8n 通訊埠 (5678):
    .\ngrok http 5678
    執行後,PowerShell 畫面會變成一個監控面板。請找到 Forwarding 那一行,後面跟著的一串網址(類似 https://abcd-1234.ngrok-free.app),這就是你 n8n 的專屬外網分身。

現在,只要把這串網址複製下來,放進 n8n 裡面 LINE 節點的 uri 欄位中(替換掉原本的文字),再送出測試告警,你在手機上按下的「授權執行自動修補」按鈕就能完美穿透網路,精準觸發你電腦裡的 Wait 節點了!


二、加入 Wait 節點

回到 n8n,在 AI 節點後面新增:

Wait

將 Resume 設定為:

On Webhook Call

流程變成:

AI
 ↓
Wait ⏸
 ↓
SSH

當 Workflow 執行到 Wait 時,就會暫停。

只有收到指定的 Webhook Request 後,才會繼續往下執行。


三、建立 LINE 審批通知

在 Wait 前面新增一個 HTTP Request 節點,呼叫 LINE Messaging API。

設定:

Method:POST

URL:
https://api.line.me/v2/bot/message/push

Body Content Type:
JSON

Body 可以先使用簡單的按鈕訊息:

{
  "to": "你的_USER_ID",
  "messages": [
    {
      "type": "template",
      "altText": "資安修補需要人工確認",
      "template": {
        "type": "buttons",
        "title": "資安漏洞修補",
        "text": "偵測到高風險漏洞,是否允許執行修補?",
        "actions": [
          {
            "type": "uri",
            "label": "✅ 確認修補",
            "uri": "你的_Wait_Webhook_URL"
          }
        ]
      }
    }
  ]
}

這裡的 Wait_Webhook_URL 要使用 Wait 節點實際產生的 Webhook URL。

所以流程就是:

n8n
 ↓
LINE 發送審批訊息
 ↓
使用者按下「確認修補」
 ↓
呼叫 Wait Webhook
 ↓
Workflow 繼續

四、連接 SSH 執行修補

接著把 Wait 節點連到 SSH 節點:

LINE
 ↓
Wait
 ↓
SSH

SSH 節點可以先在測試環境執行:

sudo apt-get update

如果要進一步更新指定套件,再根據測試環境加入對應指令。

⚠️ 建議先使用測試 VM,不要直接對正式主機執行自動修補。


五、修補完成後通知 LINE

SSH 執行成功後,再接一個 HTTP Request 節點。

傳送:

{
  "to": "你的_USER_ID",
  "messages": [
    {
      "type": "text",
      "text": "✅ 人工審批完成\n\n伺服器修補指令已成功執行。"
    }
  ]
}

最後的完整流程:

Wazuh
 ↓
FastAPI
 ↓
n8n
 ↓
CVE API
 ↓
AI
 ↓
LINE 審批
 ↓
Wait ⏸
 ↓
人工確認
 ↓
SSH 修補
 ↓
LINE 回報

六、實際測試

現在執行 Workflow。

正常情況下,n8n 會停在:

Wait ⏸

此時手機 LINE 收到:

⚠️ 偵測到高風險漏洞
是否允許執行修補?

按下 「確認修補」。

如果 Webhook 設定正確,Wait 節點就會繼續執行:

Wait
 ↓
SSH
 ↓
修補完成
 ↓
LINE 通知

到這裡,我們就完成了最基本的 Human-in-the-Loop。

今天的重點不是讓 AI 完全取代人,而是讓 AI 處理前面的情報分析與流程工作,真正具有影響性的操作則保留人工確認。

明天我們繼續處理下一個問題:

這些告警與審批紀錄,要怎麼留下來,讓我們之後可以查詢與稽核?

Day 17,我們將開始建立資安事件的紀錄與追蹤機制。


上一篇
Day 15|替系統裝上大腦:導入 AI 節點,實作 RAG 漏洞情報自動摘要
系列文
從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言