數(shù)據(jù)庫服務器實際上是每一個電子交易、金融和企業(yè)資源規(guī)劃(ERP)系統(tǒng)的基礎(chǔ),它還經(jīng)常包括來自商業(yè)伙伴和客戶的敏感信息。盡管這些系統(tǒng)的數(shù)據(jù)完整性和安全性是相當重要的,但對數(shù)據(jù)庫采取的安全檢查措施的級別還比不上操作系統(tǒng)和網(wǎng)絡的安全檢查措施的級別。許多因素都可能破壞數(shù)據(jù)的完整性并導致非法訪問,這些因素包括復雜程度、密碼安全性較差、誤配置、未被察覺的系統(tǒng)后門以及自適應數(shù)據(jù)庫安全方法的強制性常規(guī)使用等。
數(shù)據(jù)庫安全問題為什么非常重要?
保護系統(tǒng)敏感信息和數(shù)字資產(chǎn)不受非法訪問。
任何公司的主要電子數(shù)字資產(chǎn)都存貯在現(xiàn)代的關(guān)系數(shù)據(jù)產(chǎn)品中。商業(yè)機構(gòu)和政府組織都是利用這些數(shù)據(jù)庫服務器得到人事信息,如員工的工資表,醫(yī)療記錄等。因此他們有責任保護別人的隱私,并為他們保密。數(shù)據(jù)庫服務器還存有以前的和將來的敏感的金融數(shù)據(jù),包括貿(mào)易記錄、商業(yè)合同及帳務數(shù)據(jù)等。象技術(shù)的所有權(quán)、工程數(shù)據(jù),甚至市場企劃等決策性的機密信息,必須對竟爭者保密,并阻止非法訪問,數(shù)據(jù)庫服務器還包括詳細的顧客信息,如財務帳目,信用卡號及商業(yè)伙伴的信用信息等。
數(shù)據(jù)庫是個極為復雜的系統(tǒng),因此很難進行正確的配置和安全維護
數(shù)據(jù)庫服務器的應用相當復雜,掌握起來非常困難-當然竟爭者使用的操作系統(tǒng)也是一樣的復雜。諸如Oracle、sybase、Microsoft SQL服務器都具有以下特征:用戶帳號及密碼、校驗系統(tǒng)、優(yōu)先級模型和控制數(shù)據(jù)庫目標的特別許可、內(nèi)置式命令(存儲的步驟或包)、唯一的腳本和編程語言(通常為SQL的特殊衍生語)、middleware、網(wǎng)絡協(xié)議、補丁和服務包⑶坑辛Φ氖菘夤芾硎滌貿(mào)絳蠔涂⒐ぞ?。写夃DBA都忙于管理復雜的系統(tǒng),所以很可能沒有檢查出嚴重的安全隱患和不當?shù)呐渲?,甚至根本沒有進行檢測。所以,正是由于傳統(tǒng)的安全體系在很大程度上忽略了數(shù)據(jù)庫安全這一主題,使數(shù)據(jù)庫專業(yè)人員也通常沒有把安全問題當作他們的首要任務?!白赃m應網(wǎng)絡安全”的理念-將安全問題看作持續(xù)不斷的“工作進程”,而不是一次性的檢查-并未被大多數(shù)數(shù)據(jù)庫管理者所接受。
保障數(shù)據(jù)庫服務器上的網(wǎng)絡和操作系統(tǒng)數(shù)據(jù)安全是至關(guān)重要的,但這些措施對于保護數(shù)據(jù)庫服務器的安全還很不夠。
在許多資深安全專家中普遍存在著一個錯誤概念,他們認為:一旦訪問并鎖定了關(guān)鍵的網(wǎng)絡服務和操作系統(tǒng)的漏洞,服務器上的所有應用程序就得到了安全保障?,F(xiàn)代數(shù)據(jù)庫系統(tǒng)具有多種特征和性能配置方式,在使用時可能會誤用,或危及數(shù)據(jù)的保密性、有效性和完整性。首先,所有現(xiàn)代關(guān)系型數(shù)據(jù)庫系統(tǒng)都是“可從端口尋址的”,這意味著任何人只要有合適的查詢工具,就都可與數(shù)據(jù)庫直接相連,并能躲開操作系統(tǒng)的安全機制。例如:可以用TCP/IP協(xié)議從1521和1526端口訪問Oracle 7.3和8數(shù)據(jù)庫。多數(shù)數(shù)據(jù)庫系統(tǒng)還有眾所周知的默認帳號和密碼,可支持對數(shù)據(jù)庫資源的各級訪問。從這兩個簡單的數(shù)據(jù)相結(jié)合,很多重要的數(shù)據(jù)庫系統(tǒng)很可能受到威協(xié)。不幸的是,高水平的入侵者還沒有停止對數(shù)據(jù)庫的攻擊。
拙劣的數(shù)據(jù)庫安全保障設施不僅會危及數(shù)據(jù)庫的安全,還會影響到服務器的操作系統(tǒng)和其它信用系統(tǒng)。
還有一個不很明顯的原因說明了保證數(shù)據(jù)庫安全的重要性-數(shù)據(jù)庫系統(tǒng)自身可能會提供危及整個網(wǎng)絡體系的機制。例如,某個公司可能會用數(shù)據(jù)庫服務器保存所有的技術(shù)手冊、文檔和白皮書的庫存清單。數(shù)據(jù)庫里的這些信息并不是特別重要的,所以它的安全優(yōu)先級別不高。即使運行在安全狀況良好的操作系統(tǒng)中,入侵者也可通過“擴展入駐程序”等強有力的內(nèi)置數(shù)據(jù)庫特征,利用對數(shù)據(jù)庫的訪問,獲取對本地操作系統(tǒng)的訪問權(quán)限。這些程序可以發(fā)出管理員級的命令,訪問基本的操作系統(tǒng)及其全部的資源。如果這個特定的數(shù)據(jù)庫系統(tǒng)與其它服務器有信用關(guān)系,那么入侵者就會危及整個網(wǎng)絡域的安全。
數(shù)據(jù)庫是新型電子交易、企業(yè)資源規(guī)劃(ERP)和其它重要商業(yè)系統(tǒng)的基礎(chǔ)。
在電子商務、電子貿(mào)易的著眼點集中于WEB服務器、Java和其它新技術(shù)的同時,應該記住這些以用戶為導向和企業(yè)對企業(yè)的系統(tǒng)都是以Web服務器后的關(guān)系數(shù)據(jù)庫為基礎(chǔ)的。它們的安全直接關(guān)系到系統(tǒng)的有效性、數(shù)據(jù)和交易的完整性、保密性。系統(tǒng)拖延效率欠佳,不僅影響商業(yè)活動,還會影響公司的信譽。不可避免地,這些系統(tǒng)受到入侵的可能性更大,但是并未對商業(yè)伙伴和客戶敏感信息的保密性加以更有效的防范。此外,ERP和管理系統(tǒng),如ASPR/3和PeopleSoft等,都是建立在相同標準的數(shù)據(jù)庫系統(tǒng)中。無人管理的安全漏洞與時間拖延、系統(tǒng)完整性問題和客戶信任等有直接的關(guān)系。
我需要尋找哪此類型的安全漏洞呢?
傳統(tǒng)的數(shù)據(jù)庫安全系統(tǒng)只側(cè)重于以下幾項:用戶帳戶、作用和對特定數(shù)據(jù)庫目標的操作許可。例如,對表單和存儲步驟的訪問。必須對數(shù)據(jù)庫系統(tǒng)做范圍更廣的徹底安全分析,找出所有可能領(lǐng)域內(nèi)的潛在漏洞,包括以下提到的各項內(nèi)容。
與銷售商提供的軟件相關(guān)的風險-軟件的BUG、缺少操作系統(tǒng)補丁、脆弱的服務和選擇不安全的默認配置。
與管理有關(guān)的風險 -可用的但并未正確使用的安全選項、危險的默認設置、給用戶更多的不適當?shù)臋?quán)限,對系統(tǒng)配置的未經(jīng)授權(quán)的改動。
與用戶活動有關(guān)的風險-密碼長度不夠、對重要數(shù)據(jù)的非法訪問以及竊取數(shù)據(jù)庫內(nèi)容等惡意行動。
以上各類危險都可能發(fā)生在網(wǎng)絡設備、操作系統(tǒng)或數(shù)據(jù)庫自身當中。對數(shù)據(jù)庫服務器進行安全保護時,都應將這些因素考慮在內(nèi)。
數(shù)據(jù)庫安全-漏洞區(qū)域及示例
在重要數(shù)據(jù)庫服務器中,還存在著多種數(shù)據(jù)庫服務器的漏洞和錯誤配置。下面列出了幾個實例。
安全特征不夠成熟-絕大多數(shù)常用的關(guān)系數(shù)據(jù)庫系統(tǒng)已經(jīng)存在了十多年之久,并且具有強大的特性,產(chǎn)品非常成熟。但不幸的是,IT及安全專業(yè)人士認為理所當然應該具有的許多特征,在操作系統(tǒng)和現(xiàn)在普遍使用的數(shù)據(jù)庫系統(tǒng)中,并沒有提供。
非內(nèi)建式數(shù)據(jù)庫標準安全性能
MS SQL Server Sybase Oracle 7 Oracle 8
帳戶鎖定設備 no no no yes
重命名管理帳戶 no no no no
要求嚴密的口令 no no no yes
陳舊的帳戶 no no no no
密碼失效 no yes no yes
登錄時間限制 no no no no
例如,上表列出了大多數(shù)IT專業(yè)人士期望或要求操作系統(tǒng)所應具備的特性,但在數(shù)據(jù)庫服務器的標準安全設施中并未出現(xiàn)。由于這些數(shù)據(jù)庫都可進行端口尋址的,操作系統(tǒng)的核心安全機制并未應用到與網(wǎng)絡直接聯(lián)接的數(shù)據(jù)庫中。一些產(chǎn)品,例如Microsoft SQL Server, 都可利用功能更加強大的Windows NT安全機制去發(fā)現(xiàn)上面提到的安全漏洞。但是,考慮到兼容性問題(運行環(huán)境并不全是Windows NT),所以大多數(shù)依然執(zhí)行MS SQL Server的安全標準。而實施則是另外一回事了。如果公司實用的是Oracle 8,管理員如何能知道是否真地實施了安全特性?是否一直在全公司中得到實施?
這幾項特性相結(jié)合,使得與之相關(guān)的問題更加嚴峻。由于系統(tǒng)管理員的帳號是不能重命名的(SQL和Sybase是“sa”,對于Oracle是“System”和“sys”),如果沒有密碼封鎖可用或已配置完畢,入侵者就可以對數(shù)據(jù)庫服務器發(fā)動強大字典式登錄進攻,最終能破解密碼,有什么能夠擋住他們對服務器耐心,持久的高水平攻擊呢?
數(shù)據(jù)庫密碼的管理-在多數(shù)數(shù)據(jù)庫系統(tǒng)提供的安全標準中,沒有任何機制能夠保證某個用戶正在選擇有力的-或任意的-密碼。這一基本的安全問題需要細心的監(jiān)督。此外還需要對全部密碼列表進行管理和安全檢查。例如,Oracle數(shù)據(jù)庫系統(tǒng)具有十個以上地特定地默認用戶帳號和密碼,此外還有用于管理重要數(shù)據(jù)庫操作的唯一密碼,如對Oracle數(shù)據(jù)庫開機程序的管理、訪問網(wǎng)絡的聽眾過程以及遠程訪問數(shù)據(jù)庫的權(quán)限等。如果安全出現(xiàn)了問題,這些系統(tǒng)的許多密碼都可讓入侵者對數(shù)據(jù)庫進行完全訪問,這些密碼甚至還被存儲在操作系統(tǒng)的普通文本文件里。下面有幾個示例:
Oracle Internal 密碼-Oracle內(nèi)部密碼存放在文件名為“strXXX.cmd”的文本文件中,XXX是Oracle系統(tǒng)的ID或SID,默認值為“ORCL”。用在Oracle數(shù)據(jù)庫的啟動過程中,要用到Oracle Internet密碼,具有隨意訪問數(shù)據(jù)庫資源的權(quán)力。這個文件應妥善保管,以用于基于Windows NT的ORACLE程序。
Oracle監(jiān)聽程序過程密碼-用于起動并停止Oracle監(jiān)聽程序過程的密碼,該過程可將所有的新業(yè)務路由到系統(tǒng)上合適的Oracle例子中,需選擇一個保密性強的密碼替換系統(tǒng)的默認值,使用許可必須在“l(fā)istener.ora”文件中得到保護,該文件存貯了Oracle所有的使用密碼。對密碼的不當訪問可能會使入侵者對基于Oracle的電子交易站點進行拒絕服務攻擊。
Oracle內(nèi)部密碼 -“orapw”文件許可控制-Oracle內(nèi)部密碼和由SYSDBA授權(quán)的帳號密碼存貯在“Orapw”文本文件中。盡管文件已被加密,但在ORACLE的UNIX和Windows NT的程序中,還是要限制該文件的使用權(quán)限。如果該文件被訪問,那么遭解密的文件很容易遭到強有力的攻擊。
這些例子說明了管理員、系統(tǒng)密碼和帳號是何等的重要,它們都可能會遭到意想不到的攻擊方法的攻擊。注意密碼管理問題決不僅限于Oracle數(shù)據(jù)庫,幾乎所有主要數(shù)據(jù)庫提供商的產(chǎn)品都有這種問題。
操作系統(tǒng)的后門-許多數(shù)據(jù)庫系統(tǒng)的特征參數(shù)盡管方便了DBA,但也為數(shù)據(jù)庫服務器主機操作系統(tǒng)留下了后門。
如上所述,對Sybase或SQL服務器的“sa”密碼造成危害的入侵者有可能利用“擴展入駐程序”,得到基本操作系統(tǒng)的使用權(quán)限。以“sa”的身份登錄,入侵者使用擴展入駐程序xp–cmdshell,該程序允許Sybase或SQL服務器的用戶運行系統(tǒng)指令,就象該用戶在服務器控制臺上運行指令一樣。例如,可實用下列SQL指令添加一個Windows NT帳號,帳號名為“hacker1”,密碼為“nopassoword”,并把“hacker1”添加到“Administrators”組:
xp-cmdshell ‘net user hacker1 nopassword/ADD’
go
xp-comdshell ’net localgroup/ADD Administrators hacker1’
go
現(xiàn)在這個非法入侵者就成了Windows NT的管理員了(我們只能祈禱這個SQL服務器不是域控制器)。這個簡單的攻擊之所以成功,是因為命令被提交給實用Windows NT帳號的操作系統(tǒng),而MSSQLServer的服務就運行在這個帳號下。在默認情況下,這個帳號就是“LocalSystem”帳號---本地Windows NT系統(tǒng)中最有效力的帳號。另一個途徑是黑客可能使用SQL服務器,利用入駐程序xp-regread從注冊表中讀出加密的Windows NT SAM密碼,對操作系統(tǒng)的安全造成威脅。由于有幾種免費的Windows NT密碼攻擊器軟件,因此保管好加密的Windows NT密碼的安全變得格外重要。以下例子說明了入侵者是怎樣得到信息的:
xp-regread’HKEY–LOCAL–MACHINE’,’SECURITYSAMDomainsAccount’,’F’
注意,從注冊表中讀出加密密碼是一件本地Windows NT管理員帳號都無法做到的事。SQL服務器之所以能夠做到,是因為默認方式運行的SQL服務使用的恰恰就是“LocalSystem”帳號。
Oracle數(shù)據(jù)庫系統(tǒng)還具有很多有用的特征,可用于對操作系統(tǒng)自帶文件系統(tǒng)的直接訪問。例如在合法訪問時,UTL_FILE軟件包允許用戶向主機操作系統(tǒng)進行讀寫文件的操作。UTL_FILE_DIR簡檔變量很容易配置錯誤,或被故意設置為允許Oracle用戶用UTL_FILE軟件包在文件系統(tǒng)的任何地方進行寫入操作,這樣也對主機操作系統(tǒng)構(gòu)成了潛在的威脅。
校驗-關(guān)系數(shù)據(jù)庫系統(tǒng)的校驗系統(tǒng)可以記錄下信息和事件,從基本情況到任一細節(jié),無一遺漏。但是校驗系統(tǒng)只在合理使用和配置的前提下,才能提供有用的安全防范和警告信息。當入侵者正在試圖侵入特定的數(shù)據(jù)庫服務器時,這些特征可及早給出警告信息,為檢測和彌補損失提供了寶貴的線索。
特洛伊木馬程序-盡管人們知道操作系統(tǒng)中的特洛伊木馬程序已經(jīng)有好幾年了,但是數(shù)據(jù)庫管理員還需注意到木馬程序帶給系統(tǒng)入駐程序的威脅。一個著名的特洛伊木馬程序修改了入駐程序的密碼,并且當更新密碼時,入侵者能得到新的密碼。例如,某個個人可以在sp–password系統(tǒng)入駐程序中添加幾行命令,就可在表單中增加新的密碼,用e-mail傳遞密碼或?qū)⒚艽a寫入外部文件以備日后使用。這一辦法可連續(xù)獲取密碼,直到入侵者得到的“sa”密碼被更換-使得更深層的入侵未被察覺。一個入侵者或心懷不滿的雇員只需進入系統(tǒng)一次,放置好特洛伊木馬后就可得到以后的一系列密碼。
總結(jié)
安全專業(yè)人士、校驗員、DBA和電子商務的規(guī)劃人員在部署重要商業(yè)系統(tǒng)時,都需注意到數(shù)據(jù)庫的安全問題。要想了解的系統(tǒng)的安全狀態(tài)和發(fā)展方向,您就得部署系統(tǒng),以對數(shù)據(jù)庫服務器做出最徹底的評估,并進行常規(guī)的安全評估。所有系統(tǒng)都應該采用信息風險管理原則,以進行監(jiān)督、檢測,對安全漏洞做出響應。
更多信息請查看IT技術(shù)專欄