FlintGuard
一款管理GL.iNet Wi-Fi路由器的行動與網頁App:從推播通知核准或封鎖新裝置,把家用網路掌握在手中。


挑戰
家用路由器的管理後台是為網路工程師設計的,而不是為只想看看有哪些裝置連著、替某台裝置暫停上網的家長設計的。
方案
- 先做資安稽核: 對路由器的基準檢查發現,SSH與HTTPS可從網際網路連線,SSH密碼登入也處於開啟狀態;我們關閉了7條WAN規則,停用密碼登入,並檢查路由器是否有遭入侵的跡象。
- SDK與工具: 路由器JSON-RPC API的型別化用戶端,具備防止把自己鎖在外面的保護機制;針對真實路由器、會還原每項變更的合約測試;命令列工具;9份架構決策記錄。
- App: 附篩選的裝置列表,可重新命名、設定設定檔與一鍵斷網的裝置卡片,事件記錄,附Allow與Block按鈕的「待處理」裝置,路由器本身清單之外的已封鎖裝置,針對新私人MAC位址的「這是同一台裝置」處理;由路由器本身提供的網頁版。
- 路由器上的代理程式: 一個Lua套件與服務,用來偵測新裝置、加入自訂API方法、隔離新裝置,並只允許已核准的裝置連上Wi-Fi。
- 通知: 附操作按鈕的推播,透過小型中繼實現的iOS原生推播,連線嘗試提醒,並搭配速率限制與短效操作權杖。
- 平台: 透過TestFlight發布的iOS版本、Android與網頁版。
成果
這是為作者家用網路打造的個人專案,正在積極開發中,並非商業產品。