專利名稱::利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法
技術領域:
:本發(fā)明屬于外部對Oracle數(shù)據(jù)庫服務器進行安全增強技術,特別是一種利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法。技術背景Oracle數(shù)據(jù)庫服務器作為全球應用范圍最廣的商用數(shù)據(jù)庫服務器之一,其自身提供的安全保護功能無法滿足對信息安全等級要求較高領域的需求,例如政府機要部門、公安部門、軍事部門等,因此需在外部對Oracle數(shù)據(jù)庫服務器進行安全增強。傳統(tǒng)的安全增強方法,如圖1所示,其原理是在Oracle客戶端和Oracle服務器端之間增加一個隔離層,即安全增強系統(tǒng),客戶端到服務器端的所有通信消息都必須經(jīng)過安全增強系統(tǒng)。安全增強系統(tǒng)可以在客戶端建立連接時,獲取用戶標識信息;在用戶進行數(shù)據(jù)訪問時,獲取SQL語句和執(zhí)行結果。安全增強系統(tǒng)根據(jù)所獲取的通信消息,可擴充數(shù)據(jù)庫的安全機制。目前,國內(nèi)己實現(xiàn)多個Oracle數(shù)據(jù)庫安全增強系統(tǒng),將Oracle數(shù)據(jù)庫安全提升至B1級安全標準要求。根據(jù)安全增強系統(tǒng)接入Oracle數(shù)據(jù)庫的方式,可將目前已有的安全增強方法分為兩類數(shù)據(jù)訪問接口代理和網(wǎng)絡隔離代理,如圖2和圖3所示。數(shù)據(jù)訪問接口代理方法中,安全增強系統(tǒng)可分為客戶端和服務器端兩個部分。安全增強系統(tǒng)客戶端與Oracle客戶端安裝在同一臺機器,安全增強系統(tǒng)服務器端與Oracle服務器端安裝在同一臺機器。安全增強系統(tǒng)客戶端實現(xiàn)了Oracle數(shù)據(jù)庫的數(shù)據(jù)訪問接口(如ODBC、ADO、OCI等),負責將Oracle客戶端發(fā)出的消息轉發(fā)到安全增強系統(tǒng)服務器端;安全增強系統(tǒng)服務器端負責消息語法解析和相關安全功能的實現(xiàn),將允許的消息轉發(fā)給Oracle服務器端,并將Oracle執(zhí)行結果返回給安全增強系統(tǒng)客戶端,最終返回給Oracle客戶端。網(wǎng)絡隔離代理方法中,Oracle客戶端和Oracle服務器端都無需安裝額外的軟件,安全增強系統(tǒng)運行在一個網(wǎng)絡隔離設備上,該設備安裝了兩塊網(wǎng)卡,分別與Oracle客戶端和Oracle服務器端相連,Oracle客戶端與Oracle服務器端之間的所有通信消息都通過該網(wǎng)絡設備。該方法的處理流程與數(shù)據(jù)訪問接口代理方法類似,不同之處是該方法首先對TNS協(xié)議進行解析,獲取發(fā)出的請求和數(shù)據(jù)操作內(nèi)容,再進行語法解析和相關安全功能處理。這兩種安全增強方法,雖然都可以提升Oracle數(shù)據(jù)庫的安全級別,但對Oracle數(shù)據(jù)庫的可用性和性能有著不同程度的影響,其抗攻擊能力也不一致。(1)可用性影響分析由于Oracle允許客戶端采用多種數(shù)據(jù)訪問方式訪問數(shù)據(jù)庫服務器端,因此數(shù)據(jù)訪問接口代理方法,如果支持每一種數(shù)據(jù)訪問方式,代碼工作量很大;如果限定應用系統(tǒng)只能使用指定的接口,則應用系統(tǒng)需要改動源代碼,增加應用開發(fā)人員的負擔。網(wǎng)絡隔離代理方法,由于所有的Oracle客戶端都通過TNS協(xié)議訪問Oracle服務器端,因此無需修改應用系統(tǒng)代碼,可用性相對更好。(2)性能影響分析兩種安全增強方法,在收到數(shù)據(jù)庫的處理結果后,都需要將結果復制一份返回客戶端,因此對原系統(tǒng)的性能影響大。當訪問的數(shù)據(jù)量達到一定規(guī)模時,所帶來的安全性增強將難以彌補其對數(shù)據(jù)庫性能的影響。(3)抗攻擊能力數(shù)據(jù)訪問接口代理方法的抗攻擊能力差,不能防范SQI^PLUS和DBAStudio等客戶端軟件的攻擊。網(wǎng)絡隔離代理方法可以隔離所有來自網(wǎng)絡的訪問,但是不能防范來自本機的攻擊,如果通過數(shù)據(jù)庫緩沖區(qū)溢出方式,可在本機非法登錄數(shù)據(jù)庫。另外,透明網(wǎng)絡層協(xié)議(TransparentNetworkSubstratepotocol,簡稱TNS協(xié)議)是所有網(wǎng)絡協(xié)議的基礎。TNS負責選擇Oracle協(xié)議適配器,以一種支持的傳輸協(xié)議進行通信,TNS支持TCP/IP協(xié)議、使用SSL的TCP/IP協(xié)議、命名管道和IPC協(xié)議等進行傳輸。TNSListener是Oracle服務器端與所有的Oracle客戶端進行通信的中心。當啟動一個數(shù)據(jù)庫實例的時候,該實例要向Listener注冊,當客戶端訪問數(shù)據(jù)庫服務器端時,也需要先向Listener建立連接,由Listener將客戶端消息轉發(fā)給服務器端。TNS將接收到的所有遠程及本地客戶端請求轉發(fā)給后臺伺服進程處理。在此情況下,如果能夠在后臺伺服進程處理客戶端請求之前截獲該請求,那么即可對所有的客戶端和服務器端的通信行為進行控制,并可進一步增強Oracle數(shù)據(jù)庫的安全特性。在后臺伺服進程中截獲消息請求,必須把欲執(zhí)行的代碼注入到宿主進程中。進程注入的可選實現(xiàn)方案有(1)將代碼編譯成DLL,使用Windows鉤子將它映射到遠程進程。(2)將代碼編譯成DLL,使用CreateRemoteThread和LoadLibrary將它映射到遠程進程。(3)不使用DLL,使用WriteProcessMemory直接將代碼注入遠程進程,使用CreateRemoteThread執(zhí)行代碼。第一種實現(xiàn)方式對宿主進程的性能影響取決于截獲消息的數(shù)目。當注入的代碼需要長時間存活于宿主進程中,但是并不過于干涉宿主進程時,可以考慮選擇第一種方式。第三種方法與其它兩種方法相比,不需要額外的DLL文件,因此更靈活但也更復雜更危險。一旦注入代碼中有錯誤,遠程線程會立即崩潰。而調(diào)試一個遠程ThreadFunc十分困難,所以該方法適合注入指令較少時使用。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種一種利用進程注入及TNS協(xié)議解析從外部增強Oracle數(shù)據(jù)庫服務器安全特性的方法。實現(xiàn)本發(fā)明目的的技術解決方案為一種利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,以安裝在MicrosoftWindows操作系統(tǒng)平臺的Oracle數(shù)據(jù)庫服務器為實施客體,實施體系結構包括服務器端和客戶端,客戶端為沒有安裝額外軟件的Oracle客戶端,服務器端包括Oracle數(shù)據(jù)庫服務器和安全增強模塊,該安全增強模塊包括TNS協(xié)議解析模塊和安全特性增強功能模塊,首先通過一次性遠程進程注入的方式把TNS協(xié)議解析模塊和安全特性增強功能模塊注入到Oracle數(shù)據(jù)庫服務器的伺服進程中,其實現(xiàn)步驟為(1)將TNS協(xié)議解析代碼和安全特性增強功能代碼編譯成DLL;(2)通過OpenProcess函數(shù)得到遠程的Oracle伺服進程的HANDLE;(3)通過VirtuaIAlIocEx函數(shù)在遠程進程中為DLL全路徑文件名分配內(nèi)存;(4)通過WriteProcessMemory函數(shù)把DLL的文件名寫到分配的內(nèi)存中;(5)通過CreateRemoteThread函數(shù)和LoadLibrary函數(shù)把DLL映射到遠程進程中;(6)通過WaitForSingkObject函數(shù)等待遠程線程結束,等待LoadLibrary返回,即以DLL_PROCESS—ATTACH為參數(shù)調(diào)用的DLLMain返回時,遠程線程同時結束;(7)通過GetExitCodeThtread函數(shù)取回遠程線程的結束碼,該結束碼為LoadLibrary的返回值,并作為DLL加載后的基地址;(8)通過VirtualFreeEx函數(shù)釋放第(3)步分配的內(nèi)存;(9)通過CreateRemoteThread函數(shù)和FreeLibrary函數(shù)把DLL從遠程進程中卸載,其中CreateRemoteThread函數(shù)的lpParameter參數(shù)為基地址;(10)通過WaitSingleObject函數(shù)等待線程的結束。本發(fā)明與現(xiàn)有技術相比,其顯著優(yōu)點(1)由于本發(fā)明使用的是TNS協(xié)議解析的方法從外部增強Oracle數(shù)據(jù)庫服務器的安全特性,因此與Oracle客戶端的訪問方式無關,與數(shù)據(jù)訪問接口代理方式相比,可支持所有的Oracle客戶端訪問方法,解決了可用性影響問題。(2)利用遠程注入代碼的方式在Oracle伺服進程處截獲Oracle數(shù)據(jù)庫客戶端與服務器端的所有通信消息,只解析和處理該客戶端與服務器端的通信消息,無需復制結果結果集,而數(shù)據(jù)訪問接口代理與網(wǎng)絡隔離代理方式都需要復制結果集,解決了性能影響問題。(3)該方法在數(shù)據(jù)庫服務器后臺伺服進行安全特性增強工作,因此可防范所有來自本機和遠程的攻擊,解決了其它方法無法防范本機攻擊的問題。下面結合附圖對本發(fā)明作進一步詳細描述。圖1是本發(fā)明典型的安全增強方法原理圖。圖2是本發(fā)明數(shù)據(jù)訪問接口代理方法原理圖。圖3是本發(fā)明網(wǎng)絡隔離代理方法原理圖。圖4是本發(fā)明進程注入及TNS協(xié)議解析方法原理圖。圖5是本發(fā)明進程注入方法實施前的函數(shù)調(diào)用流程圖。圖6是本發(fā)明進程注入方法實施后的函數(shù)調(diào)用流程圖。具體實施例方式本發(fā)明屬于進程注入可選實現(xiàn)方案中的將代碼編譯成DLL,使用CreateRemoteThread和LoadLibrary將它映射到遠程進程方法。本發(fā)明利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法的實施客體為Oracle數(shù)據(jù)庫服務器系列,操作系統(tǒng)平臺為MicrosoftWindows系列。該方法的體系結構包括服務器端和客戶端??蛻舳藶槠胀ㄉ逃肙racle客戶端,無需安裝額外的軟件,服務器端包括Oracle數(shù)據(jù)庫服務器和安全增強模塊。安全增強模塊包括TNS協(xié)議解析模塊和安全特性增強功能模塊,首先通過一次性遠程進程注入的方式把TNS協(xié)議解析模塊和安全特性增強功能模塊注入到Oracle數(shù)據(jù)庫服務器的伺服進程中,其實現(xiàn)步驟為(1)將TNS協(xié)議解析代碼和安全特性增強功能代碼編譯成DLL;(2)通過OpenProcess函數(shù)得到遠程的Oracle伺服進程的HANDLE;(3)通過VirtualAllocEx函數(shù)在遠程進程中為DLL全路徑文件名分配內(nèi)存;(4)通過WriteProcessMemory函數(shù)把DLL的文件名寫到分配的內(nèi)存中;(5)通過CreateRemoteThread函數(shù)和LoadLibrary函數(shù)把DLL映射到遠程進程中;(6)通過WaitForSingleObject函數(shù)等待遠程線程結束,等待LoadLibrary返回,即以DLL_PROCESS_ATTACH為參數(shù)調(diào)用的DLLMain返回時,遠程線程同時結束;(7)通過GetExitCodeThtread函數(shù)取回遠程線程的結束碼,該結束碼為LoadLibrary的返回值,并作為DLL加載后的基地址;(8)通過VirtualFreeEx函數(shù)釋放第(3)步分配的內(nèi)存;(9)通過CreateRemoteThread函數(shù)和FreeLibrary函數(shù)把DLL從遠程進程中卸載,其中CreateRemoteThread函數(shù)的lpParameter參數(shù)為基地址;(10)通過WaitSingleObject函數(shù)等待線程的結束。進程注入的高級語言代碼示例和匯編語言代碼示例如表1和表2所示。高級語言代碼示例中注入代碼前和注入代碼后的宿主進程代碼實現(xiàn)步驟如下所示,圖5和圖6示意了進程注入前后代碼調(diào)用順序的比較進程注入前調(diào)用函數(shù)Caller直接調(diào)用執(zhí)行目標函數(shù)Target。進程注入后(1)調(diào)用函數(shù)Caller調(diào)用目標函數(shù)Target;(2)目標函數(shù)Target跳轉到函數(shù)Detour;(3)函數(shù)Detour執(zhí)行注入代碼Trampoline;(4)完成執(zhí)行注入代碼后,跳轉回Target函數(shù),執(zhí)行Target函數(shù)的剩余部分代碼。表1注入進程高級語言代碼示例注入進程前注入進程后Caller()Target(args);Caller()Target(args);Target(args)〃TargetStuffTarget(args)gotoDetour;target—left:〃TargetStuffDetour(args)CallTrampoline;GotoTraget一left;}一Trampoline(args)〃yourcodehere_j_匯編代碼示例中注入代碼前和注入代碼后的宿主進程代碼實現(xiàn)步驟如下進程注入前順序執(zhí)行Target函數(shù)內(nèi)的匯編代碼;進程注入后(1)執(zhí)行Target函數(shù)內(nèi)的匯編代碼時,首先跳轉到Detour函數(shù);(2)Detour函數(shù)執(zhí)行注入代碼的功能(3)執(zhí)行跳轉代碼Trampoline,跳轉代碼Trampoline跳轉到Target函數(shù)入口地址加5的地址繼續(xù)執(zhí)行原有代碼;表2注入進程匯編代碼示例注入進程前注入進程后Target:Target:pushebp[1byte]jmpDetour[5bytes]movebp,esp[2bytes]pushedipushebx[1bytes]pushesi[1byte]pushediDetour:…YourCode...Trampoline:pushebpmovebp,esppushebxpushesijmpTarget+5TNS協(xié)議解析模塊注入到Oracle后臺伺服進程后,每當伺服進程接收到Oracle客戶端與服務器端的通信消息,TNS協(xié)議解析模塊開始工作,解析TNS數(shù)據(jù)包,得到通信消息的語義信息。TOS協(xié)議解析模塊的工作實現(xiàn)步驟如下9(1)獲得通信消息的包頭和包數(shù)據(jù);(2)從包頭中解析出包的長度和類型,并進行包校驗,核對該包的有效性;(3)針對不同的包類型,分別進行處理。進程注入代碼的功能包括TNS協(xié)議解析功能和可選擇的安全特性增強功能。TNS協(xié)議解析功能可在Oracle服務器端截獲TNS數(shù)據(jù)包,并對這些數(shù)據(jù)包進行解析,得到該操作的類型和數(shù)據(jù)。TNS數(shù)據(jù)包有一個八字節(jié)的通用包頭,說明接受數(shù)據(jù)的長度及其相關校驗和解析的信息。這個包頭包含包校驗,包長度和包類型等,如表3所示。不同的服務請求和數(shù)據(jù)傳輸使用不同的請求數(shù)據(jù)類型,如表4所示。表3包頭字段長度及含義<table>tableseeoriginaldocumentpage10</column></row><table>表4TNS包類型及含義<table>tableseeoriginaldocumentpage10</column></row><table>在解析得到TNS通信消息的語義和數(shù)據(jù)后,可根據(jù)需要定制安全策略,可選擇性地構建安全特性增強功能模塊。在如下內(nèi)容中將給出一個所構建的安全特性增強功能模塊的實例,該實例包含多個子系統(tǒng)-(1)存儲服務軟件一個以MySQL開源軟件為基礎進行了定制和改造的可執(zhí)行進程,運行于Oracle服務器端,以標準數(shù)據(jù)庫接口SQL對其他軟件提供安全策略、審計規(guī)則和日志的存儲和訪問。(2)管理軟件包括系統(tǒng)管理軟件、審計管理軟件和安全管理軟件。系統(tǒng)管理軟件配置存儲服務軟件中的Oracle實例信息、授權用戶信息和自主訪問控制信息;審計管理軟件配置和査詢存儲服務軟件中的審計規(guī)則和日志;安全管理軟件配置存儲服務軟件中的安全標識信息。(3)網(wǎng)絡接入軟件該軟件依據(jù)截獲與分析TNS協(xié)議包,再依據(jù)存儲服務軟件中的配置信息進行身份鑒別、自主訪問控制和強制訪問控制,并將生成的日志保存到存儲服務軟件。該安全特性增強功能模塊可以實現(xiàn)了多種安全機制(1)三權分立設置了三類管理員管理安全增強服務軟件中的各類信息系統(tǒng)管理員管理Oracle實例信息、授權用戶信息和自主訪問控制信息;安全管理員管理強制訪問信息;審計管理員管理的審計相關信息,從而執(zhí)行B1級安全中要求的三權分立的安全管理體制。(2)身份鑒別將Oracle原有戶標識擴充為〈Oracle用戶名,主機地址,IC信息>,形成了安全增強系統(tǒng)的內(nèi)部受控用戶。內(nèi)部受控用信息保存在存儲服務軟件中。在Oracle客戶端登錄Omcle時,網(wǎng)絡接入軟件對用戶身份鑒別,只有已經(jīng)配置的內(nèi)部受控用戶才可以繼續(xù)登錄Oracle數(shù)據(jù)庫。(3)基于角色的自主訪問控制對應于RBAC96中的RBAC0模型,安全角色支持的授權對象包括表、視圖、實體化視圖、用戶、角色、表空間,其中表、視圖、實體化視圖能夠細化到字段和元組集合。安全角色支持的授權類型包括查詢、更新、插入、刪除、授權、權限回收等,從而實現(xiàn)了獨立于Oracle的基于角色的自主訪問控制機制。(4)強制訪問控制系統(tǒng)中的安全標記可描述為<安全等級,安全類型>,其中安全等級為64級,安全類型為32比特。安全管理員能夠為受控用戶和Oracle客體賦予安全標記,同時系統(tǒng)支持缺省安全標記,從而實現(xiàn)了基于BLP的多級安全強制訪問控制機制。(5)安全審計審計信息獨立存放于存儲服務軟件中,并通過內(nèi)置的訪問控制進行保護,系統(tǒng)支持細粒度的數(shù)據(jù)訪問審計規(guī)則,從而實現(xiàn)了獨立于Oracle的審計功能。1權利要求1、一種利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于以安裝在MicrosoftWindows操作系統(tǒng)平臺的Oracle數(shù)據(jù)庫服務器為實施客體,實施體系結構包括服務器端和客戶端,客戶端為沒有安裝額外軟件的Oracle客戶端,服務器端包括Oracle數(shù)據(jù)庫服務器和安全增強模塊,該安全增強模塊包括TNS協(xié)議解析模塊和安全特性增強功能模塊,首先通過一次性遠程進程注入的方式把TNS協(xié)議解析模塊和安全特性增強功能模塊注入到Oracle數(shù)據(jù)庫服務器的伺服進程中,其實現(xiàn)步驟為(1)將TNS協(xié)議解析代碼和安全特性增強功能代碼編譯成DLL;(2)通過OpenProcess函數(shù)得到遠程的Oracle伺服進程的HANDLE;(3)通過VirtualAllocEx函數(shù)在遠程進程中為DLL全路徑文件名分配內(nèi)存;(4)通過WriteProcessMemory函數(shù)把DLL的文件名寫到分配的內(nèi)存中;(5)通過CreateRemoteThread函數(shù)和LoadLibrary函數(shù)把DLL映射到遠程進程中;(6)通過WaitForSingleObject函數(shù)等待遠程線程結束,等待LoadLibrary返回,即以DLL_PROCESS_ATTACH為參數(shù)調(diào)用的DLLMain返回時,遠程線程同時結束;(7)通過GetExitCodeThtread函數(shù)取回遠程線程的結束碼,該結束碼為LoadLibrary的返回值,并作為DLL加載后的基地址;(8)通過VirtualFreeEx函數(shù)釋放第(3)步分配的內(nèi)存;(9)通過CreateRemoteThread函數(shù)和FreeLibrary函數(shù)把DLL從遠程進程中卸載,其中CreateRemoteThread函數(shù)的lpParameter參數(shù)為基地址;(10)通過WaitSingleObject函數(shù)等待線程的結束。2、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于TNS協(xié)議解析模塊注入到Oracle后臺伺服進程后,每當伺服進程接收到Oracle客戶端與服務器端的通信消息,TNS協(xié)議解析模塊開始工作,解析TNS數(shù)據(jù)包,得到通信消息的語義信息,TNS協(xié)議解析模塊的工作實現(xiàn)步驟如下(1)獲得通信消息的包頭和包數(shù)據(jù);(2)從包頭中解析出包的長度和類型,并進行包校驗,核對該包的有效性;(3)針對不同的包類型,分別進行處理。3、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于在解析得到TNS通信消息的語義和數(shù)據(jù)后,根據(jù)需要定制安全策略,構建具備三權分立安全功能的安全特性增強功能模塊,即設置三類管理員管理安全增強服務軟件中的各類信息系統(tǒng)管理員管理Oracle實例信息、授權用戶信息和自主訪問控制信息;安全管理員管理強制訪問信息;審計管理員管理的審計相關信息,從而執(zhí)行B1級安全中要求的三權分立的安全管理體制。4、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于在解析得到TNS通信消息的語義和數(shù)據(jù)后,根據(jù)需要定制安全策略,構建具備身份鑒別安全功能的安全特性增強功能模塊,即將Oracle原有戶標識擴充為Oracle用戶名,主機地址,IC信息>,形成安全增強系統(tǒng)的內(nèi)部受控用戶,該內(nèi)部受控用信息保存在存儲服務軟件中;在Oracle客戶端登錄Oracle時,網(wǎng)絡接入軟件對用戶身份鑒別,只有已經(jīng)配置的內(nèi)部受控用戶才可繼續(xù)登錄Oracle數(shù)據(jù)庫。5、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于在解析得到TNS通信消息的語義和數(shù)據(jù)后,根據(jù)需要定制安全策略,構建具備基于角色的自主訪問控制安全功能的安全特性增強功能模塊,即對應于RBAC96中的RBACO模型,安全角色支持的授權對象包括表、視圖、實體化視圖、用戶、角色、表空間,其中表、視圖、實體化視圖能夠細化到字段和元組集合;安全角色支持的授權類型包括査詢、更新、插入、刪除、授權、權限回收,從而實現(xiàn)了獨立于Oracle的基于角色的自主訪問控制機制。6、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于在解析得到TNS通信消息的語義和數(shù)據(jù)后,根據(jù)需要定制安全策略,構建具備強制訪問控制安全功能的安全特性增強功能模塊,即系統(tǒng)中的安全標記描述為<安全等級,安全類型>,其中安全等級為64級,安全類型為32比特,安全管理員為受控用戶和Oracle客體賦予安全標記,同時系統(tǒng)支持缺省安全標記,從而實現(xiàn)了基于BLP的多級安全強制訪問控制機制。7、根據(jù)權利要求1所述的利用進程注入及TNS協(xié)議解析增強Oracle數(shù)據(jù)庫服務器安全的方法,其特征在于在解析得到TNS通信消息的語義和數(shù)據(jù)后,根據(jù)需要定制安全策略,構建具備安全審計安全功能的安全特性增強功能模塊,即審計信息獨立存放于存儲服務軟件中,并通過內(nèi)置的訪問控制進行保護,系統(tǒng)支持細粒度的數(shù)據(jù)訪問審計規(guī)則,從而實現(xiàn)了獨立于Oracle的審計功能。全文摘要本發(fā)明公開了一種利用進程注入及TNS協(xié)議解析從外部增強Oracle數(shù)據(jù)庫服務器安全的方法,首先將TNS協(xié)議解析和安全特性增強功能模塊編譯成DLL;使用CreateRemoteThread和LoadLibrary將DLL映射到遠程Oracle伺服進程;當Oracle伺服進程接收到Oracle客戶端與服務器端的通信消息時,TNS協(xié)議解析模塊和安全特性增強功能模塊開始工作本發(fā)明可支持所有的數(shù)據(jù)訪問接口,具有很好的通用性;直接運行于服務器端,不僅能防護來自遠程的攻擊,也可防護來自本機的攻擊;對于數(shù)據(jù)庫服務器返回給客戶端的結果,僅僅記錄其操作成功或失敗的信息,避免對結果集的復制,降低對數(shù)據(jù)庫性能的影響。文檔編號G06F21/00GK101630351SQ200910032829公開日2010年1月20日申請日期2009年6月4日優(yōu)先權日2009年6月4日發(fā)明者磊宋,濤張,凱湯,王金雙,袁志堅,成趙,敏趙申請人:中國人民解放軍理工大學指揮自動化學院