殷泰暉, 李 帥
(中國航天員科研訓練中心 第12研究室,北京100094)
在許多情況下,如員工出差、遠程管理和技術支持等,都需要遠程訪問這些數(shù)據(jù)庫資源。客戶端遠程訪問位于企業(yè)網(wǎng)內(nèi)部的服務器上的應用和數(shù)據(jù),帶來了很大的安全風險,主要體現(xiàn)在數(shù)據(jù)庫運行的穩(wěn)定性和數(shù)據(jù)庫用戶角色的管控2個方面[1]。穩(wěn)定性方面的威脅主要來源于服務器部署的Internet網(wǎng)絡,如黑客可能對數(shù)據(jù)庫服務器發(fā)起各種攻擊導致不能正常提供服務等;數(shù)據(jù)庫用戶角色管控方面的威脅則來自于數(shù)據(jù)庫的安全機制本身,如合法身份的用戶可能被盜用[2]。
數(shù)據(jù)庫的安全問題是安全領域的研究熱點之一,研究內(nèi)容主要集中在數(shù)據(jù)庫設計、安全策略、安全審計等方面,研究成果和應用也十分豐富。采用和部署這些技術,往往存在技術復雜、實現(xiàn)代價大、改變用戶的使用習慣等問題[3-4],對于大部分的中小企業(yè)來說,技術實現(xiàn)簡單、部署快捷的Oracle安全增強方式更容易接受[5-6]。本文探索一條新的提高數(shù)據(jù)庫安全性的途徑,即試圖不改變成熟的商業(yè)數(shù)據(jù)庫本身提供的一些安全機制,通過分析Oracle通信使用的協(xié)議(TNS協(xié)議),以一種實現(xiàn)代價小、部署開發(fā)簡單、透明的方式來加強Oracle數(shù)據(jù)庫的安全。
TNS協(xié)議是Oracle服務器和客戶端通訊使用的Net8協(xié)議體系的基礎網(wǎng)絡協(xié)議[7]。本文分析了TNS協(xié)議特性,針對Internet環(huán)境下的Oracle服務器的安全需求,提出一種基于TNS協(xié)議的安全性改進方案。該方案通過對TNS的協(xié)議解析,集成實現(xiàn)SSL(TLS)與TNS協(xié)議代理,以增強安全性,特別適合于高安全性的應用環(huán)境,并給出了其實現(xiàn)方法。
透明網(wǎng)絡底層(Transparent Network Substrate,簡稱TNS)協(xié)議是Oracle數(shù)據(jù)庫采用的Net8協(xié)議體系的基礎。Oracle數(shù)據(jù)庫服務器和客戶端利用Net8協(xié)議棧實現(xiàn)它們之間的數(shù)據(jù)通訊。TNS在Net8體系結構中的位置如圖1所示,工作在TCP/IP、使用SSL的TCP/IP、命名管道和IPC協(xié)議等協(xié)議之上[7-8]。
在Net8體系結構中,TNS是負責服務器和客戶端通訊的核心協(xié)議。TNS協(xié)議有很多版本,并且大部分都向下兼容。本文研究的版本對象為312,兼容至300。
圖1 TNS在Net8體系結構中的位置
TNS數(shù)據(jù)包具有圖2所示的結構,為一個通用的包頭,包括包校驗、長度、類型等信息,不同類型的TNS報文實現(xiàn)不同的連接功能。
圖2 TNS包結構
其中,Type表示TNS報文的類型,常用的類型號說明見表1所列。
表1 TNS數(shù)據(jù)包類型說明
一個典型的TNS登錄會話如圖3所示。
圖3 一個典型的TNS會話
在TNS會話中,除數(shù)據(jù)報文采用了Oracle的機密機制對數(shù)據(jù)庫操作進行了加密外,其他類型的TNS報文采用的是以明文的方式用TCP/IP協(xié)議進行傳輸,包括服務器地址(host ip address)、端口(port)、服務標示(sid)、數(shù)據(jù)庫賬戶(user)等企業(yè)數(shù)據(jù)庫的敏感信息,均易被黑客獲取。
Oracle服務器和客戶端之間的通訊存在如上所述的安全方面的隱患,要想在Internet環(huán)境下既保證遠程數(shù)據(jù)庫操作的便利性,又確保企業(yè)數(shù)據(jù)的安全,必須采取相應的方法加強安全性,減少其可能存在的安全風險。
增強Oracle安全的方法得到了廣泛的研究,包括實現(xiàn)強制訪問認證機制、更加復雜的網(wǎng)絡管理技術、強化的Oracle安全管理機制等,但是往往實現(xiàn)代價高,技術難度大,部署方式復雜。
對于大部分企業(yè)來說,本文介紹的采用基于TNS協(xié)議解析的代理訪問和SSL集成的方式,是一種更為理想的辦法。其核心思想是采用SSL協(xié)議,將企業(yè)數(shù)據(jù)庫部署環(huán)境和Internet環(huán)境進行隔離,以犧牲效率和性能的方式換取安全性的提高;同時,為了增強客戶端和代理服務器通訊的安全性,數(shù)據(jù)通信上采用SSL協(xié)議。
采用SSL協(xié)議通訊只是增加了安全通道的握手過程,不會影響Oracle客戶端和服務器的會話過程。因此,相對于圖2所示的普通的TNS會話過程,采用代理后的TNS會話如圖4所示。
圖4 一個通過代理的TNS會話
代理服務器的功能包括:① 對Internet上的數(shù)據(jù)庫訪問請求進行授權和管理,只為指定的客戶端提供服務,從而建立起一道Oracle服務器的防火墻;②作為訪問代理,代理轉(zhuǎn)發(fā)授權的Internet上的客戶端數(shù)據(jù)庫請求和反饋來自服務器的數(shù)據(jù)請求結果。
采用TNS代理的方式后,企業(yè)數(shù)據(jù)庫服務器和Internet網(wǎng)絡可以不在同一個網(wǎng)絡上,黑客無法直接發(fā)起對數(shù)據(jù)庫的攻擊,此外,代理服務器上實現(xiàn)的用戶授權和管理功能,除增加了一個對來自用戶的強制訪問認證外,還可以隱藏服務器的IP、Port、SID等敏感信息,減少了敏感信息泄露帶來的安全風險。
此外,采用SSL協(xié)議后,通過采用公開密鑰技術來保證2個應用間通信的保密性和可靠性。代理服務器的公鑰嵌入在其證書中發(fā)給客戶端,客戶端可以用本機存儲的CA證書認證其來源,檢驗它的完整性,因此,杜絕了中間人攻擊。
由以上論述可見,采用TNS代理后,相當于在服務器端和客戶端之間增加了一個安全堡壘,提高了安全性。
在基于TNS協(xié)議的Oracle數(shù)據(jù)庫安全性增強過程中,抽象地看,TNS代理有2個進程:① 訪問代理進程,負責監(jiān)聽來自客戶端的請求,充當客戶端和服務端的代理人角色;② 會話管理進程,負責會話管理、訪問控制和行為審計服務。在實際的應用中,TNS代理在多個客戶端和服務器端轉(zhuǎn)發(fā)數(shù)據(jù),TNS代理需要對每個數(shù)據(jù)庫請求進行TNS協(xié)議的解析、SSL連接的建立、合法的訪問請求代理等,需要完成大量的計算,很有可能成為性能瓶頸。
為了了解安全增強后的Oracle客戶端和服務器端通訊的相對性能,建立了如圖5所示的測試環(huán)境。
圖5 通過代理的TNS會話測試環(huán)境
圖5中,Svr1、Svr2、Svr3為Oracle服務器提供的服務標識,User1、User2…為客戶端使用的數(shù)據(jù)庫賬戶,TNS Proxy和Svr3直接向客戶訪問提供服務,Svr1和Svr2通過局域網(wǎng)和TNS Proxy連接,對外提供的服務標識分別為s1和s2,TNS Proxy直接面向客戶代理Svr1和Svr2的數(shù)據(jù)庫服務。本次實驗搭建了千兆級的高速光纖網(wǎng)絡,使用高速光纖網(wǎng)絡的原因是為了減少Internet環(huán)境下網(wǎng)絡速度對系統(tǒng)性能的影響,使系統(tǒng)的測試數(shù)據(jù)能更好地體現(xiàn)實驗結果的精確性。此外,為了更好地比較使用TNS Proxy以后對Oracle數(shù)據(jù)庫訪問的影響,3個數(shù)據(jù)庫部署的硬件配置相同,使用的數(shù)據(jù)庫相同。實驗測試從客戶端開始發(fā)送第1個數(shù)據(jù)包進行登錄請求到顯示登錄成功的時間,以及成功執(zhí)行相同的查詢語句的響應時間。每個實驗均測試多次,取平均時間。
該環(huán)境下可進行多種組合方式的測試,本實驗共設計了4個測試組,分別測試如下4種使用情形:① 單用戶使用(或不用)代理訪問單個數(shù)據(jù)庫服務器的平均時間;② 單用戶使用(或不用)代理訪問多個數(shù)據(jù)庫的平均時間;③ 多個數(shù)據(jù)庫用戶使用(或不用)代理訪問單個數(shù)據(jù)庫的平均時間;④ 多個數(shù)據(jù)庫用戶使用(或不用)代理訪問單個數(shù)據(jù)庫的平均時間。
測試組1的結果為使用TNS Proxy對性能的影響,可以看出,使用TNS Proxy后,訪問和登錄時間增加最多為1.58s,對用戶的使用影響不大,說明使用TNS Proxy后只是相對時間略有增加。測試組2表示使用單用戶訪問2個數(shù)據(jù)庫的情形,測試組3表示使用2個用戶訪問單個數(shù)據(jù)庫的情形。在理論上,這2種不同訪問方式對系統(tǒng)性能的影響是一樣的,表2的數(shù)據(jù)也說明了這點。
表2 測試結果說明
圖6所示為隨著客戶端數(shù)目的增加使用(不用)TNS Proxy對性能的影響。圖6中數(shù)據(jù)對應表2中測試組4中的數(shù)據(jù),如T1(Svr1)表示Svr1的登錄時間??梢钥闯?,隨著客戶端數(shù)目的增加,使用TNS Proxy在10個用戶以內(nèi),對性能的影響約在3s多,還可以接受,當數(shù)目超過10個時,系統(tǒng)性能下降比不用TNS Proxy明顯,說明TNS Proxy對用戶數(shù)目比較敏感。
圖6 使用(不用)TNS Proxy用戶數(shù)目和訪問時間
綜上所述,TNS Proxy在高速網(wǎng)絡環(huán)境下,當用戶數(shù)目較少時,是能夠滿足用戶使用需求的,隨著用戶數(shù)目的增加,對TNS Proxy性能的影響越來越大。在實際的應用中,當支撐的客戶端數(shù)目不大時,TNS Proxy具有較大的應用價值。
Oracle服務器和客戶端在Internet環(huán)境下進行遠程通訊時,存在一定的安全風險。本文提出的基于TNS協(xié)議的Oracle數(shù)據(jù)庫安全性改進方法可保證客戶端通過Internet安全訪問位于企業(yè)內(nèi)的Oracle數(shù)據(jù)庫服務器,具有部署成本低、系統(tǒng)實現(xiàn)簡單、對客戶端使用透明等優(yōu)點,可廣泛運用在安全要求較高、數(shù)據(jù)流量較小的企事業(yè)Oracle數(shù)據(jù)庫的安全防護上。
比較原有的Oracle客戶端和服務器通訊的方式,本方法將會消耗更多的資源,特別是CPU計算資源。但是,Oracle數(shù)據(jù)庫的安全和性能兩者往往是互相制約的,用戶需要在安全性和系統(tǒng)性能方面做出權衡。實際上,目前的Internet環(huán)境下,性能受網(wǎng)絡速度的影響更大;此外,由于硬件設備的性能提高很快,可以采用更高的硬件配置來提高系統(tǒng)的性能。
[1]Mykletun E,Narasimha M,Tsudik G.Authentication and integrity in outsourced databases[J].ACM Trans on Storage,2006,2(2):107-138.
[2]蔡 敏,葉 震.一種數(shù)據(jù)庫入侵檢測模型的設計[J].合肥工業(yè)大學學報:自然科學版,2008,31(4):537-540.
[3]Shmueli E,Waisenberg R,Elovici Y,et al.Designing secure indexes for encrypted databases[C]//Proc of the IFIP Conf on Database and Applications Security,LNCS 3654.Heidelberg,Berlin:Springer-Verlag,2005:54-68.
[4]沈蘇彬.一種面向網(wǎng)絡基礎設施的安全模型及其控制機制[C]//國家重大科學基金研究計劃“網(wǎng)絡與信息安全”2002年度學術交流論文集.北京:國家自然科學基金委員會,2003:519-526.
[5]Estrind,Tsudik G.Visa scheme for inter-organization net work security[C]//Proc of the 1987Symposium on Security and Privacy.New York:IEEE,1987:174-183.
[6]Emekci F,Agrawal D,Abbadi A E,et al.Privacy preserving query processing using third parties[C]//Barga R S,Zhou X F.Proc of the Int Conf on Data Engineering.Washington:IEEE Computer Society Press,2006:27.
[7]Oracle Corporation.Architecture of Oracle Net Services[Z].Oracle9iNet Services Administrator’s Guide Release 2(9.2):Part Number A96580-02.
[8]Wong R.Oracle Net8Administrator’s Guide Release 8.0[Z].December,1997:A58230-01.