SSH 安全強化
SSH 安全性會依 Host 登入記錄、失敗次數、地區與 CIDR 規則維護封鎖清單。它保護的是 Host SSH 入口,不是 fn-knock 的 HTTP 身分驗證,也不能取代 SSH Key、停用弱密碼登入與系統更新。
此功能需要讀取 Host SSH Log 並管理防火牆。目前只有飛牛 fnOS 原生 FPK 提供完整功能;OpenWrt 在 Runtime 中明確停用,Docker、通用 Linux、群暉 DSM 7 SPK 與 Windows x86_64 也不提供完整功能。頁面顯示「目前環境無法使用」時,應在 Host 或上游防火牆設定 SSH 防護。
啟用前請保留可用的本機 Console 或可信任網路復原方式,避免封鎖目前的管理出口。
功能開關與頁面入口
- 在
系統設定 → 功能中啟用「SSH 安全性」選單。 - 開啟
SSH 安全性,確認摘要中的可用狀態、偵測到的 SSH 連接埠、允許 CIDR 數量與有效封鎖數量。 - 展開「SSH 安全性設定」並儲存規則;儲存成功後會立即套用。SSH 連接埠或 Host 防火牆狀態改變時,再執行「同步防火牆」重建規則。
功能選單開關會控制頁面與後台功能是否啟用;設定卡片中的「啟用 SSH 安全性」則決定是否依 Log、地區與臨界值執行防護。儲存設定時,允許 CIDR 與有效封鎖會立即下發至偵測到的 SSH 連接埠;「同步防火牆」用於在連接埠、規則鏈或其他防火牆狀態改變後重新下發。
設定欄位
| 欄位 | 預設值與範圍 | 作用 |
|---|---|---|
| 啟用 SSH 安全性 | 預設關閉 | 監聽 SSH 登入 Log,並依臨界值或來源範圍維護封鎖 |
| 時間窗 | 預設 10 分鐘,1~1440 分鐘 | 統計同一來源在此時間窗內的失敗次數 |
| 失敗臨界值 | 預設 5 次,1~1000 次 | 達到臨界值後加入封鎖清單 |
| 封鎖時間 | 預設 1 天,數值 1~365 | 單位可選分鐘、小時或天;到期後自動解除 |
| 允許存取 SSH 的地區 | 預設空白 | 空白時不限制地區;非空白時只允許所選地區、自訂 CIDR 與內建本機來源 |
| 自訂 CIDR | 預設空白,每行一筆 | 補上非標準 VPN、辦公室公網出口或其他固定 IPv4/IPv6 網段 |
地區可依省、市與電信業者選擇。依中國電信、聯通或移動細分 CIDR,需要 CIDR 位址資料庫 0.1.3 或更新版本。無法載入地區清單時,不要送出未經核對的限制範圍,可先只使用固定 CIDR。
內建本機來源包括 loopback、RFC 1918 私有網路、IPv4 鏈路本機、Tailscale 使用的 100.64.0.0/10,以及 IPv6 ULA/鏈路本機位址。這些來源不受地區或失敗次數封鎖,因此 Tailscale 存取仍應由 Tailnet ACL 控制。Headscale、WireGuard、ZeroTier 等若使用其他位址池,需將實際來源網段加入自訂 CIDR。
頁面會驗證自訂 CIDR;只要有格式錯誤就無法儲存。加入地區限制前,應先將目前的可信任出口與備援管理網路加入自訂 CIDR。
同步與清除防火牆
「同步防火牆」會重新偵測 SSH 連接埠,並將目前允許的 CIDR 與有效封鎖寫入 fn-knock 管理的防火牆規則。成功提示會顯示:
- 下發的允許 CIDR 數量;
- 重新同步的有效封鎖數量;
- 偵測到並套用規則的 SSH 連接埠。
SSH 服務變更連接埠、系統防火牆重新載入,或規則狀態與頁面不一致時,應再次執行同步。
「清除 SSH 防火牆」會刪除 FN-KNOCK-SSH Rule Chain,並將目前有效封鎖標記為已解除。已儲存的地區、CIDR、臨界值與時間設定不會刪除;後續再次同步時,會依已儲存設定重新建立規則。
登入 Log
「登入 Log」分頁支援搜尋 IP、使用者或原始 Log,也可依全部、成功、失敗篩選。每筆記錄包括:
- 時間與登入結果;
- 使用者名稱,以及失敗時的無效使用者標記;
- 來源 IP 與地理位置;
- 驗證方式與 SSH 連接埠;
- 供搜尋與疑難排解使用的原始 Log 資訊。
如果頁面長期沒有記錄,請先確認部署平台支援此功能、SSH 服務正在寫入系統 Log,並檢查 fn-knock 服務是否具備讀取 Log 的權限。
封鎖清單
「封鎖清單」會顯示來源 IP、地理位置、封鎖時間、到期時間、原因、失敗次數與當時的臨界值。封鎖原因包括:
- 來源不在允許地區或自訂 CIDR 中;
- 時間窗內的登入失敗次數達到臨界值。
頁面支援搜尋、分頁、單筆解除與批次解除。解除操作會將 IP 從此功能管理的防火牆規則中移除;若同一來源之後再次違反規則,仍會重新遭到封鎖。
建議設定順序
- 維持地區限制為空白,只設定較寬鬆的失敗臨界值與封鎖時間。
- 儲存後,分別從可信任網路與測試網路驗證 SSH 登入。
- 查看登入 Log 是否正確識別使用者、來源 IP、驗證方式與連接埠。
- 將固定 VPN、辦公室出口與備援網路加入自訂 CIDR。
- 再加入地區限制並儲存,分別從允許與不允許的來源驗證一次。
- 確認封鎖、到期解除、手動解除與再次觸發都符合預期。
地區與 CIDR 只能輔助判斷。行動網路、企業出口與 VPN 的地理位置可能變動;對管理入口而言,SSH Key、停用密碼登入、最小允許 CIDR、獨立 VPN 通道與上游防火牆限制更可靠。
常見問題
儲存後規則狀態與頁面不一致
執行「同步防火牆」,並核對成功提示中的 SSH 連接埠。若 Host 上有其他防火牆管理程式覆寫規則,應在其重新載入後再次同步。
管理出口遭誤封鎖
請優先從本機 Console 進入系統,在封鎖清單中解除對應 IP;無法進入頁面時,可清除 FN-KNOCK-SSH Rule Chain 或停用此功能,再補上可信任 CIDR 後重新同步。
地區與實際位置不一致
檢查 IP 地理位置服務與 CIDR 位址資料庫版本。Proxy、VPN、CGNAT 與電信業者的 IP 調度,都可能使來源地理位置與實際位置不同。
