1. 確認已經安裝了NT/2000和SQL Server的最新補丁程序,不用說大家應該已經安裝好了,但是我覺得最好還是在這裡提醒一下。
2. 評估並且選擇一個考慮到最大的安全性但是同時又不影響功能的網絡協議。 多協議是明智的選擇, 但是它有時不能在異種的環境中使用。
3. 給 "sa" 和 "probe" 帳戶設定強壯的密碼來加強其安全性。設定一個強壯的密碼並將其保存在一個安全的地方。 注意: probe帳戶被用來進行性能分析和分發傳輸。 當在標准的安全模態中用的時候 , 給這個帳戶設定高強度的密碼能影響某些功能的使用。
4. 使用一個低特權用戶作為 SQL 服務器服務的查詢操作賬戶,不要用 LocalSystem 或sa。 這個帳戶應該有最小的權利 ( 注意作為一個服務運行的權利是必須的)和應該包含( 但不停止)在妥協的情況下對服務器的攻擊。 注意當使用企業管理器做以上設置時 , 文件,注冊表和使用者權利上的 ACLs同時被處理。
5. 確定所有的 SQL 服務器數據,而且系統文件是裝置在 NTFS 分區,且appropraite ACLs 被應用。 如果萬一某人得到對系統的存取操作權限,該層權限可以阻止入侵者破壞數據,避免造成一場大災難。
6.如果不使用Xp_cmdshell就關掉。 如果使用 SQL 6.5, 至少使用Server Options中的SQLExecutIECmdExec 賬戶操作限制非sa用戶使用XP_cmdshell.
在任何的 isql/ osql 窗口中( 或查詢分析器):
use master
exec sp_dropextendedproc’xp_cmdshell’
如果你不需要 xp_cmdshell 那請停用它。請記住一個系統系統管理員如果需要的話總是能把它增加回來。這也好也不好 - 一個侵入者可能發現它不在,只需要把他加回來。考慮也除去在下面的 dll但是移除之前必須測試因為有些dll同時被一些程序所用。 要找到其他的程序是否使用相同的 dll:
首先得到該 dll 。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name=’xp_cmdshell’
其次,使用相同的 dll發現其他的擴展儲存操作是否使用該dll。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text=’xplog70.dll’
用戶可以用同樣的辦法處理下面步驟中其他你想去掉的進程。
7. 如不需要就停用對象連接與嵌入自動化儲存程序 ( 警告 - 當這些儲存程序被停用的時候 , 一些企業管理器功能可能丟失). 這些包括:
Sp_OACreate
Sp_OADestroy
Sp_OAGetErrorInfo
Sp_OAGetProperty
Sp_OAMethod
Sp_OASetProperty
Sp_OAStop
如果你決定停用該進程那麼請給他們寫一個腳本這樣在以後你用到他們的時候你能夠把他們重新添加回來 。 記住, 我們在這裡正在做的是鎖定一個應用程序的功能 - 你的開發平台應該放到其他機器上。
8. 禁用你不需要的注冊表存取程序。(同上面的警告)這些包括:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring
注意 :我過去一直在這裡列出 xp_regread/ xp_regwrite但是這些程序的移除影響一些主要功能包括日志和SP的安裝,所以他們的移除不被推薦。
9.移除其他你認為會造成威脅的系統儲存進程。 這種進程是相當多的,而且他們也會浪費一些cpu時間。 小心不要首先在一個配置好的服務器上這樣做。首先在開發的機器上測試,確認這樣不會影響到任何的系統功能。在下面是我們所推薦的有待你評估的一些列表:
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_enumqueuedtasks
xp_eventlog
xp_findnextmsg