這種設置會提供足夠的安全性嗎?
在以下場景中,我想看看我是否可以按原樣提供足夠的安全性,或者重新建構事物是否有任何切實的好處(比如更改它以便相關服務位於 DMZ 中,或其他東西像那樣)。假設我試圖保護的數據是高度敏感的,如果它被暴露,它將成為一個主要的頭條新聞。
- 在可以訪問內部網路的伺服器上(因為我們還需要訪問數據庫或其他內部服務),會有一個 gRPC 服務在特定的 TCP 埠上進行偵聽。
- 我事先知道我只希望來自單個已知、受信任 IP 的客戶端連接,因此我們將在外部防火牆中創建一個規則,以允許從該單個 IP 到 gRPC 服務的 IP 端點的傳入 TCP 連接。
- 對於加密和身份驗證,我們還將對 gRPC 服務進行 TLS 1.2 相互身份驗證。
就我所能想到的而言,這應該是可以接受的,因為能夠在該埠上連接的唯一方法是合法地擁有該 IP(這是我們信任的靜態 IP) IP 已分配給的實體)或欺騙它,潛在的攻擊者必須知道您必須欺騙該特定 IP,如果沒有內部資訊,這似乎不太可能(即使那樣,您也只能發送試圖破壞東西的數據包並且不會得到響應,因為它們會路由到真實的IP,對嗎?)。假設惡意行為者要控制該 IP,他們仍然必須擁有適當的證書才能通過 TLS 片段,知道他們試圖利用的協議類型,可能需要應用程序層憑據等。如果我希望連接的實際客戶端機器受到損害,我只認為這是一種可能性;據我所知,它周圍有很好的物理/網路安全性,所以我認為這應該是非常不可能的。
另外,如果我根本沒有防火牆呢?安全級別是否仍然可以接受,因為您必須擁有由與伺服器證書相同的 CA 簽名的合法證書,或者為了通過 TLS 身份驗證而袖手旁觀?無論哪種方式,我都會設置防火牆,因為我真的只有一個客戶端我想連接,但我也對此感到好奇。
是否還有其他我沒有考慮的問題,或者任何其他好的理由應該導致我放棄這種不安全的設置?提前致謝。
您的設置與域名行業的設置非常相似,例如閱讀RFC 5734 。有 3 層安全性:限制客戶端可以連接的 IP 地址和使用 TLS,限制它可以使用的 X.509 證書,然後是協議 (EPP) 級別的登錄名+密碼。
即使使用 TCP,您也不能僅僅基於 IP 地址進行身份驗證,因為會發生 BGP 欺騙,這意味著有人可能會“抓取”您的 IP 地址並能夠從中發起流量並獲得回复。這可能只持續幾分鐘,但已經足以造成一些傷害。因此,您也需要在 TLS 級別進行身份驗證:TLS 提供多種服務,其中包括機密性和身份驗證;在每個人都更關注機密性的地方(也因為它是容易正確的部分),實際上身份驗證更重要,沒有它你可以發送加密內容但可以發送給未知方,這可以看作類似於以純文字發送。
當然,特別是對於 DV 證書,如果發生 BGP 欺騙,某人也將能夠生成證書。CA 將使用可辨識 DNSSEC 的解析器和多角度進行驗證來緩解這種情況。這意味著只有當您同時放鬆對 IP 地址空間和權威名稱伺服器的控制時,才會開始出現問題。如果您不依賴外部公共 CA,但如果您純粹在內部管理它並因此僅信任您的 CA 生成的證書,則該問題也可以得到緩解。當然,您的 CA 需要得到嚴格保護,並且應該將其密鑰解除安裝到一些冷儲存中,例如 HSM。
如果您根本不過濾 IP 地址,使用一些防火牆規則,您將面臨 DOS 和 DDOS 的風險:即使人們不會僅僅通過這樣做就闖入您的系統,他們可能會使其不可用,並且可用性可以被視為安全性的一部分.
此外,對於今天您控制兩端並且不需要任何向後兼容性的任何新設置,建議您直接從TLS 1.3開始,因為它比 TLS 1.2 具有許多優勢