簡體   English   中英

保護與SQL Server的連接

[英]Securing connection to SQL Server

我需要一些有關如何保護SQL Server的建議。 我想知道

  1. 有一種方法可以拒絕用戶從excel創建odbc以連接到它
  2. 有一種使用私鑰/公鑰對服務器進行身份驗證的方法
  3. 有一種方法只允許特定的應用程序連接到服務器

我可以在前面添加防火牆來過濾IP,但是我也希望為應用程序過濾。

有辦法嗎?

非常感謝你

不幸的是,沒有機制可以安全地阻止給定的應用程序以您似乎試圖的方式連接。

如果用戶具有SQL Server的有效憑據,並且服務器配置為接受來自客戶端計算機的遠程連接(即防火牆允許連接等),則最佳假設是客戶端將能夠成功連接到SQL Server 。

Gary的登錄觸發點子將成為有效的機制,可以通過限制單個用戶的並發會話數來防止濫用,並且驗證應用程序名稱是保持誠實的人的一種方式,但要警告說,應用程序名稱很容易欺騙,不應將其用作強大的身份驗證/授權機制。

SQL Server可以使用TLS / SSL證書向客戶端進行身份驗證,但不能對客戶端進行身份驗證。 即使這可能不是您的方案的解決方案,仍建議使用加密連接。

另一項建議。 當您將SQL Server暴露給潛在的惡意IP時,您可以打賭,將通過猜測SA密碼來自動嘗試闖入它。 如果可能,請僅使用集成身份驗證(Windows身份驗證),否則,強烈建議使用ALTER LOGIN DDL重命名和/或禁用SA帳戶。

我希望這個信息幫助,

-勞爾·加西亞(Raul Garcia)

SQL安全性

只有兩種方法可以向SQL Server進行身份驗證:

  1. 集成登錄名,即您使用Windows憑據,或
  2. 混合模式-您可以使用Windows登錄名登錄,也可以通過名稱和密碼使用SQL Server憑據登錄。

您可以創建登錄觸發器 ,例如本文中的示例

CREATE TRIGGER connection_limit_trigger
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'login_test' AND
    (SELECT COUNT(*) FROM sys.dm_exec_sessions
            WHERE is_user_process = 1 AND
                original_login_name = 'login_test') > 3
    ROLLBACK;
END;

使用登錄觸發器,您可以根據需要測試應用程序等,如果希望拒絕登錄嘗試,則可以回滾。

例如,如果app_name <>'MyApp',則回滾連接嘗試。

回復:公鑰/私鑰,如果使用VPN,則將在VPN基礎結構中使用公鑰/私鑰。 如果僅通過標准套接字直接連接到服務器,則直接使用SQL Server基礎結構,即,您無法控制公用/專用密鑰的使用。 對於IPsec也是如此。

SQL Server確實對公用/專用密鑰以及對稱密鑰提供了一些支持,但是實際上並沒有與建立連接直接相關的任何內容。

您可能想要的是一個加密連接 ,該連接要求sql使用SSL(包括發布/專用密鑰)進行連接。 您將服務器配置為支持加密並強制其要求SSL,並且僅允許SSL連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM