iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
AI 自動化

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

Day 10 : 實作系統解耦-使用 Docker 部署 n8n 開源自動化工作流

  • 分享至 

  • xImage
  •  

在前幾天的實作中,我們成功利用 FastAPI 攔截並解析了 Wazuh 的告警日誌。現在,威脅情報已經整整齊齊地存放在 Python 的變數裡了。

接下來面臨的問題是:我們該怎麼把這些情報發出去?

傳統的做法是直接在 FastAPI 裡面寫發送請求的程式碼,例如直接寫 Code 去呼叫 LINE Messaging API。但這樣會帶來一個問題——每次想要更換通知管道,或者想修改推播訊息的排版,我們都必須修改 Python 程式碼並重新啟動伺服器。在企業級的 SecOps 架構中,我們通常會追求「解耦(Decoupling)」,讓負責「解析資料」的後端與負責「發送通知」的流程完全分開。

今天,我們要引入這套專案的最後一塊核心拼圖:n8n。這是一款強大且開源的自動化工作流工具,能讓我們用「拉節點」的視覺化方式,輕鬆串接各種第三方通訊軟體。

為什麼選擇 n8n?

你可能聽過 Zapier 或 Make 等自動化工具,它們雖然好用,但免費版通常有嚴格的執行次數限制,而且將企業機敏的資安日誌直接傳到外部雲端也有資安疑慮。

n8n 最大的優勢在於:它開源且支援本地端 Docker 部署。這意味著我們可以把它架設在自己的內網,資料不會外流,而且執行次數完全沒有限制。這對於每天可能產生大量告警的資安監控系統來說,絕對是首選。

動手部署 n8n

還記得我們在 Day 03 建立的 secops-project 資料夾嗎?裡面有一個為今天準備好的 n8n 子目錄。請打開 PowerShell,跟著以下步驟進行部署:

  1. 進入目錄並建立設定檔
cd C:\Users\user\secops-project\n8n
New-Item docker-compose.yml
  1. 撰寫 Docker Compose 檔案
    利用 VS Code 打開這個 docker-compose.yml,並貼上以下配置:

YAML
version: "3.8"

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: secops-n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=0.0.0.0
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      # 設定時區,確保通知的時間戳記正確
      - GENERIC_TIMEZONE=Asia/Taipei
    volumes:
      # 掛載本地資料夾以保存工作流設定,避免重啟後資料遺失
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

這段配置非常輕量,我們將 n8n 的服務綁定在主機的 5678 Port,並設定了台北時區(這對於資安事件發生時間的準確度非常重要),同時利用 Volume 確保我們畫好的工作流不會因為容器關閉而消失。

  1. 啟動 n8n 容器
    在終端機輸入啟動指令:
docker compose up -d

稍等幾十秒,讓系統拉取映像檔並啟動容器。

初次登入與設定

啟動完成後,打開瀏覽器輸入:http://localhost:5678

第一次進入 n8n 時,系統會要求你建立一組管理員帳號(Set up owner account)。因為這只是在我們自己電腦上的本地端測試,你可以隨意設定一組好記的 Email 與密碼,甚至跳過後續的行銷問卷調查。

登入後,你就會看到一個乾淨、充滿無限可能的畫布(Canvas)。這就是我們未來幾天要大展身手的地方。

系統架構回顧

在我們開始畫工作流之前,讓我們先釐清目前為止建立起來的「微服務架構」:

  1. Wazuh (威脅感知):在第一線偵測 Ubuntu 主機的 CVE 漏洞,並發送 Webhook。
  2. FastAPI (情報過濾):接收雜亂的日誌,利用 Pydantic 進行型別驗證,萃取出乾淨的情報。
  3. n8n (自動化分派):這將是我們明天的重點,它會提供一支 Webhook 網址給 FastAPI 呼叫,然後把這些情報排版成易讀的訊息,透過 LINE Bot 精準發送到我們的手機裡。

透過這樣職責分明的架構,未來無論是掃描規則改變、後端解析邏輯優化,或是想新增其他的通知管道,我們都只需要修改對應的組件,而不用牽一髮動全身。

今天我們順利把 n8n 的地基打好了。明天,我們就要正式在畫布上拉出第一條工作流,並把 FastAPI 的資料成功轉發進來,一路推播到 LINE 上!我們明天見!


上一篇
Day 09 : 拆解資安包裹-在 FastAPI 解析 Wazuh JSON 告警結構
下一篇
Day 11 : 視覺化工作流起步-在 n8n 建立 Webhook 與 FastAPI 串接
系列文
從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報 共 11 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言