Homelab 對外開放,router firewall 點解唔夠:CrowdSec 分層防守
3C 產品

Homelab 對外開放,router firewall 點解唔夠:CrowdSec 分層防守

圖片:via XDA Developers — https://www.xda-developers.com/crowd-sourced-firewall-front-of-exposed-homelab-started-blocking-attacks/
TechLab 編輯部(譯)·

由封 port、分析 request 到自動封 IP,講清三層各自做咩

NAS、自架相簿、Home Assistant 一開 remote access,好多人第一個反應都係:「router 有 firewall,應該夠啦?」問題係 firewall 只識得按連線狀態、IP、port 同協定放行或者截停。當你刻意開放 HTTPS,或者用 Pangolin 建立由內向外嘅 tunnel,合法格式嘅 HTTP request 已經過咗第一關,之後要靠 reverse proxy、登入系統同應用本身處理。

XDA 作者實際見到咩

XDA 作者 Shekhar Vaidya 將公開服務放喺 Pangolin 後面,再喺 VPS 嘅 Traefik 加入 CrowdSec。佢話系統運行近一星期後,Traefik 查詢 CrowdSec 超過 8,000 次,當中約 38 個 request 俾 bouncer 擋低。本機亦錄得約 205 次偵測,而 dashboard 顯示超過 32,000 個來自 CrowdSec Central API 嘅 ban decision。

呢組數字只代表作者嗰套服務、設定同短期流量。38 次封鎖唔等於 38 次成功入侵,仲唔代表有人專登針對佢。 公開 IP 長期都有 scanner、bot、撞密碼工具同 CVE 探測器周圍試門口;至於 32,000 個社群 ban,主要係下載返嚟嘅封鎖決定,唔代表嗰批 IP 全部曾經連到作者部機。

Homelab 對外開放,router firewall 點解唔夠:CrowdSec 分層防守

圖片:Wikimedia Commons — Slick(CC0)

Router firewall 冇失職,只係睇唔到 HTTP 行為

作者屋企條寬頻喺 CGNAT 後面,Pangolin 嘅 Newt connector 主動連去有公開 IP 嘅 VPS,再由 Traefik 接收外來 request。咁行法之下,屋企部 Omada ER605 見到嘅主要係一條由內向外建立嘅連線,網上掃描亦先到 VPS。屋企 router 根本未必睇到每個公開 HTTP request,自然亦判斷唔到條 URL 似唔似漏洞探測。

VPS firewall 照樣重要:佢可以只留低 80、443,收起 SSH、database 同管理介面。不過 HTTPS request 去到已開放嘅 443,就輪到 Traefik 分流、驗證同記錄。呢度要補多句,reverse proxy 本身唔會自動修補後端 app;相簿系統或者 NAS 管理頁有漏洞,照樣要更新、限制權限同加多重驗證。

CrowdSec 入面其實有偵測同執行兩部分

CrowdSec Security Engine 會讀 Traefik access log,用 scenario 分析掃描、暴力登入、異常頻率等行為;AppSec 模式就可以直接分析同過濾支援嘅 web server 收到嘅 HTTP request。偵測結果經 Local API 變成 decision,跟住由 bouncer 喺 Traefik、iptables 或其他位置執行封鎖。裝咗引擎但冇 bouncer,只會見到 alert;裝咗 bouncer但讀錯 log,就只剩社群名單可以參考。

作者個設定用 Traefik plugin 做 bouncer,亦因為漏咗換走示例 API key,令六個公開服務一度全部失效約十分鐘。呢個插曲幾有代表性:安全 middleware 擺喺所有 request 必經位置,一個 key、container health check 或設定檔出錯,影響可以大過後端單一服務死機。部署時要預留 bypass、rollback 同獨立管理入口。

社群名單有代價,誤封亦要預

CrowdSec 官方文件寫明,Security Engine 預設會向 Central API 傳送合資格 alert 嘅 metadata,當中包括觸發咗邊個 scenario、時間、machine ID、來源 IP 同可用嘅地理資料;用戶可以退出分享。自訂、改動過或者手動建立嘅 scenario,未連接 Console 時一般唔會照常上傳。

共享來源 IP 可以令其他節點提早擋住已知惡意流量,不過 IP 會轉手、住宅寬頻會共用出口,CDN、VPN 同正常 scanner 亦可能撞中規則。CrowdSec 有白名單、simulation mode 同 false-positive 分類,實際部署仍然要睇 alert 原始 log。官方聲稱自家名單經整理,但第三方名單連官方都冇保證完全冇誤封。

對外開放前,跟呢張清單執一次

**先減少公開面:**只畀自己或家人用嘅服務,優先設成 Pangolin private resource、VPN 或強制登入;管理頁、SSH、database 同 CrowdSec Local API 唔好直接公開。**再核對來源 IP:**前面有 CDN、load balancer 或另一層 proxy,就只信任指定 forwardedHeaders.trustedIPs,唔好長開信任所有 forwarded header,否則攻擊者有機會偽造來源 IP,令偵測同封鎖對錯人。

**跟住驗證成條鏈:**確認 Traefik access log 有真實 client IP、CrowdSec parser 有成功讀取、scenario 有觸發、bouncer 有查 decision,仲要幫 log 做 rotation。先用 simulation 或短時間 ban 測試,將固定管理 IP 加入白名單,再測 rollback。最後固定兼容版本、備份設定,同時更新公開 app、開多重驗證及限制登入次數,唔好用 CrowdSec 代替基本保養。

如果你只用 NAS app 偶爾返屋企攞檔,保持服務私有通常簡單過長期公開。真係要畀外人瀏覽相簿或者用自架服務,router firewall、reverse proxy、身份驗證、更新同 CrowdSec 呢類自動偵測工具就要一齊顧,仲要定期翻查誤封同失效情況。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook