安全強化

強化 Netstamp 部署、保護密鑰與探測器、減少公開資料,並在憑證外洩時正確應變。

Netstamp 會處理監控目標、網路位置、使用者身分、探測器憑證、通知密鑰與長期時間序列資料,應將控制器視為正式環境基礎設施。

部署邊界

  • 只對外公開 HTTPS 反向代理。
  • 將 PostgreSQL 留在私有 Docker 網路或主機網路。
  • 依部署環境使用防火牆與身分政策限制控制器存取。
  • 設定精確的 trusted proxy CIDR。
  • 持續更新主機、Docker、反向代理、資料庫映像檔及 Netstamp 映像檔。
  • 監控健康狀態與資源耗盡問題。

密鑰清單

下列資料都必須妥善保護及備份:

  • 資料庫密碼;
  • 日誌去識別化金鑰;
  • 系統設定加密金鑰;
  • 工作階段雜湊金鑰;
  • API 權杖雜湊金鑰;
  • OAuth/OIDC 用戶端密鑰;
  • SMTP 密碼;
  • 探測器密鑰;
  • 個人 API 權杖;
  • Webhook URL 與 Telegram bot 權杖。

每項用途都使用獨立的隨機值。限制 .env 的檔案權限,且不要提交到 Git。也不要讓密鑰進入 shell 歷史紀錄或系統記錄。

身分驗證

  • 從可信任的網路建立第一位系統管理員。
  • 新增第二位系統管理員,以便復原。
  • 不需要公開註冊時就將它關閉。
  • 確認 SMTP 穩定後,才要求驗證電子郵件。
  • 除非身分提供者中的所有身分都是刻意信任的對象,否則保持外部身分提供者的 JIT 帳號建立功能關閉。
  • 定期檢查使用中的工作階段與已連結的外部身分。
  • 為 API 權杖設定合理的到期時間與最小權限範圍。

探測器信任

每部探測器都有自己的唯一憑證,不要將 /etc/netstamp/probe.env 複製給另一部探測器。主機重建、移交、疑似外洩或憑證意外寫入記錄後,都應輪替密鑰;暫時不應接收工作時,請停用探測器。

systemd 服務單元會限制權限,但 ICMP 仍需要原始網路存取能力。只有系統管理員能寫入代理程式執行檔及 root 擁有的設定檔。

HTTP 檢查中的秘密值

HTTP 標頭、內容、查詢參數值與回應內容判定條件都可能包含憑證或敏感資料。請使用專門建立、權限最小化的權杖,不要用正式使用者憑證監控端點。能管理檢查的編輯者可能接觸敏感設定,因此也要審慎控管編輯者權限。

公開狀態頁隱私

狀態頁不需要登入即可存取。公開前請檢查目標、探測器名稱、座標、事件摘要、橫幅圖片 URL、頁尾文字與自訂 CSS;不需要精確座標時,優先使用較粗略的地點名稱。

外洩後的處理

外洩資料立即處理方式
工作階段撤銷該工作階段或所有工作階段
API 權杖建立替代權杖、更新使用端,再撤銷舊權杖
探測器密鑰在探測器詳細資料輪替密鑰,並重新安裝服務憑證
OAuth/OIDC 密鑰在身分提供者端輪替,再更新控制器設定
Webhook/bot/SMTP 憑證在目的地輪替,並更新儲存的通知或系統設定
資料庫密碼限制存取,並同步輪替資料庫與控制器的設定
雜湊/加密金鑰輪替前評估憑證失效與資料復原影響,再透過受控程序進行

回報安全漏洞

不要在公開 issue 張貼漏洞利用細節、密鑰或個人資料。請遵循程式碼儲存庫的安全政策,並在功能可用時透過 GitHub 私人漏洞回報功能通報。