大家好!歡迎來到鐵人賽第十六天。
前幾天我們已經完成:
Wazuh → FastAPI → n8n → CVE API → AI → LINE
現在系統可以自動偵測漏洞、查詢情報並交給 AI 分析。
但如果下一步要讓 AI 自動執行伺服器修補,風險就會提高。因此今天加入 Human-in-the-Loop(HITL):
AI 負責分析,人類確認後,系統才執行修補。
今天主要實作三個部分:
LINE 審批
↓
Wait 等待
↓
SSH 修補
因為我們的 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 帳號
目前 ngrok 規定必須綁定帳號才能開啟 HTTP 隧道。請回到 ngrok 網頁儀表板,在左側選單點擊「Your Authtoken」,複製那串專屬的授權碼。
打開 PowerShell,確認路徑在 C:\Users\user\secops-project> 下,輸入以下指令綁定你的電腦:.\ngrok config add-authtoken
啟動外網隧道
綁定完成後,直接輸入啟動指令,指定你要對外開放的 n8n 通訊埠 (5678):.\ngrok http 5678
執行後,PowerShell 畫面會變成一個監控面板。請找到 Forwarding 那一行,後面跟著的一串網址(類似 https://abcd-1234.ngrok-free.app),這就是你 n8n 的專屬外網分身。
現在,只要把這串網址複製下來,放進 n8n 裡面 LINE 節點的 uri 欄位中(替換掉原本的文字),再送出測試告警,你在手機上按下的「授權執行自動修補」按鈕就能完美穿透網路,精準觸發你電腦裡的 Wait 節點了!
回到 n8n,在 AI 節點後面新增:
Wait
將 Resume 設定為:
On Webhook Call
流程變成:
AI
↓
Wait ⏸
↓
SSH
當 Workflow 執行到 Wait 時,就會暫停。
只有收到指定的 Webhook Request 後,才會繼續往下執行。
在 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 繼續
接著把 Wait 節點連到 SSH 節點:
LINE
↓
Wait
↓
SSH
SSH 節點可以先在測試環境執行:
sudo apt-get update
如果要進一步更新指定套件,再根據測試環境加入對應指令。
⚠️ 建議先使用測試 VM,不要直接對正式主機執行自動修補。
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,我們將開始建立資安事件的紀錄與追蹤機制。