安裝最新的(de)服務包
爲了(le)提高(gāo)服務器安全性,最有效的(de)一個(gè)方法就是升級到 SQL Server 2000 Service Pack 3a (SP3a)。
另外,您還(hái)應該安裝所有已發布的(de)安全更新。
使用(yòng) Microsoft 基線安全性分(fēn)析器(MBSA)來(lái)評估服務器的(de)安全性
MBSA 是一個(gè)掃描多(duō)種 Microsoft 産品的(de)不安全配置的(de)工具,包括 SQL Server 和(hé) Microsoft SQL Server 2000 Desktop Engine (MSDE 2000)。它可(kě)以在本地運行,也(yě)可(kě)以通(tōng)過網絡運行。該工具針對(duì)下(xià)面問題對(duì) SQL Server 安裝進行檢測:
1) 過多(duō)的(de)sysadmin固定服務器角色成員(yuán)。
2) 授予sysadmin以外的(de)其他(tā)角色創建 CmdExec 作業的(de)權利。
3) 空的(de)或簡單的(de)密碼。
4) 脆弱的(de)身份驗證模式。
5) 授予管理(lǐ)員(yuán)組過多(duō)的(de)權利。
6) SQL Server數據目錄中不正确的(de)訪問控制表(ACL)。
7) 安裝文件中使用(yòng)純文本的(de)sa密碼。
8) 授予guest帳戶過多(duō)的(de)權利。
9) 在同時(shí)是域控制器的(de)系統中運行SQL Server。
10) 所有人(rén)(Everyone)組的(de)不正确配置,提供對(duì)特定注冊表鍵的(de)訪問。
11) SQL Server 服務帳戶的(de)不正确配置。
12) 沒有安裝必要的(de)服務包和(hé)安全更新。
Microsoft 提供 MBSA 的(de)免費下(xià)載。
使用(yòng)Windows身份驗證模式
在任何可(kě)能的(de)時(shí)候,您都應該對(duì)指向SQLServer的(de)連接要求Windows身份驗證模式。它通(tōng)過限制Microsoft Windows用(yòng)戶和(hé)域用(yòng)戶帳戶的(de)連接,保護SQLServer免受大(dà)部分(fēn)internet的(de)工具的(de)侵害,而且,您的(de)服務器也(yě)将從Windows安全增強機制中獲益,例如更強的(de)身份驗證協議(yì)以及強制的(de)密碼複雜(zá)性和(hé)過期時(shí)間。另外,憑證委派(在多(duō)台服務器間橋接憑證的(de)能力)也(yě)隻能在Windows身份驗證模式中使用(yòng)。在客戶端,Windows身份驗證模式不再需要存儲密碼。存儲密碼是使用(yòng)标準SQL Server登陸的(de)應用(yòng)程序的(de)主要漏洞之一。
要在SQLServer的(de)EnterpriseManager安裝Windows身份驗證模式,請按下(xià)列步驟操作:
1)展開服務器組。
2)右鍵點擊服務器,然後點擊屬性。
3)在安全性選項卡的(de)身份驗證中,點擊僅限Windows。
隔離您的(de)服務器,并定期備份
物(wù)理(lǐ)和(hé)邏輯上的(de)隔離組成了(le)SQLServer安全性的(de)基礎。駐留數據庫的(de)機器應該處于一個(gè)從物(wù)理(lǐ)形式上受到保護的(de)地方,最好是一個(gè)上鎖的(de)機房(fáng),配備有洪水(shuǐ)檢測以及火災檢測/消防系統。數據庫應該安裝在企業内部網的(de)安全區(qū)域中,不要直接連接到intetnet。定期備份所有數據,并将副本保存在安全的(de)站點外地點。
分(fēn)配一個(gè)強健的(de)sa密碼
sa帳戶應該總擁有一個(gè)強健的(de)密碼,即使在配置爲要求 Windows 身份驗證的(de)服務器上也(yě)該如此。這(zhè)将保證在以後服務器被重新配置爲混合模式身份驗證時(shí),不會出現空白或脆弱的(de)sa。
要分(fēn)配sa密碼,請按下(xià)列步驟操作:
1) 展開服務器組,然後展開服務器。
2) 展開安全性,然後點擊登錄。
3) 在細節窗(chuāng)格中,右鍵點擊SA,然後點擊屬性。
4) 在密碼方框中,輸入新的(de)密碼。
限制 SQL Server服務的(de)權限
SQL Server 2000 和(hé) SQL Server Agent 是作爲 Windows 服務運行的(de)。每個(gè)服務必須與一個(gè) Windows 帳戶相關聯,并從這(zhè)個(gè)帳戶中衍生出安全性上下(xià)文。SQL Server允許sa 登錄的(de)用(yòng)戶(有時(shí)也(yě)包括其他(tā)用(yòng)戶)來(lái)訪問操作系統特性。這(zhè)些操作系統調用(yòng)是由擁有服務器進程的(de)帳戶的(de)安全性上下(xià)文來(lái)創建的(de)。如果服務器被攻破了(le),那麽這(zhè)些操作系統調用(yòng)可(kě)能被利用(yòng)來(lái)向其他(tā)資源進行攻擊,隻要所擁有的(de)過程(SQL Server服務帳戶)可(kě)以對(duì)其進行訪問。因此,爲 SQL Server 服務僅授予必要的(de)權限是十分(fēn)重要的(de)。
我們推薦您采用(yòng)下(xià)列設置:
1) SQL Server Engine/MSSQLServer
如果擁有指定實例,那麽它們應該被命名爲MSSQL$InstanceName。作爲具有一般用(yòng)戶權限的(de)Windows 域用(yòng)戶帳戶運行。不要作爲本地系統、本地管理(lǐ)員(yuán)或域管理(lǐ)員(yuán)帳戶來(lái)運行。
2) SQL Server Agent Service/SQLServerAgent
如果您的(de)環境中不需要,請禁用(yòng)該服務;否則請作爲具有一般用(yòng)戶權限的(de)Windows域用(yòng)戶帳戶運行。不要作爲本地系統、本地管理(lǐ)員(yuán)或域管理(lǐ)員(yuán)帳戶來(lái)運行。
重點: 如果下(xià)列條件之一成立,那麽 SQL Server Agent 将需要本地 Windows管理(lǐ)員(yuán)權限:
SQL Server Agent 使用(yòng)标準的(de) SQL Server 身份驗證連接到SQL Server(不推薦)。
SQL Server Agent 使用(yòng)多(duō)服務器管理(lǐ)主服務器(MSX)帳戶,而該帳戶使用(yòng)标準 SQL Server 身份驗證進行連接。
SQL Server Agent 運行非sysadmin固定服務器角色成員(yuán)所擁有的(de) Microsoft ActiveX?腳本或 CmdExec 作業。
如果您需要更改與 SQL Server服務相關聯的(de)帳戶,請使用(yòng) SQL Server Enterprise Manager。Enterprise Manager 将爲 SQL Server 所使用(yòng)的(de)文件和(hé)注冊表鍵設置合适的(de)權限。不要使用(yòng) Microsoft 管理(lǐ)控制台的(de)"服務"(在控制面闆中)來(lái)更改這(zhè)些帳戶,因爲這(zhè)樣需要手動地調制大(dà)量的(de)注冊表鍵和(hé)NTFS文件系統權限以及Micorsoft Windows用(yòng)戶權限。
帳戶信息的(de)更改将在下(xià)一次服務啓動時(shí)生效。如果您需要更改與 SQL Server 以及 SQL Server Agent 相關聯的(de)帳戶,那麽您必須使用(yòng) Enterprise Manager 分(fēn)别對(duì)兩個(gè)服務進行更改。
在防火牆上禁用(yòng) SQL Server 端口
SQL Server 的(de)默認安裝将監視 TCP 端口 1433 以及UDP端口 1434。配置您的(de)防火牆來(lái)過濾掉到達這(zhè)些端口的(de)數據包。而且,還(hái)應該在防火牆上阻止與指定實例相關聯的(de)其他(tā)端口。
使用(yòng)最安全的(de)文件系統
NTFS 是最适合安裝 SQL Server 的(de)文件系統。它比 FAT 文件系統更穩定且更容易恢複。而且它還(hái)包括一些安全選項,例如文件和(hé)目錄 ACL 以及文件加密(EFS)。在安裝過程中,如果偵測到 NTFS,SQL Server 将在注冊表鍵和(hé)文件上設置合适的(de) ACL。不應該去更改這(zhè)些權限。
通(tōng)過 EFS,數據庫文件将在運行 SQL Server 的(de)帳戶身份下(xià)進行加密。隻有這(zhè)個(gè)帳戶才能解密這(zhè)些文件。如果您需要更改運行 SQL Server 的(de)帳戶,那麽您必須首先在舊(jiù)帳戶下(xià)解密這(zhè)些文件,然後在新帳戶下(xià)重新進行加密。
删除或保護舊(jiù)的(de)安裝文件
SQL Server 安裝文件可(kě)能包含由純文本或簡單加密的(de)憑證和(hé)其他(tā)在安裝過程中記錄的(de)敏感配置信息。這(zhè)些日志文件的(de)保存位置取決于所安裝的(de)SQL Server版本。在 SQL Server 2000 中,下(xià)列文件可(kě)能受到影(yǐng)響:默認安裝時(shí)<systemdrive>:\Program Files\Microsoft SQL Server\MSSQL\Install文件夾中,以及指定實例的(de)<systemdrive>:\Program Files\Microsoft SQL Server\ MSSQL$<Instance Name>\Install文件夾中的(de)sqlstp.loG, sqlsp.log和(hé)setup.iss
如果當前的(de)系統是從 SQL Server 7.0 安裝升級而來(lái)的(de),那麽還(hái)應該檢查下(xià)列文件:%Windir% 文件夾中的(de)setup.iss以及Windows Temp文件夾中的(de)sqlsp.loG。
Microsoft發布了(le)一個(gè)免費的(de)實用(yòng)工具 Killpwd,它将從您的(de)系統中找到并删除這(zhè)些密碼。
審核指向 SQL Server 的(de)連接
SQL Server 可(kě)以記錄事件信息,用(yòng)于系統管理(lǐ)員(yuán)的(de)審查。至少您應該記錄失敗的(de) SQL Server 連接嘗試,并定期地查看這(zhè)個(gè)日志。在可(kě)能的(de)情況下(xià),不要将這(zhè)些日志和(hé)數據文件保存在同一個(gè)硬盤上。
要在 SQL Server 的(de) Enterprise Manager 中審核失敗連接,請按下(xià)列步驟操作:
1) 展開服務器組。
2) 右鍵點擊服務器,然後點擊屬性。
3) 在安全性選項卡的(de)審核等級中,點擊失敗。
4) 要使這(zhè)個(gè)設置生效,您必須停止并重新啓動服務器。