時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
數(shù)據(jù)庫(kù)是電子商務(wù)、金融以及ERP系統(tǒng)的基礎(chǔ),通常都保存著重要的商業(yè)伙伴和客戶的信息。大多數(shù)企業(yè)、組織以及政府部門(mén)的電子數(shù)據(jù)都保存在各種數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)服務(wù)器還掌握著敏感的金融數(shù)據(jù)。包括交易記錄、商業(yè)事務(wù)和賬號(hào)數(shù)據(jù),戰(zhàn)略上的或者專業(yè)的信息,比如專利和工程數(shù)據(jù),甚至市場(chǎng)計(jì)劃等等應(yīng)該保護(hù)起來(lái)防止競(jìng)爭(zhēng)者和其他非法者獲取的資料。數(shù)據(jù)完整性和合法存取受到很多方面的安全威脅,包括密碼策略、系統(tǒng)后門(mén)、數(shù)據(jù)庫(kù)操作以及本身的安全方案。但是數(shù)據(jù)庫(kù)通常沒(méi)有象操作系統(tǒng)和網(wǎng)絡(luò)這樣在安全性上受到重視。
微軟的SQL Server是一種廣泛使用的數(shù)據(jù)庫(kù),很多電子商務(wù)網(wǎng)站、企業(yè)內(nèi)部信息化平臺(tái)等都是基于SQL Server上的,多數(shù)管理員認(rèn)為只要把網(wǎng)絡(luò)和操作系統(tǒng)的安全搞好了,那么所有的應(yīng)用程序也就安全了。大多數(shù)系統(tǒng)管理員對(duì)數(shù)據(jù)庫(kù)不熟悉,而數(shù)據(jù)庫(kù)管理員又對(duì)安全問(wèn)題關(guān)心太少,而且一些安全公司也忽略數(shù)據(jù)庫(kù)安全,這就使數(shù)據(jù)庫(kù)的安全問(wèn)題更加嚴(yán)峻了。數(shù)據(jù)庫(kù)系統(tǒng)中存在的安全漏洞和不當(dāng)?shù)呐渲猛ǔ?huì)造成嚴(yán)重的后果,而且都比較難以發(fā)現(xiàn)。數(shù)據(jù)庫(kù)應(yīng)用程序通常同操作系統(tǒng)的最高管理員密切相關(guān)。廣泛SQL Server數(shù)據(jù)庫(kù)屬于"端口"型的數(shù)據(jù)庫(kù),這就表示任何人都能夠用分析工具試圖連接到數(shù)據(jù)庫(kù)上,從而繞過(guò)操作系統(tǒng)的安全機(jī)制,進(jìn)而闖入系統(tǒng)、破壞和竊取數(shù)據(jù)資料,甚至破壞整個(gè)系統(tǒng)。
這里,我們主要談?wù)撚嘘P(guān)SQL Server2000數(shù)據(jù)庫(kù)的安全配置以及一些相關(guān)的安全和使用上的問(wèn)題。
在進(jìn)行SQL Server 2000數(shù)據(jù)庫(kù)的安全配置之前,首先你必須對(duì)操作系統(tǒng)進(jìn)行安全配置,保證你的操作系統(tǒng)處于安全狀態(tài)。然后對(duì)你要使用的操作數(shù)據(jù)庫(kù)軟件(程序)進(jìn)行必要的安全審核,比如對(duì)ASP、PHP等腳本,這是很多基于數(shù)據(jù)庫(kù)的WEB應(yīng)用常出現(xiàn)的安全隱患,對(duì)于腳本主要是一個(gè)過(guò)濾問(wèn)題,需要過(guò)濾一些類似 ,' ; @ / 等字符,防止破壞者構(gòu)造惡意的SQL語(yǔ)句。接著,安裝SQL Server2000后請(qǐng)打上補(bǔ)丁sp1以及最新的sp2。
在做完上面三步基礎(chǔ)之后,我們?cè)賮?lái)討論SQL Server的安全配置。
1、使用安全的密碼策略
我們把密碼策略擺在所有安全配置的第一步,請(qǐng)注意,很多數(shù)據(jù)庫(kù)賬號(hào)的密碼過(guò)于簡(jiǎn)單,這跟系統(tǒng)密碼過(guò)于簡(jiǎn)單是一個(gè)道理。對(duì)于sa更應(yīng)該注意,同時(shí)不要讓sa賬號(hào)的密碼寫(xiě)于應(yīng)用程序或者腳本中。健壯的密碼是安全的第一步!
SQL Server2000安裝的時(shí)候,如果是使用混合模式,那么就需要輸入sa的密碼,除非你確認(rèn)必須使用空密碼。這比以前的版本有所改進(jìn)。
同時(shí)養(yǎng)成定期修改密碼的好習(xí)慣。數(shù)據(jù)庫(kù)管理員應(yīng)該定期查看是否有不符合密碼要求的賬號(hào)。比如使用下面的SQL語(yǔ)句:
Use master Select name,Password from syslogins where password is null |
2、使用安全的賬號(hào)策略。
由于SQL Server不能更改sa用戶名稱,也不能刪除這個(gè)超級(jí)用戶,所以,我們必須對(duì)這個(gè)賬號(hào)進(jìn)行最強(qiáng)的保護(hù),當(dāng)然,包括使用一個(gè)非常強(qiáng)壯的密碼,最好不要在數(shù)據(jù)庫(kù)應(yīng)用中使用sa賬號(hào),只有當(dāng)沒(méi)有其它方法登錄到 SQL Server 實(shí)例(例如,當(dāng)其它系統(tǒng)管理員不可用或忘記了密碼)時(shí)才使用 sa。建議數(shù)據(jù)庫(kù)管理員新建立一個(gè)擁有與sa一樣權(quán)限的超級(jí)用戶來(lái)管理數(shù)據(jù)庫(kù)。安全的賬號(hào)策略還包括不要讓管理員權(quán)限的賬號(hào)泛濫。
SQL Server的認(rèn)證模式有Windows身份認(rèn)證和混合身份認(rèn)證兩種。如果數(shù)據(jù)庫(kù)管理員不希望操作系統(tǒng)管理員來(lái)通過(guò)操作系統(tǒng)登錄來(lái)接觸數(shù)據(jù)庫(kù)的話,可以在賬號(hào)管理中把系統(tǒng)賬號(hào)"BUILTIN\Administrators"刪除。不過(guò)這樣做的結(jié)果是一旦sa賬號(hào)忘記密碼的話,就沒(méi)有辦法來(lái)恢復(fù)了。
很多主機(jī)使用數(shù)據(jù)庫(kù)應(yīng)用只是用來(lái)做查詢、修改等簡(jiǎn)單功能的,請(qǐng)根據(jù)實(shí)際需要分配賬號(hào),并賦予僅僅能夠滿足應(yīng)用要求和需要的權(quán)限。比如,只要查詢功能的,那么就使用一個(gè)簡(jiǎn)單的public賬號(hào)能夠select就可以了。
3、加強(qiáng)數(shù)據(jù)庫(kù)日志的記錄
審核數(shù)據(jù)庫(kù)登錄事件的"失敗和成功",在實(shí)例屬性中選擇"安全性",將其中的審核級(jí)別選定為全部,這樣在數(shù)據(jù)庫(kù)系統(tǒng)和操作系統(tǒng)日志里,就詳細(xì)記錄了所有賬號(hào)的登錄事件。如圖:
請(qǐng)定期查看SQL Server日志檢查是否有可疑的登錄事件發(fā)生,或者使用DOS命令。
findstr /C:"登錄" d:\Microsoft SQL Server\MSSQL\LOG\*.*
4、管理擴(kuò)展存儲(chǔ)過(guò)程
對(duì)存儲(chǔ)過(guò)程進(jìn)行大手術(shù),并且對(duì)賬號(hào)調(diào)用擴(kuò)展存儲(chǔ)過(guò)程的權(quán)限要慎重。其實(shí)在多數(shù)應(yīng)用中根本用不到多少系統(tǒng)的存儲(chǔ)過(guò)程,而SQL Server的這么多系統(tǒng)存儲(chǔ)過(guò)程只是用來(lái)適應(yīng)廣大用戶需求的,所以請(qǐng)刪除不必要的存儲(chǔ)過(guò)程,因?yàn)橛行┫到y(tǒng)的存儲(chǔ)過(guò)程能很容易地被人利用起來(lái)提升權(quán)限或進(jìn)行破壞。
如果你不需要擴(kuò)展存儲(chǔ)過(guò)程xp_cmdshell請(qǐng)把它去掉。使用這個(gè)SQL語(yǔ)句:
use master sp_dropextendedproc 'xp_cmdshell' |
xp_cmdshell是進(jìn)入操作系統(tǒng)的最佳捷徑,是數(shù)據(jù)庫(kù)留給操作系統(tǒng)的一個(gè)大后門(mén)。如果你需要這個(gè)存儲(chǔ)過(guò)程,用這個(gè)語(yǔ)句可以恢復(fù)過(guò)來(lái)。
sp_addextendedproc 'xp_cmdshell','xpsql70.dll' |
如果你不需要請(qǐng)丟棄OLE自動(dòng)存儲(chǔ)過(guò)程(會(huì)造成管理器中的某些特征不能使用),這些過(guò)程包括如下:
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop |
去掉不需要的注冊(cè)表訪問(wèn)的存儲(chǔ)過(guò)程,注冊(cè)表存儲(chǔ)過(guò)程甚至能夠讀出操作系統(tǒng)管理員的密碼來(lái),如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues Xp_regread Xp_regremovemultistring Xp_regwrite |
還有一些其他的擴(kuò)展存儲(chǔ)過(guò)程,你也最好檢查檢查。在處理存儲(chǔ)過(guò)程的時(shí)候,請(qǐng)確認(rèn)一下,避免造成對(duì)數(shù)據(jù)庫(kù)或應(yīng)用程序的傷害。
5、使用協(xié)議加密
SQL Server 2000使用的Tabular Data Stream協(xié)議來(lái)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,如果不加密的話,所有的網(wǎng)絡(luò)傳輸都是明文的,包括密碼、數(shù)據(jù)庫(kù)內(nèi)容等等,這是一個(gè)很大的安全威脅。能被人在網(wǎng)絡(luò)中截獲到他們需要的東西,包括數(shù)據(jù)庫(kù)賬號(hào)和密碼。所以,在條件容許情況下,最好使用SSL來(lái)加密協(xié)議,當(dāng)然,你需要一個(gè)證書(shū)來(lái)支持。
6、不要讓人探測(cè)到你的TCP/IP端口
默認(rèn)情況下,SQL Server使用1433端口監(jiān)聽(tīng),很多人都說(shuō)SQL Server配置的時(shí)候要把這個(gè)端口改變,這樣別人就不能很容易地知道使用的什么端口了??上?,通過(guò)微軟未公開(kāi)的1434端口的UDP探測(cè)可以很容易知道SQL Server使用的什么TCP/IP端口了。
不過(guò)微軟還是考慮到了這個(gè)問(wèn)題,畢竟公開(kāi)而且開(kāi)放的端口會(huì)引起不必要的麻煩。在實(shí)例屬性中選擇TCP/IP協(xié)議的屬性。選擇隱藏 SQL Server 實(shí)例。如果隱藏了 SQL Server 實(shí)例,則將禁止對(duì)試圖枚舉網(wǎng)絡(luò)上現(xiàn)有的 SQL Server 實(shí)例的客戶端所發(fā)出的廣播作出響應(yīng)。這樣,別人就不能用1434來(lái)探測(cè)你的TCP/IP端口了(除非用Port Scan)。
7、修改TCP/IP使用的端口
請(qǐng)?jiān)谏弦徊脚渲玫幕A(chǔ)上,更改原默認(rèn)的1433端口。在實(shí)例屬性中選擇網(wǎng)絡(luò)配置中的TCP/IP協(xié)議的屬性,將TCP/IP使用的默認(rèn)端口變?yōu)槠渌丝凇?/p>
8、拒絕來(lái)自1434端口的探測(cè)
由于1434端口探測(cè)沒(méi)有限制,能夠被別人探測(cè)到一些數(shù)據(jù)庫(kù)信息,而且還可能遭到DOS攻擊讓數(shù)據(jù)庫(kù)服務(wù)器的CPU負(fù)荷增大,所以對(duì)Windows 2000操作系統(tǒng)來(lái)說(shuō),在IPSec過(guò)濾拒絕掉1434端口的UDP通訊,可以盡可能地隱藏你的SQL Server。
9、對(duì)網(wǎng)絡(luò)連接進(jìn)行IP限制
SQL Server 2000數(shù)據(jù)庫(kù)系統(tǒng)本身沒(méi)有提供網(wǎng)絡(luò)連接的安全解決辦法,但是Windows 2000提供了這樣的安全機(jī)制。使用操作系統(tǒng)自己的IPSec可以實(shí)現(xiàn)IP數(shù)據(jù)包的安全性。請(qǐng)對(duì)IP連接進(jìn)行限制,只保證自己的IP能夠訪問(wèn),也拒絕其他IP進(jìn)行的端口連接,把來(lái)自網(wǎng)絡(luò)上的安全威脅進(jìn)行有效的控制。
上面主要介紹的一些SQL Server的安全配置,經(jīng)過(guò)以上的配置,可以讓SQL Server本身具備足夠的安全防范能力。當(dāng)然,更主要的還是要加強(qiáng)內(nèi)部的安全控制和管理員的安全培訓(xùn)
關(guān)鍵詞標(biāo)簽:SQL Server 2000
相關(guān)閱讀
熱門(mén)文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法