1. 安裝最新的服務包
為了提高伺服器安全性,最有效一個方法就是升級到SQL Server 2000 Service Pack 3a (SP3a)。另外,您還應該安裝所有發行的安全更新。
2. 使用Microsoft基準安全性分析器(MBSA)來評估伺服器的安全性
MBSA 是一個掃描多種Microsoft產品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地運行,也可以通過網路運行。該工具針對下面問題對SQL Server安裝進行檢測:
1) 過多的sysadmin固定伺服器角色成員。
2) 授予sysadmin以外的其他角色建立CmdExec作業的權利。
3) 空的或簡單的密碼。
4) 脆弱的身分識別驗證模式。
5) 授予Administrator 群組過多的權利。
6) SQL Server資料目錄中不正確的存取控制表(ACL)。
7) 安裝檔案中使用純文字的sa密碼。
8) 授予guest帳戶過多的權利。
9) 在同時是網域控制站的系統中運行SQL Server。
10) 所有人(Everyone)組的不正確配置,提供對特定註冊表鍵的訪問。
11) SQL Server 服務帳戶的不正確配置。
12) 沒有安裝必要的服務包和安全更新。
Microsoft 提供 MBSA 的免費下載。
3. 使用Windows身分識別驗證模式
在任何可能的時候,您都應該對指向SQL Server的串連要求Windows身分識別驗證模式。它通過限制對Microsoft Windows使用者和域使用者帳戶的串連,保護SQL Server免受大部分Internet工具的侵害,而且,您的伺服器也將從Windows安全增強機制中獲益,例如更強的身分識別驗證協議以及強制的密碼複雜性和到期時間。另外,憑證委派(在多台伺服器間橋接憑證的能力)也只能在Windows身分識別驗證模式中使用。在用戶端,Windows身分識別驗證模式不再需要儲存密碼。儲存密碼是使用標準SQL Server登入的應用程式的主要漏洞之一。要在SQL Server的Enterprise Manager安裝Windows身分識別驗證模式,請按下列步驟操作:
1)展開伺服器組。
2)右鍵點擊伺服器,然後點擊屬性。
3)在安全性選項卡的身分識別驗證中,點擊僅限Windows。
4. 隔離您的伺服器,並定期備份
物理和邏輯上的隔離組成了SQL Server安全性的基礎。駐留資料庫的機器應該處於一個從物理形式上受到保護的地方,最好是一個上鎖的機房,配備有洪水檢測以及火災檢測及消防系統。資料庫應該安裝在企業內部網的安全區域中,不要直接連接到Internet。定期備份所有資料,並將副本儲存在安全的網站外地點。
5. 分配一個強健的sa密碼
sa帳戶應該總擁有一個強健的密碼,即使在配置為要求 Windows 身分識別驗證的伺服器上也該如此。這將保證在以後伺服器被重新設定為混合模式身分識別驗證時,不會出現空白或脆弱的sa。
要分配sa密碼,請按下列步驟操作:
1) 展開伺服器組,然後展開伺服器。
2) 展開安全性,然後點擊登入。
3) 在詳細資料窗格中,右鍵點擊SA,然後點擊屬性。
4) 在密碼方框中,輸入新的密碼。
6. 限制 SQL Server服務的許可權
SQL Server 2000和SQL Server Agent是作為Windows服務啟動並執行。每個服務必須與一個Windows帳戶相關聯,並從這個帳戶中衍生出資訊安全內容。SQL Server允許sa登入的使用者(有時也包括其他使用者)來訪問作業系統特性。這些作業系統調用是由擁有伺服器處理序的帳戶的資訊安全內容來建立的。如果伺服器被攻破了,那麼這些作業系統調用可能被利用來向其他資源進行攻擊,只要所擁有的過程(SQL Server服務帳戶)可以對其進行訪問。因此,為SQL Server服務僅授予必要的許可權是十分重要的。
我們推薦您採用下列設定:
1) SQL Server Engine/MSSQLServer
如果擁有指定執行個體,那麼它們應該被命名為MSSQL$InstanceName。作為具有一般使用者權限的Windows域使用者帳戶運行。不要作為本地系統、本地管理員或網域系統管理員帳戶來運行。
2) SQL Server Agent Service/SQLServerAgent
如果您的環境中不需要,請禁用該服務;否則請作為具有一般使用者權限的Windows域使用者帳戶運行。不要作為本地系統、本地管理員或網域系統管理員帳戶來運行。
重點: 如果下列條件之一成立,那麼SQL Server Agent將需要本地Windows管理員權限:
SQL Server Agent使用標準的SQL Server身分識別驗證串連到SQL Server(不推薦);
SQL Server Agent使用多伺服器管理主伺服器(MSX)帳戶,而該帳戶使用標準SQL Server身分識別驗證進行串連;
SQL Server Agent運行非sysadmin固定伺服器角色成員所擁有的Microsoft ActiveX指令碼或 CmdExec作業。
如果您需要更改與SQL Server服務相關聯的帳戶,請使用 SQL Server Enterprise Manager。Enterprise Manager將為SQL Server所使用的檔案和註冊表鍵設定合適的許可權。不要使用Microsoft管理主控台的“服務”(在控制台中)來更改這些帳戶,因為這樣需要手動地調製大量的註冊表鍵和NTFS檔案系統許可權以及Micorsoft Windows使用者權限。
帳戶資訊的更改將在下一次服務啟動時生效。如果您需要更改與SQL Server以及SQL Server Agent相關聯的帳戶,那麼您必須使用Enterprise Manager分別對兩個服務變更。
7. 在防火牆上禁用SQL Server連接埠
SQL Server的預設安裝將監視TCP連接埠1433以及UDP連接埠1434。配置您的防火牆來過濾掉到達這些連接埠的資料包。而且,還應該在防火牆上阻止與指定執行個體相關聯的其他連接埠。
8. 使用最安全的檔案系統
NTFS是最適合安裝SQL Server的檔案系統。它比FAT檔案系統更穩定且更容易恢複。而且它還包括一些安全選項,例如檔案和目錄ACL以及檔案加密(EFS)。在安裝過程中,如果偵測到 NTFS,SQL Server將在註冊表鍵和檔案上設定合適的ACL。不應該去更改這些許可權。
通過EFS,資料庫檔案將在運行SQL Server的帳戶身份下進行加密。只有這個帳戶才能解密這些檔案。如果您需要更改運行SQL Server的帳戶,那麼您必須首先在舊帳戶下解密這些檔案,然後在新帳戶下重新進行加密。
9. 刪除或保護舊的安裝檔案
SQL Server安裝檔案可能包含由純文字或簡單加密的憑證和其他在安裝過程中記錄的敏感配置資訊。這些記錄檔的儲存位置取決於所安裝的SQL Server版本。在SQL Server 2000中,下列檔案可能受到影響:預設安裝時:\Program Files\Microsoft SQL Server\MSSQL\Install檔案夾中,以及指定執行個體的:\Program Files\Microsoft SQL Server\ MSSQL$\Install檔案夾中的sqlstp.log, sqlsp.log和setup.iss。
如果當前的系統是從SQL Server 7.0安裝升級而來的,那麼還應該檢查下列檔案:%Windir% 檔案夾中的setup.iss以及Windows Temp檔案夾中的sqlsp.log。
Microsoft發布了一個免費的工具 + 生產力Killpwd,它將從您的系統中找到並刪除這些密碼。
10. 審核指向SQL Server的串連
SQL Server可以記錄事件資訊,用於系統管理員的審查。至少您應該記錄失敗的SQL Server串連嘗試,並定期地查看這個日誌。在可能的情況下,不要將這些日誌和資料檔案儲存在同一個硬碟上。
要在SQL Server的Enterprise Manager中審核失敗串連,請按下列步驟操作:
1) 展開伺服器組。
2) 右鍵點擊伺服器,然後點擊屬性。
3) 在安全性選項卡的審核等級中,點擊失敗。
4) 要使這個設定生效,您必須停止並重新啟動伺服器。