如何配置加密的 SQL Server 連接以防止 MITM 攻擊?
令我驚訝的是,在配置 SQL Server 以強制連接加密時,預設情況下 SQL Server 不會阻止中間人攻擊。
強制對您的連接進行加密非常簡單。你去 Sql Server 配置管理器,展開 SQL Server Network Configuration,Protocols for
$$ your instance $$,右鍵點擊 TCP/IP,將強制加密更改為“是”,重新啟動 SQL Server 即可。 根據 Microsoft TechNet ( https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx ),這將生成一個自簽名證書。很好,沒問題,但我希望我的客戶抱怨證書不受信任。 但是,他們沒有。他們很高興地連接到它。然後我意識到預設情況下在 SQL Management Studio 中檢查了“信任伺服器證書” 。很好,但最令人震驚的實現是:即使您取消選中“信任伺服器證書”,SSMS 也不會抱怨、警告或拒絕連接。
因此,預設情況下,SQL Server 完全容易受到 MITM 攻擊,因為客戶端不執行任何操作來驗證來自 SQL Server 的證書。證書不必由 CA 簽名:證書必須在客戶端上配置為受信任的證書。如果不是這樣,那麼“信任伺服器證書”複選框的用途是什麼?
當我看到這個問題時,我打開 SSMS 的目的是閱讀“信任伺服器證書”選項的幫助文件,結果發現這是一個未記錄的功能,沒有描述它在 MSDN 上的作用。我的猜測是,它可用於信任過期證書或無法通過信任鏈驗證的證書。由於自簽名證書沒有信任鏈,因此 SSMS 在使用公鑰驗證簽名時會信任它。
我認為您的建議將為 SQL Server 的高安全性實現提供出色的伺服器配置選項。似乎您想要一個配置選項來拒絕所有自簽名證書,因為避免這些是減輕中間人攻擊的唯一真正方法。正是您提出的問題導致我建議使用域或公共 CA 證書配置“證書”選項卡。