大家好!歡迎來到鐵人賽第二十天。
前幾天,我們建立了一套非常強大的「突發事件」處理機制,當駭客攻擊或漏洞出現時,系統能自動攔截、分析並聯防。然而,在真實的資安維運(SecOps)日常中,並不是每天都有驚心動魄的駭客攻防;工程師更多時候是在做繁瑣的「例行巡檢」—— 確認所有伺服器的防護軟體有沒有正常運作、統計昨天發生了多少次低風險告警、確認合規性狀態等。
如果這些例行公事每天都要人工登入 Wazuh 後台截圖、寫報告,不僅耗時,還容易因為怠惰而疏漏。因此,今天我們要運用 n8n 實作「日常資安巡檢與報表自動化」,讓 SOAR 系統每天早上 8 點自動幫你把巡檢報告整理好,直接送到你的 LINE 裡。
我們希望 n8n 每天早上固定執行以下任務:
過去我們都是使用 Webhook 來被動接收 Wazuh 的告警(這屬於被動觸發)。今天我們要讓 n8n 「主動」出擊。
Days(每天)。08:00(或是你偏好的上班時間)。設定完成後,這個節點就會像鬧鐘一樣,每天早上準時喚醒後面的工作流。
接下來,我們要讓 n8n 主動去問 Wazuh:「現在大家的狀態還好嗎?」
GET
https://你的_Wazuh_IP:55000/agents?status=disconnected透過這個節點,我們就能抓出所有「防護代理程式離線」的問題主機,這通常代表該主機當機,或是有異常狀況導致防護失效。
Wazuh API 回傳的資料通常是巢狀的 JSON,為了讓後面的 Gemini AI 更好理解,我們可以用一個簡單的 Code 節點來萃取關鍵數據。
在 HTTP Request 後方新增一個 Code 節點,輸入以下簡單的 JavaScript 整理邏輯:
// 取得斷線的主機數量與清單
const disconnectedAgents = $input.item.json.data.affected_items || [];
const count = disconnectedAgents.length;
const agentNames = disconnectedAgents.map(agent => agent.name).join(", ");
return {
json: {
report_date: new Date().toLocaleDateString(),
disconnected_count: count,
disconnected_names: count > 0 ? agentNames : "無斷線主機,全數正常連線中"
}
};
把整理好的數據交給 AI,讓它幫我們寫出一份專業的晨間報告。
新增一個 Google Gemini (Message a model) 節點:
你是一位企業 IT 部門的資安助理。請根據我提供的巡檢數據,產出一份專業、簡潔的「資安巡檢早報」。語氣要像是在向 IT 主管匯報,請使用繁體中文,字數控制在 150 字以內,並附上適當的 Emoji。
巡檢日期:{{ $json.report_date }}
防護端點斷線數量:{{ $json.disconnected_count }}
異常主機名單:{{ $json.disconnected_names }}
最後,把 Gemini 寫好的報告發送到團隊的 LINE 群組中。
新增最後一個 LINE HTTP Request 節點:
[https://api.line.me/v2/bot/message/push](https://api.line.me/v2/bot/message/push)
{
"to": "你的_LINE_群組_ID",
"messages": [
{
"type": "text",
"text": "🌞 【IT 團隊早安】系統自動巡檢報告已出爐\n\n{{ $json.text }}"
}
]
}
今天的自動化報表工作流會長這樣:
Schedule Trigger (每天早上 08:00 觸發)
↓
HTTP Request (呼叫 Wazuh API 檢查斷線主機)
↓
Code (整理 JSON 數據)
↓
Gemini AI (根據數據生成專業早報)
↓
HTTP Request (發送早報至 LINE)
你可以點擊畫布下方的 Test Workflow 來手動測試一次。如果設定正確,你的 LINE 應該會立刻收到類似這樣的訊息:
🌞 【IT 團隊早安】系統自動巡檢報告已出爐
主管早安,為您呈報今日(2026/XX/XX)的資安巡檢結果:
🟢 目前全數伺服器防護端點皆正常連線中,無發現異常斷線之主機 (0 台)。
系統防護網運作順暢,祝各位今天維運順利!☕
透過今天的實作,我們將 SOAR 架構的應用範圍從「被動防禦」擴展到了「主動巡檢」。
資安維運不應該只有在出事的時候才忙碌,平時的健康度檢查(Health Check)同樣重要。運用 n8n 的排程功能與 AI 的總結能力,我們成功把原本需要每天花 15 分鐘登入系統、肉眼檢查、寫報告的例行公事,變成了全自動的流程,讓工程師能把時間花在更有價值的地方。
明天(Day 21),我們將針對「資料保存」進行優化。這些每天產生的告警與報表如果一直塞在資料庫裡,遲早會面臨儲存空間不足的問題。我們將實作如何讓系統自動把過期的日誌打包並備份到雲端空間!我們明天見!