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