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 私人漏洞回報功能通報。