拿到MS SQL 2005還沒有一天,總的來說,MS SQL 2005的安全性比SQL 2000要強上不少,不過默認設置還是有和原來一樣的漏洞,下面我們來修改一下默認設置。
1、安裝MSSQL時使用混合模式,當然SA密碼最好不能為空,在SQL2005中,可以對SA這個超級用戶名進行修改或刪除。
use master
ALTER LOGIN [sa] WITH NAME=[zxs] /*修改SA帳號*/
sp_passWord '111111','123456','sa' /*修改SA密碼*/
使用以上命令可修改SA帳號,也可進行圖形化的修改
使用安全的帳號策略。對SA或等同用戶進行最強的保護,當然,包括使用一個非常強壯的密碼,如下圖
這裡可以看到SQL 2005比SQL 2000 增強的地方了。
2、SQL的認證有Windows身份認證和混合身份認證。在2005中,登陸SQL可以使用indows身份認證和混合身份認證方便,如果不希望系統管理員接觸數據庫的話,可以在安全性==登錄名是把系統帳號“BUILTIN/Administrators”刪除。當然,還有別的多余的帳號也可一同禁止,只需要在帳號==屬性==狀態中把是否允許連接到數據庫引擎改為拒絕,還有登錄改為禁用即可,不過這樣的壞處就是當你忘了SA的密碼時,我也沒辦法幫你啦。
也可用命令sp_change_users_login 'report' 搜索一下獨立的帳戶再刪除
3、管理擴展存儲過程
刪除不必要的存儲過程,因為有些存儲過程能很容易地被人利用起來提升權限或進行破壞。
如果你不需要擴展存儲過程xp_cmdshell請把它去掉。xp_cmdshell根本就是一個大後門。
如果不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特征不能使用),這些過程包括如下:
sp_OACreate sp_OADestroy sp_OAGetErrorInfo sp_OAGetProperty
sp_OAMethod sp_OASetProperty sp_OAStop
去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:
xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumvalues
xp_regread xp_regremovemultistring xp_regwrite
還有一些其他的擴展存儲過程,你也最好檢查檢查。
在處理存儲過程的時候,請確認一下,避免造成對數據庫或應用程序的傷害。運行以下SQL語句可刪除所有危險的SP。
DROP PROCEDURE sp_makewebtask
exec master..sp_dropextendedproc xp_cmdshell /*命令行*/
exec master..sp_dropextendedproc xp_dirtree /*可以展開你需要了解的目錄,獲得所有目錄深度*/
exec master..sp_dropextendedproc xp_fileexist /*用來確定一個文件是否存在*/
exec master..sp_dropextendedproc xp_getnetname /*可以獲得服務器名稱*/
exec master..sp_dropextendedproc xp_terminate_process
exec master..sp_dropextendedproc sp_oamethod
exec master..sp_dropextendedproc sp_oacreate
exec master..sp_dropextendedproc xp_regaddmultistring
exec master..sp_dropextendedproc xp_regdeletekey
exec master..sp_dropextendedproc xp_regdeletevalue
exec master..sp_dropextendedproc xp_regenumkeys
exec master..sp_dropextendedproc xp_regenumvalues
exec master..sp_dropextendedproc sp_add_job
exec master..sp_dropextendedproc sp_addtask
exec master..sp_dropextendedproc xp_regread
exec master..sp_dropextendedproc xp_regwrite
exec master..sp_dropextendedproc xp_readwebtask
exec master..sp_dropextendedproc xp_makewebtask
exec master..sp_dropextendedproc xp_regremovemultistring
exec master..sp_dropextendedproc sp_OACreate
DROP PROCEDURE sp_addextendedproc
5、SQL Server 2005本身就具有加密功能,完全集成了一個密鑰管理架構。不過,最好遠程網絡連接時使用SSL來加密協議,這就需要一個證書來支持。這裡搜索一下就會有很多這方面的說明,就不多說了。
6、使用IPSec策略阻止所有地址訪問本機的TCP1433與UDP1434端口,也可對TCP1433端口進行修改,但是在SQL2005中,可以使用TCP動態端口,(在SQL Server Configuration Manager的SQL 2005網絡配置中)如下圖
這是SQL幫助中的說明
如果某個 SQL Server 實例已配置為偵聽動態端口,則在啟動時,該實例將檢查操作系統中的可用端口,並為該端口打開一個端點。傳入連接必須指定要連接的端口號。由於每次啟動 SQL Server 時端口號都可能會改變,因此 SQL Server 提供 SQL Server 浏覽器服務器,來監視端口並將傳入連接指向該實例的當前端口。
也可對每個IP進行偵聽
如圖
這是SQL幫助中的說明
指定 SQL Server 是否偵聽所有綁定到計算機網卡的 IP 地址。如果設置為“否”,則使用每個 IP 地址各自的屬性對話框對各個 IP 地址進行配置。如果設置為“是”,則 IPAll 屬性框的設置將應用於所有 IP 地址。默認值為“是”。
當然你也可以下面的SQL Native ClIEnt 配置中新建一別名來指定你的SQL服務器和端口,也可在服務器屬性==連接==遠程服務器鏈接==把允許遠程鏈接到本服務器的勾去掉
關閉遠程鏈接命令行為
EXEC sys.sp_configure N'remote Access', N'0'
8、對遠程網絡連接進行IP限制,SQL Server 2005如同SQL 2000一樣沒有提供網絡連接的安全解決辦法,但是Windows 2K以上系統了提供了IPSec策略。對遠程網絡連接的IP進行限制,只保證需要的IP能夠訪問,拒絕其他 IP進行的端口連接,把安全威脅降到最低。
9、在服務器的屬性安全中,啟用登錄審核中的失敗與成功登陸,啟用C2審核跟蹤,C2是一個政府安全等級,它保證系統能夠保護資源並具有足夠的審核能力。C2模式允許我們監視對所有數據庫實體的所有訪問企圖。如圖
啟用C2審核的命令為
EXEC sys.sp_configure N'c2 audit mode', N'1'
以上的方法不是很完整,因為時間關系以後再慢慢研究。