袁 勇
[摘要]SQL Server是微軟公司推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng),很多電子商務(wù)網(wǎng)站、企業(yè)內(nèi)部信息化平臺等都是建立在SQL Server數(shù)據(jù)庫基礎(chǔ)之上。為防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞,微軟公司建立一套靈活強(qiáng)大的安全管理機(jī)制。但再完美的系統(tǒng)都可能存在漏洞,或是使用者安全意識不強(qiáng)而帶來系統(tǒng)運(yùn)行過程的不安全性。安全使用SQL Server數(shù)據(jù)庫,必須采取補(bǔ)丁策略、防范SQL注入攻擊策略和網(wǎng)絡(luò)連接策略。
[關(guān)鍵詞]計算機(jī)安全數(shù)據(jù)庫SQL SERVER
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)1110091-01
在計算機(jī)安全領(lǐng)域中,人們往往更多地關(guān)注系統(tǒng)基礎(chǔ)架,比如討論防火墻、網(wǎng)絡(luò)、操作系統(tǒng)、Web服務(wù)器、電子郵件服務(wù)器和域名服務(wù)器的安全性策略,而很少關(guān)注數(shù)據(jù)庫。但實際上,數(shù)據(jù)庫作為計算機(jī)系統(tǒng)的核心部分,是企業(yè)、公司、機(jī)關(guān)的重要信息中心。數(shù)據(jù)庫才是攻擊者的主要目標(biāo)。如何加強(qiáng)SQL SERVER數(shù)據(jù)庫安全是一個很值得探討的問題。
一、關(guān)于SQL SERVER數(shù)據(jù)庫的安全性
SQL Server是微軟公司推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng),很多電子商務(wù)網(wǎng)站、企業(yè)內(nèi)部信息化平臺等都是建立在SQL Server數(shù)據(jù)庫基礎(chǔ)之上。為了防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞,微軟公司建立了一套靈活強(qiáng)大的安全管理機(jī)制。
SQL Server數(shù)據(jù)庫安全性管理是建立在認(rèn)證(authentication)和訪問許可(permission)兩者機(jī)制上。認(rèn)證是指來確定登陸SQL Server數(shù)據(jù)庫的用戶的登陸帳號和密碼是否正確,以此來驗證其是否具有連接SQL Ser
ver數(shù)據(jù)庫的權(quán)限[1]。但是,通過認(rèn)證階段并不代表能夠訪問SQL Server
數(shù)據(jù)庫中的數(shù)據(jù),用戶只有在獲取訪問數(shù)據(jù)庫的權(quán)限之后,才能夠?qū)Ψ?wù)器上的數(shù)據(jù)庫進(jìn)行權(quán)限許可下的各種操作,如針對數(shù)據(jù)庫對象(表、視圖、存儲過程等)進(jìn)行操作,通過用戶帳號設(shè)置來實現(xiàn)這種用戶訪問數(shù)據(jù)庫權(quán)限。在SQL Server數(shù)據(jù)庫的安全模型中主要包括SQL Server登錄、數(shù)據(jù)庫用戶、權(quán)限、角色。SQL Server的安全控制策略是一個層次結(jié)構(gòu)系統(tǒng)的集合。
二、SQL SERVER數(shù)據(jù)庫危險來源
雖然微軟在SQL SERVER數(shù)據(jù)庫系統(tǒng)中建立了較為嚴(yán)密的安全管理機(jī)制,但再完美的系統(tǒng)都可能存在漏洞,或是使用者安全意識不強(qiáng)而帶來系統(tǒng)運(yùn)行過程的不安全性。歸納起來,SQL SERVER數(shù)據(jù)庫的不安全性主要來自兩方面:一方面,由于一些管理員和用戶安全意識薄弱,使數(shù)據(jù)庫的安全問題。另一方面,系統(tǒng)中存在的安全漏洞和不當(dāng)?shù)呐渲靡步o非法用戶提供了可乘之機(jī),使他們未經(jīng)授權(quán)即闖入系統(tǒng),破壞和竊取數(shù)據(jù),造成嚴(yán)重后果。
系統(tǒng)安全漏洞,也叫系統(tǒng)脆弱性(Vulnerability),是計算機(jī)系統(tǒng)在硬件、軟件、協(xié)議的設(shè)計與實現(xiàn)過程中或系統(tǒng)安全策略上存在的缺陷和不足。廣義的系統(tǒng)安全漏洞是一切導(dǎo)致威脅、損壞計算機(jī)系統(tǒng)安全的因素。SQL Server數(shù)據(jù)庫的系統(tǒng)漏洞產(chǎn)生的主要原因都是由于程序員不正確和不安全編程引起的。很多程序員在編程開始時沒有充分考慮到安全問題,在投入使用時,由于用戶不正確的輸入及不恰當(dāng)?shù)呐渲枚伎梢詫?dǎo)致漏洞的出現(xiàn)。
三、SQL SERVER數(shù)據(jù)庫安全策略
基于SQL Server數(shù)據(jù)庫系統(tǒng)運(yùn)行環(huán)境及其漏洞形成原因,我們要針對問題采取以下策略。
(一)補(bǔ)丁策略
SQL Server2000中存在多個安全漏洞,安裝完畢后,應(yīng)及時安裝或更新最新的補(bǔ)丁。因為攻擊者可能利用這些漏洞,繞過數(shù)據(jù)庫策略,系統(tǒng)漏洞會泄露敏感信息或執(zhí)行惡意代碼從而威脅數(shù)據(jù)庫服務(wù)器安全。為了提高服務(wù)器安全性,最有效的一個方法就是時常給系統(tǒng)打補(bǔ)丁,將系統(tǒng)升級到Service Pack4(SP4)。同時,應(yīng)該安裝所有已發(fā)布的安全更新,并運(yùn)行Microsoft Baseline Security Analyzer(MBSA),因為MBSA會通過密碼、訪問權(quán)限、訪問控制列表以及注冊等方式查找問題,并找出遺失的安全補(bǔ)丁或服務(wù)包。另外,用戶還要注冊微軟的免費(fèi)安全通知服務(wù),該服務(wù)會以電子郵件的形式通知我們有什么侵入安全系統(tǒng)以及如何解決它們。盡管安全補(bǔ)丁或服務(wù)包有助于SQL Server數(shù)據(jù)庫免受許多威脅,但是它們并非“終結(jié)者”,對快速運(yùn)行的安全問題,如蠕蟲攻擊者就有點(diǎn)力不從心了。我們還要做下面幾項工作。
(二)防范SQL注入攻擊策略
SQL注入(SQL injection)是指用戶可以傳遞任意的、特別的(惡意的)代碼,這些代碼通常被添加到有效的SQL代碼中[2],從而對系統(tǒng)進(jìn)行攻擊。預(yù)防SQL注入攻擊的第一步是使用驗證器驗證用戶的輸入。例如,可以限制輸入的長度和類型等,這樣就限制了黑客鍵入字符的字?jǐn)?shù),從而限制了黑客向服務(wù)器發(fā)送大量的非法的命令。第二步是對用戶輸入的數(shù)據(jù)先進(jìn)行過濾,把單引號和雙引號全部過濾掉,再進(jìn)行SQL語句的構(gòu)造,從而大大降低了攻擊者成功的概率。另外,還可以利用參數(shù)化存儲過程來訪問數(shù)據(jù)庫,確保不會將輸入字符串看作是可執(zhí)行語句。當(dāng)指定了參數(shù)的類型和長度后,如果用戶輸入一個無效的值到當(dāng)前的數(shù)據(jù)類型中,則查詢將失敗。如果不能使用存儲過程,在構(gòu)建SQL命令時要利用SQL參數(shù),這樣,攻擊者就不能使用特殊字符拼接字符串。指定了參數(shù)的長度,就能防止大量的數(shù)據(jù)傳遞到數(shù)據(jù)庫服務(wù)器中。
(三)網(wǎng)絡(luò)連接策略
將SQL Server連接到Internet需要考慮更多的安全問題,保證只有經(jīng)過身份驗證的用戶才可以訪問數(shù)據(jù)庫服務(wù)器,并且只能訪問他們業(yè)務(wù)流程所需的資源,同時防止黑客們對網(wǎng)上信息進(jìn)行竊聽、篡改。為此我們要做以下工作。
首先,允許通過Microsoft代理服務(wù)器連接到SQL Server。Microsoft
代理服務(wù)器是一個提供對Internet進(jìn)行安全訪問的獨(dú)立應(yīng)用程序,它可以防止未經(jīng)身份驗證的用戶連接到專用網(wǎng),并通過控制偵聽端口的權(quán)限和訪問來確保敏感數(shù)據(jù)的安全性。
其次,可以在配置時將該端口改變或者隱藏服務(wù)。因為,默認(rèn)情況下,SQL Server使用1433端口監(jiān)聽。2002年5月發(fā)現(xiàn)的第一個面向SQL server的病毒SQL Snake(又叫Spida)就是通過此端口進(jìn)入的[3]。另外,由于1434端口探測沒有限制,惡意用戶能夠由它探測到一些數(shù)據(jù)庫信息,而且還可能遭到DOS攻擊。
最后,要對SQL Server所傳遞的文件加密。因為SQL Server使用Tabu
lar DataStream協(xié)議來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,如果不加密的話,所有的網(wǎng)絡(luò)傳輸都是明文,很容易被非法入侵者截獲到傳輸內(nèi)容,包括數(shù)據(jù)庫賬號和密碼,有很大的安全隱患。
參考文獻(xiàn):
[1]李勁、謝兆陽,SQL Server 2000數(shù)據(jù)庫設(shè)計與系統(tǒng)管理,清華大學(xué)出版社,2004.