2015-11-19 49 views
0

我需要一些關於如何保護SQL Server的建議。我想知道保護與SQL Server的連接

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

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

有沒有辦法?

非常感謝您

+0

1.肯定的是,不給他們一個登錄。 2.當然,使用ipsec。在所有情況下,硫都是不可能的 –

回答

0

只有2種方式進行身份驗證到SQL Server:,您使用Windows憑據

  1. 集成登錄,即或
  2. 混合模式 - 可以登錄使用Windows登錄或者您可以通過名稱和密碼使用SQL服務器憑證登錄。

您可以從文章

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; 

通過登錄觸發器您可以根據需要測試的應用等,如果你想拒絕的登錄嘗試回滾創建logon trigger,例如。

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

回覆:公鑰/私鑰,如果使用VPN,您將在VPN基礎結構中使用公鑰/私鑰。如果您只是通過標準套接字直接連接到服務器,則只需直接使用SQL Server基礎結構,即無法控制公鑰/私鑰的使用。同樣適用於IPsec。

SQL Server對公鑰/私鑰和對稱密鑰都有一定的支持,但這並沒有與建立連接有直接關係。

你可能想要的是一個encrypted connection,它需要sql爲其連接使用SSL(包括pub/priv鍵)。您將服務器配置爲支持加密,並強制它要求SSL,並且只允許SSL連接。

1

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

如果用戶具有SQL服務器的有效憑證並且服務器被配置爲接受來自客戶機的遠程連接(即防火牆允許連接等),那麼最好的假設是客戶機將能夠連接到SQL Server成功。

來自Gary的logon trigger想法是通過限制來自單個用戶的併發會話數來防止濫用的有效機制,並且驗證應用程序名稱是保持誠實人員誠實的方式,但應警告應用程序名稱可以很容易被欺騙,它不應該被用作強有力的認證/授權機制。

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

還有一個建議。當你將SQL Server公開給可能具有敵意的IP時,你可以打賭通過猜測SA密碼會自動嘗試打入它。如果可能,請僅使用集成身份驗證(Windows身份驗證),如果不是,我強烈建議使用ALTER LOGIN DDL重命名和/或禁用SA帳戶。

我希望這個信息幫助,

-Raul加西亞

SQL安全