張燕春
隨著數(shù)據(jù)庫在各類區(qū)域性業(yè)務(wù)網(wǎng)絡(luò)系統(tǒng)中的廣泛應(yīng)用,數(shù)據(jù)庫安全問題日益凸顯。如何加強數(shù)據(jù)庫的安全呢?結(jié)合本人社保業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫管理工作中的一些經(jīng)驗,和大家全面分享SQL Server 2000數(shù)據(jù)庫的安全配置。
一、對 SQL Server 2000進(jìn)行安全配置
首先對操作系統(tǒng)進(jìn)行安全配置,保證操作系統(tǒng)處于安全狀態(tài)。然后對要使用的操作數(shù)據(jù)庫軟件進(jìn)行安全審核,如ASP、PHP腳本等,這是很多基于數(shù)據(jù)庫的WEB應(yīng)用可能常出現(xiàn)的安全隱患,過濾掉腳本中類似 @、 / 等字符,防止被構(gòu)造惡意SQL語句。再安裝SQL Server2000后打上sp1、 sp2補丁。
二、確認(rèn)SQL服務(wù)器系統(tǒng)安裝在NTFS分區(qū),且應(yīng)用權(quán)限控制列表
如果入侵者得到對數(shù)據(jù)庫系統(tǒng)存取操作權(quán)限,該層權(quán)限可以阻止入侵者進(jìn)一步破壞數(shù)據(jù)。
配置方法:找到SQL Server安裝文件夾,默認(rèn)安裝在“C:\Program Files Microsoft SQL Server”目錄下。鼠標(biāo)右鍵,選擇“屬性”。注意“共享”屬性選項卡,設(shè)定為“不共享”。點擊安全選項,只允許許可的用戶訪問該文件夾。
三、使用協(xié)議加密
SQL Server 2000使用Tabular Data Stream協(xié)議來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,此協(xié)議所有的網(wǎng)絡(luò)傳輸,如數(shù)據(jù)庫內(nèi)容、密碼等都是明文的,是很大的安全隱患。它能被其他人在網(wǎng)絡(luò)中截獲,所以在條件容許情況下,最好使用SSL來加密協(xié)議。
四、修改或刪除SA賬戶
修改或刪除SA賬戶配置方法:打開SQL中的企業(yè)管理器,在工具選項卡中選擇SQL server配置屬性,點服務(wù)器設(shè)置,勾選允許“對系統(tǒng)目錄直接進(jìn)行修改”,然后打開查詢分析器,登陸進(jìn)去輸入:
update sysxlogins set name=你要改成的名字 where sid=0x01
update sysxlogins set
sid=0xE765555BD44F054F89CD0076A06EA823where name=你要改成的名字。然后,在企業(yè)管理器中刷新登陸,可以看到SA變成了修改后的賬戶名,選中該賬戶名點擊右鍵,出現(xiàn)刪除的選項,即可執(zhí)行刪除SA賬戶操作。
五、使用安全的密碼策略,禁用默認(rèn)登錄
很多數(shù)據(jù)庫賬號的密碼過于簡單,這跟系統(tǒng)密碼過于簡單是一個道理。SQL Server的“SA”賬戶在默認(rèn)狀態(tài)下是空密碼,使用如下配置方法修改密碼:
開始→所有程序→Microsoft SQL Server→企業(yè)管理器,展開控制臺根目錄,選擇“安全性”,點擊“登錄”,用戶列表中可以看到SA用戶。雙擊打開,更改用戶密碼,設(shè)定一個足夠復(fù)雜并且足夠長度密碼來加強其安全性,同時不要讓該賬號的密碼寫于應(yīng)用程序或者腳本中。
另外可使用下面的SQL語句定期查看是否有不符合密碼要求的賬號:
Use master
Select name,Password from syslogins where password is null
在企業(yè)管理器中"安全選項" 之下禁用默認(rèn)登錄,使未經(jīng)認(rèn)可的不在 syslogins 表中的使用者無權(quán)登陸到有效的數(shù)據(jù)庫服務(wù)器。
六、關(guān)閉允許對“系統(tǒng)目錄直接進(jìn)行修改”功能
配置方法:鼠標(biāo)右鍵數(shù)據(jù)庫服務(wù)器,選擇“服務(wù)器設(shè)置”,在“服務(wù)器行為”字段下,關(guān)閉“系統(tǒng)目錄直接進(jìn)行修改”。如果開啟此功能,在數(shù)據(jù)庫架構(gòu)內(nèi)可以使用擴展存儲過程對系統(tǒng)目錄下的文件或者其他信息進(jìn)行修改,或者在數(shù)據(jù)庫架構(gòu)內(nèi)上傳具有惡意功能的代碼。嚴(yán)禁使用Xp_cmdshell命令。限制所有的賬戶擁有操作、因為如果惡意入侵者擁有操作該命令的權(quán)限,就可以輕松得到系統(tǒng)管理員的權(quán)限。
七、關(guān)閉遠(yuǎn)程服務(wù)器連接
如果允許使用遠(yuǎn)程服務(wù)器連接,入侵者在自己的機器上安裝SQL Server就可以使用數(shù)據(jù)庫服務(wù)器連接到你服務(wù)器的數(shù)據(jù)庫上,從而造成級別很高的安全風(fēng)險。
配置方法:展開控制臺根目錄,選擇“(Local)Windows NT”,鼠標(biāo)右鍵,選擇“屬性”,在配置窗口中選擇“連接”,去掉“允許其他SQL Server使用RPC遠(yuǎn)程連接到本SQL Server”選項,防止他人使用數(shù)據(jù)庫的惡意連接。
八、關(guān)閉遠(yuǎn)程終端服務(wù)和Web管理功能,禁用使用者交互式登錄SQL Server
一旦其中某個使用者能夠交互式進(jìn)入一個服務(wù)器之內(nèi),就有可能利用管理員的存取特權(quán)得到管理員權(quán)限。
配置方法: 展開控制臺根目錄,選擇“(Local)Windows NT”,鼠標(biāo)右鍵,選擇“屬性”,在配置窗口中選擇“安全性”選項卡,啟用混合模式安全性認(rèn)證,在默認(rèn)狀態(tài)只是執(zhí)行失敗的審核,使用“SQL Server和Windows”身份驗證,審核級別使用“全部”, 記錄所有的身份驗證狀況?!盁o”表示不執(zhí)行審核;“成功”表示只審核成功的登錄嘗試;“失敗”表示只審核失敗的登錄嘗試;“全部”表示審核成功的和失敗的登錄嘗試。
九、建立一個低權(quán)限用戶做為SQL服務(wù)器服務(wù)的查詢操作專用賬戶
最好不要用LocalSystem或SA。 這個賬戶應(yīng)該設(shè)定作為一個服務(wù)運行的最小權(quán)利,注意當(dāng)使用企業(yè)管理器做以上設(shè)置時,文件、注冊表和使用者權(quán)利上的 ACLs也同時被處理。。
配置方法:展開控制臺根目錄,選擇“數(shù)據(jù)庫”,展開,點擊“用戶”,在右側(cè)用戶列表中可以看到已經(jīng)授權(quán)的用戶,在默認(rèn)狀態(tài)下只有“SA”和“Guest”兩個用戶。雙擊打開已經(jīng)建立的低權(quán)限賬戶,打開數(shù)據(jù)庫用戶屬性。選擇數(shù)據(jù)庫腳色,盡可能低的權(quán)限。打開“權(quán)限”按鈕,賦予用戶相應(yīng)的權(quán)限。
十、不要讓人隨便探測到你的TCP/IP端口
默認(rèn)情況下,SQL Server使用1433端口監(jiān)聽,配置SQL Server時 請改變該端口。
配置方法:在實例屬性中選擇TCP/IP協(xié)議的屬性,選擇隱藏 SQL Server 實例。如果隱藏了 SQL Server 實例,則禁止了對試圖枚舉網(wǎng)絡(luò)上現(xiàn)有的 SQL Server 實例的客戶端所發(fā)出的廣播作出響應(yīng),這樣,除非用Port Scan,否則別人無法用1434來探測你的TCP/IP端口了。
十一、管理擴展存儲過程
對存儲過程進(jìn)行大手術(shù),并且對賬號調(diào)用擴展存儲過程的權(quán)限要慎重。我們在大多數(shù)應(yīng)用中其實用不到多少系統(tǒng)的存儲過程,而SQL Server的這么多系統(tǒng)存儲過程只是用來適應(yīng)廣大用戶需求的,所以可以刪除不必要的存儲過程,因為有些系統(tǒng)的存儲過程能很容易地被人利用起來提升權(quán)限或進(jìn)行破壞。如果不需要擴展存儲過程xp_cmdshell ,使用這個SQL語句把它去掉:
use master
exec sp_dropextendedproc'xp_cmdshell'
使用以下語句也可以恢復(fù)該存儲過程:
Exec sp_addextendedproc ' xp_cmdshell ', 'xpsql70.dll'
如果不需要可停用部分對象連接與嵌入自動化儲存程序( 注意: 當(dāng)這些儲存程序被停用的時候 , 部分企業(yè)管理器功能可能丟失):
Sp_OASetProperty
Sp_OAStop
Sp_OADestroy
Sp_OAGetProperty
Sp_OACreate
Sp_OAMethod
Sp_OAGetErrorInfo
禁用你不需要的以下注冊表存儲過程,它們有些能夠讀出操作系統(tǒng)管理員的密碼,如:
Xp_regdeletevalue
Xp_regremovemultistring
Xp_regenumvalues
Xp_regread
Xp_regwrite
Xp_regaddmultistring
Xp_regdeletekey
移除其他您認(rèn)為會造成威脅的系統(tǒng)儲存進(jìn)程如:
xp_enumqueuedtasks
xp_grantlogin
xp_logevent
xp_loginconfig
xp_logininfo
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_fixeddrives
xp_getfiledetails
xp_getnetname
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_eventlog
xp_findnextmsg
xp_enumerrorlogs
xp_enumgroups
xp_revokelogin
xp_runwebtask
xp_snmp_raisetrap
xp_sprintf
xp_sqlinventory
xp_sqlregister
xp_sqltrace
xp_schedulersignal
xp_sendmail
xp_sscanf
xp_startmail
十二、加強數(shù)據(jù)庫日志的記錄,定期檢測SQL日志文件
審核數(shù)據(jù)庫登錄事件的“失敗和成功”,在實例屬性中選擇“安全性”,將審核級別選定為全部,這樣在數(shù)據(jù)庫系統(tǒng)和操作系統(tǒng)日志里面,就會詳細(xì)記錄所有賬號的登錄事件。
定期查看SQL Server日志,檢查是否有可疑登錄事件發(fā)生,或者使用DOS命令。findstr /C:“登錄” d:Microsoft SQL ServerMSSQLLOG*.* ,檢索其中成功登錄或者登錄失敗的信息,從中找到非法入侵所作的數(shù)據(jù)庫登錄嘗試, 配置方法:展開控制臺根目錄,選擇“管理”,展開,選擇“SQL Server日志”,在右側(cè)窗口列表中打開所選日志文件,會看到上面有詳細(xì)的記錄。
十三、將數(shù)據(jù)庫文件和日志文件分開存儲在不同的物理存儲設(shè)備上
配置方法:雙擊數(shù)據(jù)庫文件名,打開數(shù)據(jù)庫屬性,點擊“數(shù)據(jù)文件”選項,設(shè)置數(shù)據(jù)文件存放的位置。點擊“事務(wù)日志”選項,設(shè)置日至文件存放的位置。一旦發(fā)生災(zāi)難性故障,如硬件損壞,數(shù)據(jù)文件和日志存放在一起,沒有任何手段可以恢復(fù)數(shù)據(jù)。但若是做過數(shù)據(jù)備份,同時日志文件保存在其它位置,日志文件沒有損壞,就可能恢復(fù)數(shù)據(jù)。
十四、禁用SQL郵件功能
它的存在會使?jié)撛诘墓粽哌f送潛在的 trojans ,病毒或是簡單實現(xiàn)一個DOS攻擊成為可能。
十五、推薦使用SQL Server2000支持的“完全”數(shù)據(jù)庫故障還原模型方式
SQL Server2000支持“簡單”、“完全”和“大容量日志記錄”三種數(shù)據(jù)庫故障還原模型,配置方法:選中數(shù)據(jù)庫名稱,鼠標(biāo)右鍵選擇屬性,點擊“選項”選項卡,在故障還原子段下有‘模型欄目,選擇“完全”方式。
第十六、制定嚴(yán)格的數(shù)據(jù)庫備份還原策略
設(shè)計有效的備份和還原策略需考慮的因此包括:數(shù)據(jù)可用性和防數(shù)據(jù)丟失目標(biāo)、數(shù)據(jù)庫特性、資源約束等。當(dāng)然其中最重要的一點是務(wù)必將將數(shù)據(jù)庫和備份放置在不同的設(shè)備上。 否則,如果包含數(shù)據(jù)庫的設(shè)備失敗,備份也將不可用。 此外,將數(shù)據(jù)和備份放置在不同的設(shè)備上還可以提高寫入備份和使用數(shù)據(jù)庫時的 I/O 性能。
以上是SQL Server 2000數(shù)據(jù)庫安全配置常用的一些方法,我們?nèi)绻芙Y(jié)合自身工作靈活使用,數(shù)據(jù)庫的安全管理工作應(yīng)該就不是一件難事了。