示範用 OpenNHP 保護伺服器
Hiding Protocol
1) 受保護的伺服器預設對未驗證使用者「隱形」
預設情況下,任何嘗試連線到受保護伺服器的行為都會導致逾時(TIME OUT)錯誤, 因為所有連接埠都是關閉的,使伺服器看起來像離線,實際上達到「隱形」的效果。
2) 連接埠掃描同樣回傳逾時
對伺服器進行連接埠掃描同樣會回傳逾時(TIME OUT)錯誤。 所有連接埠對未授權掃描器都顯示為關閉狀態。您可以使用線上連接埠掃描器自行嘗試:
3) 透過登入網頁或 StealthDNS 應用程式進行驗證
使用登入網頁或 StealthDNS 應用程式向 NHP 伺服器進行身份驗證。 登入成功後,您即可存取受保護的伺服器。
4) 驗證成功後授予存取權限
NHP 身份驗證成功後,受保護的伺服器即可存取。 您現在可以看到先前隱形的受保護內容。

隱藏應用程式伺服器連接埠
在使用 NHP 之前,所有伺服器連接埠都是暴露的。使用 NHP 之後,它們變得完全隱形。
應用程式伺服器連接埠可見
$ nmap -sS -p 1-65535 server.example.com✗ 所有連接埠對攻擊者可見
✗ 攻擊面完全暴露
✗ 容易遭受連接埠掃描
所有連接埠對未授權者隱藏
$ nmap -sS -p 1-65535 server.example.com✓ 所有連接埠對攻擊者隱形
✓ 零攻擊面暴露
✓ 僅經過驗證的使用者可存取
NHP 運作方式
先驗證後連線的運作模式。
完全隱形
受保護的資源沒有任何公開存在。DNS 回傳 NXDOMAIN,連接埠顯示為關閉, IP 位址不可知。對未授權的觀察者而言,該服務根本不存在。
加密敲門
已授權的用戶端使用 Noise Protocol Framework 發送加密的「敲門」封包。 這在不向觀察者暴露服務存在的情況下證明其身份。
雙向驗證
用戶端與伺服器使用現代非對稱加密技術相互驗證。 無需共享金鑰,無中間人攻擊漏洞,無重放攻擊。
限時存取
驗證成功後,用戶端獲得臨時存取權限。 防火牆規則動態建立並自動過期,最大限度減少暴露。
效能測試結果
NHP 以極低的延遲開銷提供高效能表現。
| 操作 | 吞吐量 | 延遲 |
|---|---|---|
| 身份驗證 | 10K req/s | < 10ms |
| 連接埠隱藏 | 100K req/s | < 1ms |
| DNS 解析 | 50K req/s | < 5ms |
*在 AWS t3.xlarge 執行個體上測試
將 OpenNHP 整合到您的應用程式
根據您的應用程式類型選擇合適的 SDK:原生用戶端應用程式或網頁應用程式。
用戶端應用程式整合(桌面與行動裝置)
StealthDNS 是一個開源範例應用程式,展示如何將 OpenNHP SDK 整合到原生桌面和行動應用程式中。 透過研究其原始碼,您可以學習:
- ✓ 如何在您的應用程式中初始化 NHP-Agent
- ✓ 如何向 NHP-Server 發送加密敲門請求
- ✓ 如何處理身份驗證和存取權杖
- ✓ 如何在 NHP 授權後存取受保護的資源
網頁應用程式整合(JavaScript SDK)
OpenNHP JavaScript Agent 是將 NHP 身份驗證整合到網頁應用程式的官方 SDK。 它提供輕量級、瀏覽器相容的解決方案,用於基於網頁的方式存取 NHP 保護的資源。
- ✓ 適用於瀏覽器環境的純 JavaScript 實作
- ✓ 與現有網頁框架無縫整合
- ✓ NHP 身份驗證流程與連線狀態視覺化
- ✓ 適用於任何受 OpenNHP 保護的後端


