(Day 13)談到如何用 n8n + ThreatView/Blocklist 自動化處理情資,今天換個角度,直接把外部 Threat Feed 匯入到 SonicWall 防火牆。
這篇算是對比 Fortinet 的做法,看看 SonicWall 在操作與限制上的差異,並示範如何結合爬蟲與 API/SSH,自動化「黑名單匯入」。
Day 17提到的資安院獎金獵人備賽過程,因為Day 18-19已經寫了,所以還是放一下好了😂
首先,要讓防火牆可以接受批次設定,需開啟 SSH 管理功能。
登入 SonicWall Web 管理界面 → System / Device → Administration
進入 Network → Interfaces,確認要啟用 SSH 的介面允許 Management Access。
測試連線:
ssh admin@<firewall-ip> -p 22
🔒 安全建議
我們要抓取的清單如下:
feeds = {
"ThreatView_IP_High": "https://threatview.io/Downloads/IP-High-Confidence-Feed.txt",
"blocklist.de_all": "https://lists.blocklist.de/lists/all.txt",
"FireHOL_Level1": "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level1.netset",
"DShield_Block": "https://feeds.dshield.org/block.txt",
}
import requests
def fetch_feed(url):
resp = requests.get(url, timeout=10)
resp.raise_for_status()
return [line.strip() for line in resp.text.splitlines() if line and not line.startswith("#")]
ips = []
for name, url in feeds.items():
ips.extend(fetch_feed(url))
# 去重
ips = sorted(set(ips))
print(f"共收集 {len(ips)} 個惡意 IP")
匯入 CSV → Address Objects → Address Group → Firewall Rule。
範例 CSV 格式:
name,type,zone,ip,netmask,comment
bad-91.245.255.43,host,LAN,91.245.255.43,255.255.255.255,Threatview 2025-09-17
bad-94.198.54.61,host,LAN,94.198.54.61,255.255.255.255,Threatview 2025-09-17
新版 SonicOS 支援 API,可以自動化批次建立 Address Object:
API_URL="https://<FW_IP>/api/sonicos/config/addressObjects"
USER="admin"
PASS="YourPassword"
curl -k -u ${USER}:${PASS} -H "Content-Type: application/json" \
-X POST "${API_URL}" \
-d '{
"name": "bad-91.245.255.43",
"type": "IPv4",
"ip": "91.245.255.43",
"netmask": "255.255.255.255",
"comment": "Threatview OSINT 2025-09-17"
}'
👉 你可以寫一個 Python/cron job,把每天的 Feed 轉成 JSON → 丟到 SonicWall API。
若 CLI 支援,可以用 paramiko/expect
一次下指令:
for ip in $(cat bad_ips.txt); do
ssh -p 22 admin@<FW_IP> "configure; address-object ipv4 add name bad-${ip} ip ${ip} netmask 255.255.255.255; exit"
done
flowchart TD
A[Threat Intelligence Feeds] -->|HTTP GET| B[Python 爬蟲收集 IP]
B --> C[格式轉換 CSV/JSON]
C --> D{SonicWall 匯入方式}
D -->|REST API| E[自動建立 Address Objects]
D -->|GUI 匯入| F[人工驗證少量測試]
D -->|SSH 指令| G[批次下 CLI]
E --> H[建立 Address Group → 防火牆規則 Deny]
F --> H
G --> H
H --> I[Log/Monitor → SIEM/EDR]
這篇示範了如何把外部情資(Threat Feed)整合進 SonicWall 防火牆,並且用 API/爬蟲達成自動化。
雖然 SonicWall 在「大量匯入黑名單」的靈活度上不如 Fortinet,但透過 REST API 搭配腳本,依然能做到每天自動更新、批次封鎖惡意 IP。
安全策略不是「一次匯入就好」,而是持續更新。
有了這套流程,我們就能把外部 Threat Intelligence 轉化為可落地的 防火牆阻擋規則,提升整體防護力。