昨天我們把系統的資料流向都定義清楚了,今天終於要來挑選我們的開發武器,並開始動手寫 code 架環境!
為什麼會選這些工具呢?其實都是考量到實作的方便性跟後續的維護性。
在威脅感知的部分,我們同時使用了 Wazuh 來看主機端的系統日誌,以及 Suricata 來監聽網路端的惡意流量,這樣內外夾攻才不會有防禦死角。
至於中間負責驗證的 Backend API,我預計會使用 Python 的 FastAPI 來寫。Python 寫起來比較直覺,而且之後要接 AI 跟 RAG 相關的套件(像 LangChain)也最自然。資料庫的部分,我們選擇使用大家最熟悉、社群資源也最豐富的 MySQL 來記錄主機資產與軟體版本,不僅建置快速,後續擴充欄位也相當方便。
自動化編排則是挑選了 n8n。相較於自己手刻一堆 Python 腳本來串接 LINE API,n8n 這種視覺化的流程工具在後續擴充跟除錯上真的友善太多了,板塊拉一拉就能看到資料流向。
因為這系列會用到非常多不同的服務,為了不把自己的電腦弄得亂七八糟,我們統一使用 Docker 來進行容器化管理。
大家可以先在電腦裡開一個專案資料夾,並在裡面建立 backend、n8n 跟 wazuh 等子目錄,這樣版控也會比較乾淨。接著,我們先來寫一個最基礎的 docker-compose.yml 骨架:
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
volumes:
- ./backend:/app
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
volumes:
- ./n8n_data:/home/node/.n8n
建好大致會像下面這樣
這只是一個非常簡單的起手式雛形,先讓我們的後端與自動化引擎有個家。接下來的每一天,我們會依照進度慢慢把 MySQL、Wazuh 還有其他的設定給一步步填補進去。
今天我們先把基礎環境的地基打好,把資料夾結構理清楚,免得後面服務一多,電腦就先崩潰了。明天,我們就要正式把這套系統的核心眼睛——Wazuh Server 給架設起來,我們明天見!