■ 西安 王金國 北京 高鵬
編者按:如今數據成為企業的重要資產,數據庫作為數據資產的最終載體和保存實體的安全越來越成為一個值得關注的重點領域。尤其是勒索軟件等新型的計算機病毒帶來的安全問題也同樣威脅著數據庫系統安全。
作為數據庫管理員,保護數據安全是一項本職工作和要求。數據庫系統安全除了管理制度的有效約束外,重要的技術手段也是一項基本技術能力。
本文將通過一些具體的技術措施以及數據庫自身的高級方法來對企業級Oracle12C數據庫進行安全加固,幫助用戶從整體上了解數據庫安全加固的不同層面和相關方法。
安全加固措施:
按照當前主流系統的“客戶端”“應用服務器”“數據庫服務器”三層架構設計。多數數據庫服務器的上層訪問請求客戶端數量有限,然而主機上的默認網關設置可以讓主機與所有網絡中的其他節點進行網絡層通信,這種默認網關設置將數據庫服務器直接暴露在整個網絡中,從網絡層來看這種設置具有很大的安全風險和隱患。
通過在操作系統上刪除默認網關,并使用本地靜態路由表配置方法,可以很好的對安裝了數據庫系統的主機進行網絡客戶端主機的授權訪問,可以從網絡層進行訪問主機的授權控制,也可以實現最小化的網絡訪問許可。
1.Windows系統主機
在Windows主機中可以刪除掉當前網卡的默認網關配置。
之后可以使用命令對需要訪問的主機進行靜態路由添加,命令示例如下:
route ADD 157.5.5.3 MASK 255.255.255.255 192.168.0.1 -p
其 中“157.5.5.3” 為目標地址(可以為主機地址或 網 段 地 址),“255.255.255.255”為 網 絡 掩 碼(當設置為4個255時,匹 配為主機地址),“192.168.0.1”為網關地址。整理允許訪問的客戶端地址并逐條命令執行,完成后通過命令“route print”查看,系統顯式的“永久路由”既是添加的靜態路由地址,如圖1所示。
用戶也可以通過命令“route delete”對這些靜態訪問主機進行刪除。
2.Linux系統主機
Linux主機下的靜態路由表可以通過修改Linux主機啟動加載文件/etc/rc.local來實現主機靜態路由控制,使用命令vi /etc/rc.local編輯如下行:
/sbin/ip ip route del default
/sbin/ip ip route addr 157.5.5.3/32 via 192.168.0.1 dev eth0
/sbin/ip ip route add 157.5.4.2/32 via 192.168.0.1 dev eth0
用戶可根據自己的實際需求增加行。完成后重啟系統并使用命令“ip route”檢查本機路由表,如圖2所示。
通過如上配置后該主機將只允許當前本網段主機及“157.5.5.3” “157.5.4.2”兩臺外部主機進行訪問。
3.AIX系統主機
AIX作為非常成熟的Unix系統,目前依然活躍在企業級服務器市場,盡管從用戶規模上來講,其屬于小眾系統,但其穩定性依然值得稱贊,在AIX系統中用戶可以使用“smitty”命令進行各種系統級設置的配置和修改,用戶需要進行靜態路由控制時首先需要刪除掉各個網卡的默認網關,然后使用“smitty tcpip”命令進入網絡配置狀態,選擇“Further Configuration”模式,并繼續選擇“Static Routes”選項,之后選擇“Add a Static Route”選項,進行靜態路由添加,如圖3所示。

圖2 檢查本機路由表

圖3 進行靜態路由添加
其 中“Destination TYPE”為目標節點類型,用戶可以通過F4選擇是網絡或 者 主 機,“DESTINATION Address”為目標節點IP地 址,“Default GATEWAY Address”為到達目標節點所需的網關IP地址。用戶針對目標節點逐條添加完成后可以通過“Static Routes”選 項 下 的“List All Routes”進行當前默認路由表檢查和查看,效果如圖4所示。
通過以上在各個系統上的靜態路由配置方法,我們可以將數據庫服務器的網絡層訪問請求進行更細粒度的控制和限制,第一可以減少很多沒有必要的TCP/IP握手流量,第二可以很好的防止任何形式的外部掃描以及探測行為。可以從網絡層很好的規避網關以外計算機的很多惡意行為。

圖4 檢查和查看當前默認路由表
Oracle數據庫系統自9i開始加入了數據庫IP準入技術,但限于當時系統架構模式以及技術。該項功能只能以限制單個IP地址的方式進行訪問控制,并沒有受到用戶的重視和廣泛使用。隨著系統架構向三層架構的演進和發展,從11G開始數據庫IP準入開始支持以網段方式控制數據庫IP準入,配置更加靈活。逐步成為了數據庫安全設置的常用技術方法之一。通過該技術方法加上靜態路由方法可以很好的實現對訪問數據庫資源的動態添加、刪除、修改。
1.單實例數據庫修改方法
單實例數據庫環境下,數據庫服務器上只有“ORACLE”賬號作為數據庫系統管理員賬號,需要啟用數據庫IP準入功能時只要以“oracle”用戶登錄系統并修改$ORACLE_HOME/network/admin/sqlnet.ora文件,并加入如下行:
tcp.validnode_checking = yes
tcp.invited_nodes=(157.5.3.*,157.5.4.3)
其 中“tcp.validnode_checking = yes”參 數 作用是激活數據庫檢查IP合法性特性。“tcp.invited_nodes”為允許登錄的IP地址。括號中“157.5.3.*”為網段,“157.5.4.3”為具體IP地址。網段設置方法必須要在ORACLE11G以后的數據庫系統才能獲得該語法支持。多網段或者多地址時可以依次使用逗號進行分隔即可。
2.RAC實例數據庫修改方法
使用過OracleRAC的用戶可能會發現,OracleRAC在安裝之后會在“grid”“oracle” 的ORACLE_HOME中分別都創建了network/admin/sqlnet.ora文件,對于OracleRAC環境的數據庫IP準入控制用戶需要需改“grid”用戶下的$ORACLE_HOME/network/admin/sqlnet.ora文件,并需要注意的是,應該在所有RAC節點上對該文件進行修改。具體設置方法可以參照ORACLE單實例修改方法。
Oracle 12C引 入 了CDB與PDB的 新 特 性,在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。
在ORACLE 12C之前,實例與數據庫是一對一或多對一 關 系(RAC)。ORACLE 12C之后,實例與數據庫可以是一對多的關系。該特性很好的隔離了之前數據庫那種單庫內用戶權限設置不當帶來的非授權用戶對其他用戶數據庫對象訪問或者修改的問題。一個應用完全可以以一個插拔數據庫的方式來對該應用的所有數據進行管理和控制,同時該應用創建的DBA角色也完全和其他應用插拔數據庫DBA角色分離。

圖5 12.1.0.2的默認審計策略
應用間數據庫關系可以理解為傳統數據庫那種彼此分屬于不同物理機的關系。該特性集中了物理資源的使用,但更好的隔離了數據庫間的角色以及權力,較過去的一個數據庫下多用戶需要統一DBA管理模式有更好的安全隔離性。
Oracle 12C推 出 一套全新的審計架構,稱為統一審計功能。統一審計主要利用策略和條件在Oracle數據庫內部有選擇地執行有效的審計。新架構將現有審計跟蹤統一為單一審計跟蹤,從而簡化了管理,提高了數據庫生成的審計數據的安全性。Oracle 12C數據庫中預先定義了一些審計策略,并且根據版本不同,默認開啟的審計策略也略有不同。
現在,我們可以通過auditunifiedenabled_policies視圖進行確認默認開啟的統一審計的審計策略。圖5為12.1.0.2的默認審計策略。
由上面的輸出結果我們可以看到,不做任何配置的情況下,在12.1.0.2數據庫的環境中,默認開啟 了ORASECURECONFIG和ORALOGONFAILURES審計策略,數據庫會根據這2個審計策略,對數據庫具有DBA權限的用戶登錄失敗以及DBA登錄成功后執行的所有DDL語句進行記錄。
在統一審計功能下,存儲和查看更加簡單化,所有的審計結果都存放在新追加的AUDSYS schema下,并可以通過字典表UNIFIEDAUDITTRAIL,進行確認。通過審計功能可以很好的發現和保護數據庫DBA的操作行為和賬號安全。