很多公司都有一台 NAS,放檔案、做備份,為了方便從外面存取,也會把管理介面或登入服務開到網際網路上。
我們自己的 NAS 就遇過一次:被暴力破解登入打到整台卡死,約 8 小時無法使用。更值得一提的是,查下去之後發現,原本以為有在保護它的幾道防線,其實都沒有作用。
一、卡死的原因,是從紀錄裡「看」出來的
NAS 卡住時,第一個反應通常是猜:硬碟壞了?更新出問題?我們沒有用猜的,而是看兩樣東西:
1. 各時段的系統紀錄筆數
| 時段 | 紀錄筆數 |
|---|---|
| 04 點 | 257 |
| 05 點 | 2,138 |
| 06 點 | 6,327 |
| 07~09 點 | 0(機器卡到連紀錄都寫不進去) |
| 10 點 | 14,199 |
2. 記憶體耗盡當下的程序快照
當下有一千多個處理登入驗證的程序同時在跑,每個約佔 20MB,而機器的記憶體不到 4GB。
兩者對起來,答案很清楚:大量登入嘗試同時湧入,每一個都佔用記憶體,直到整台機器被吃光。
二、內建的自動封鎖,為什麼一個都沒攔到?
NAS 通常有「自動封鎖」功能:同一個 IP 在短時間內登入失敗太多次,就把它封鎖。當時的門檻是 5 分鐘內失敗 10 次。
但這一波攻擊的樣子是:
- 971 個不同的來源 IP;
- 每個 IP 平均只試 2.5 次就換下一個。
每個 IP 都遠遠不到 10 次,所以一個都攔不到。凡是「按來源 IP 計次」的防護,對這種攻擊方式都沒有效果。

圖:每個來源只試兩三次就換人,「同一人敲 10 次才擋」的規則永遠等不到第 10 次;防火牆也要 IPv4 和 IPv6 兩邊都擋。
三、加記憶體,也救不了
直覺的解法是加記憶體。我們算了一下:
- 一千多個程序 × 每個約 20MB ≈ 21GB;
- 這台機器記憶體擴充到最大,再加上虛擬記憶體,合計約 20.4GB。
需求比上限還大。加記憶體只能撐久一點,不能解決問題;真正要做的,是讓這些連線根本進不來。
四、查下去,防線比想像中少
- 防火牆顯示「已啟用」,但第一條規則是「全部允許」。管理畫面看起來有防火牆,實際上什麼都沒擋。
- 封鎖規則只存在記憶體裡,NAS 一重開機就消失。
- IPv6 可以整個繞過:這台 NAS 有公網 IPv6,各項服務也都在 IPv6 上提供,但 IPv6 沒有設定任何防火牆規則。就算 IPv4 擋住了,攻擊者改走 IPv6 一樣進得來。
五、我們做的處理
- 封鎖規則改成 IPv4 與 IPv6 兩邊都擋;
- 規則設成開機時自動套用,不會因為重開機而消失;
- 加上每分鐘一次的監控:檢查登入驗證程序的數量和可用記憶體。平常大約 20 多個,超過一定數量就發出警告。
圖:每一層原本擋了什麼、處理後擋了什麼。按 IP 計次的自動封鎖對這種攻擊仍然無效,所以真正的防線放在防火牆,IPv4 和 IPv6 兩邊都要有。
六、怎麼確認「真的有效」?
規則改完,不能只看管理畫面說「已生效」。我們從外部一台有真實 IPv6 的機器實際去連:
- 應該擋住的服務,確認連不進來;
- 刻意保留給自己用的連線,確認還連得上。
有擋住、也有連得通,兩種結果都看到,才能證明規則是照我們想的方式運作;如果只測到「連不上」,也可能只是網路本身不通。
七、監控本身也會出錯
這次還抓到我們自己的一個錯誤:監控程式的第一版,用的指令只看得到它自己的程序。實際有將近 500 個程序,它只讀到 2 個。
這種錯誤最危險,因為它不會報錯,指標永遠很低,看起來就像系統很健康。我們後來在監控裡加了一道自我檢查:如果它讀到的數字低得不合理,就表示監控自己「瞎掉」了,會另外發出通知。
你可以先問自己的幾個問題
- 你的 NAS 有公網 IPv6 嗎?防火牆規則有套用到 IPv6 嗎?
- 管理畫面顯示「防火牆已啟用」,你從外部實際連過一次,確認它真的有擋嗎?
- 封鎖規則在重開機之後還在嗎?
- 自動封鎖是「同一個 IP 試 N 次才封」嗎?如果攻擊者每個 IP 只試兩三次就換呢?
- NAS 的管理介面,真的需要對整個網際網路開放嗎?
系統上線時,我們會一併檢查對外開放的服務與防火牆規則。想了解我們的做法,可以參考 系統開發・平台建置 服務說明,或直接 與我們聯繫。