楊 波國家新聞出版廣電總局監(jiān)管中心 北京市 100045
基于廣播電視信息安全等級保護要求的Oracle數(shù)據(jù)庫用戶及權限加固方法探索
楊波
國家新聞出版廣電總局監(jiān)管中心北京市100045
本文根據(jù)國家和行業(yè)信息安全等級保護基本要求并結合廣電行業(yè)業(yè)務特點,通過對基本要求項的研究,探索Oracle數(shù)據(jù)庫用戶及權限的安全基本加固方法。
Oracle 11g廣播電視等級保護安全加固
近年來,黨中央、國務院高度重視我國信息安全工作。為提高我國信息安全保障能力,維護國家安全、社會穩(wěn)定和公共利益,我國已將信息安全等級保護制度作為一項重要工作在各個行業(yè)開展。廣播電視行業(yè)作為黨和政府的喉舌,其重要性不言而喻,自2011年全面開展信息安全等級保護工作以來,越來越多的播出單位意識到信息安全的重要性,積極開展信息安全建設工作。
在信息系統(tǒng)安全建設中,數(shù)據(jù)庫作為信息的核心部件其作用至關重要,保障數(shù)據(jù)庫安全已經(jīng)成為信息系統(tǒng)安全建設的重要組成部分。本文將以Oracle11g數(shù)據(jù)庫為例,結合廣播電視安全播出特點,依據(jù)國家和廣電行業(yè)信息安全等級保護基本要求,探索相應的安全加固方法。
在信息安全等級保護基本要求中對數(shù)據(jù)庫的身份鑒別、訪問控制、安全審計、資源控制等多個方面做出了要求,本文將從Oracle數(shù)據(jù)庫的身份鑒別及訪問控制兩個方面研究用戶及權限管理的加固方法。
1.1啟用身份鑒別措施
廣電行業(yè)信息安全等級保護基本要求中對身份鑒別的要求是:“應對登錄操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)的用戶進行身份標識和鑒別,應為不同用戶分配不同的用戶名,不能多人使用同一用戶名”。
Oracle Database 11g數(shù)據(jù)庫為用戶提供了多種身份驗證方法,其中包括:口令驗證、外部驗證、全局驗證等多種認證方式??诹钌矸蒡炞C是最常用到的身份驗證方式,Oracle數(shù)據(jù)庫將賬戶名與口令存儲在數(shù)據(jù)庫中,用戶登錄時必須輸入賬戶名和口令,Oracle數(shù)據(jù)庫對其進行認證、授權;外部身份認證是指Oracle數(shù)據(jù)庫本身不存儲賬戶的口令,用戶身份認證依賴于數(shù)據(jù)庫外部構件,如Oracle數(shù)據(jù)庫運行于Windows平臺時使用Windows本地身份認證服務或使用Kerberos協(xié)議認證服務器、RADIUS服務器進行認證,用戶登錄時只要通過了這些構件的身份認證,即拿到了登錄令牌可直接登錄Oracle數(shù)據(jù)庫;全局驗證需要在Oracle Advance Security選項中使用基于LDAP(輕量級目錄訪問協(xié)議)的目錄服務中進行身份認證。
按照基本要求中的規(guī)定,在連接數(shù)據(jù)庫時應同時提交用戶名和口令,特別注意的是基于Windows的本地認證服務認證實際上只要是操作系統(tǒng)的用戶就能夠直接登錄數(shù)據(jù)庫,不能滿足基本要求中的規(guī)定。在確認是否存在操作系統(tǒng)本地驗證用戶時,首先應檢查操作系統(tǒng)認證前綴字段,即“OS_AUTHENT_PREFIX”,該字段的賦值會作為Oracle操作系統(tǒng)驗證用戶名的前綴,默認情況下該字段是“OPS”,然后再查找是否用使用了該前綴的賬戶,Unix及Linux操作系統(tǒng)下的用戶名格式為“OPS username”,Windows操作系統(tǒng)下的用戶名格式為“OPSMACHINE_NAMEUSERNAME”(計算機名用戶名),最后通過修改“IDENTIFEID”參數(shù)將該賬戶改為其他驗證方式或刪除該賬戶(折中的辦法是將“OS_AUTHENT_PREFIX”的前綴值改為與系統(tǒng)當前具有操作系統(tǒng)認證的賬戶名前綴不匹配,不過不推薦使用此方法)。另外,Oracle11g中默認不允許用戶通過Oracle Net方式使用操作系統(tǒng)認證,相關資料表明這種方式存在諸如黑客遠程登錄攻擊等嚴重的安全隱患,建議檢查“REMORE_OS_AUTHENT”參數(shù),如果已經(jīng)被修改為“TRUE”則將其設置為“FALSE”。
而對于其他外部身份認證方式的安全性,則需要綜合評估Oracle數(shù)據(jù)庫外部身份鑒別構件本身的安全設置、所在操作系統(tǒng)的安全性等外圍因素,并不在本文研究范圍之內(nèi)。
此外,經(jīng)常被忽略的是為監(jiān)聽器設置密碼,任何有權限進入操作系統(tǒng)的用戶都可以通過在命令提示符下輸入“LSNRCTL STOP”命令來輕易的停止監(jiān)聽器工作。可以通過運行LSNRCTL程序,使用SET PASSWORD命令為其設置密碼。需要注意的是,監(jiān)聽器密碼的哈希值存儲在操作系統(tǒng)中l(wèi)isterner.ora中,所以應在操作系統(tǒng)層面對該文件的讀取權限進行限制,并在設置密碼時注意不要與數(shù)據(jù)庫賬號密碼相同,以防具有操作系統(tǒng)讀取權限的非數(shù)據(jù)庫管理員對其進行破解,從而以數(shù)據(jù)庫賬號進行登錄。
在數(shù)據(jù)庫日常管理中,應做到數(shù)據(jù)庫管理員、操作員、安全員分別使用各自的賬戶,為每一位登錄用戶創(chuàng)建獨立的賬戶,以便按照其應用的最小權限對數(shù)據(jù)庫進行操作以及準確界定責任。
1.2口令復雜度設置
1.2.1賬戶名設置
Oracle Database 11g中內(nèi)置了多個默認賬戶,如:SCOTT等,具有不同的默認權限。如圖1所示:
圖1 Oracle Database 11g內(nèi)置默認賬戶
由于部分Oracle數(shù)據(jù)庫默認賬戶名和口令處于公開狀態(tài),已被內(nèi)置于數(shù)據(jù)庫登錄賬號猜測及口令暴力破解工具上,所以建議用戶在建立賬戶時重新創(chuàng)建賬戶,盡量避免使用(鎖定或刪除)非必要的默認賬戶。為了避免黑客個人或組織有針對性對應用系統(tǒng)實施APT(Advanced Persistent Threat高級持續(xù)性威脅)攻擊,采用“社會工程”等手段獲取數(shù)據(jù)庫登錄賬戶,建議數(shù)據(jù)庫管理員和開發(fā)人員在建立數(shù)據(jù)庫賬戶名時應避免使用單位名稱、業(yè)務應用名稱、數(shù)據(jù)庫管理員姓名、生日等個人信息的全拼、縮寫及組合作為賬戶名及口令。
1.2.2口令設置
在設置口令時應注意使口令具備一定的復雜度,建議由至少8位的大寫字母、小寫字母、數(shù)字、符號等多種字符類型組成,并最少6個月更換一次口令。在Oracle Database 11g中可以通過配置文件(profile)對口令安全策略進行強制控制??梢允褂谩癱reate profile”命令建立配置文件或使用默認的配置文件,命令如下:
create user user_name identified by pass_word
profile profile_name
如果未在建立賬戶時指定由管理員手動創(chuàng)建配置文件,則由Oracle數(shù)據(jù)庫指定使用名為default的配置文件作為默認配置文件。配置文件(profile)中包括以下參數(shù):
(1)密碼過期時間
password_life_time口令過期前的天數(shù),口令在過期后仍可使用,具體取決于password_grace_time。
password_grace_time口令過期(將生成更改口令的提示)后第一次成功登陸后的天數(shù),在此期間,舊口令仍然可用。
在默認default profile中,password_life_time為180天,password_grace_time為7天。
(2)密碼歷史
password_reuse_time可以重新使用口令前的天數(shù)。
password_reuse_max可以重新使用口令的次數(shù)。
(3)密碼復雜度
password_verify_funciton更改口令時運行的函數(shù)名。此函數(shù)本用于檢查新口令所需的復雜程度。
可以通過運行Oracle提供的腳本來限制用戶口令的復雜度要求。
在Linux或Unix上:
ORACLE_HOME/rdbms/admin/utlpwdmg.sql。在Windows上:
%ORACLE_HOME dbmsadminutlpwdmg.sql。
該腳本運行后將建立名為verify_funciton和verify_funciton_11g兩個函數(shù)。在此函數(shù)中將對密碼復雜度進行定義,如果不符合以下條件將放棄口令更改:
新的口令的字符長度至少是8位(將腳本中“Check for the minimum length of the password if length(password)<”參數(shù)值設置為8)。
新的口令不能是用戶名(正向拼寫或反向拼寫),也不能是大寫或小寫的數(shù)據(jù)庫名。
將拒絕一些常用的簡單口令(如“oracle”等)。
新口令至少有一個字符和一個數(shù)字。
新口令與舊口令至少必須有三個字符是不同的。
1.3登錄失敗處理措施
采用登錄失敗處理功能,可以防止非授權用戶嘗試登錄數(shù)據(jù)庫的次數(shù)以及在管理員長時間離開操作臺有沒有退出登錄界面時的非授權訪問??梢栽谟脩襞渲梦募╬rofile)中定義以下參數(shù)來實現(xiàn)登錄失敗處理功能:
(1)failed_login_attempts指在鎖定賬戶前,口令上的連續(xù)錯誤數(shù),如果在達到極限之前更改了口令,則將此計數(shù)器歸0。
(2)password_lock_time在到達failed_login_attempts次數(shù)后,賬戶鎖定的天數(shù)。
在默認defaultprofile中,failed_login_attempts為10次,password_lock_time為1天,可以通過ALTERPROFILE語句對其進行修改。
1.4遠程管理加密措施
在通過網(wǎng)絡連接Oracle數(shù)據(jù)庫時默認是不采用加密方式進行數(shù)據(jù)傳輸?shù)?,為了防止惡意用戶通過網(wǎng)絡監(jiān)聽方式獲取敏感信息,應為每個監(jiān)聽器啟用加密的方式。可以通過修改listerner.ora文件中PROTOCOL參數(shù):LISTENER=
(DESCRIPTION_LIST=
或通過OracleNetManager程序,選擇對監(jiān)聽器后,對其使用協(xié)議進行更改,如圖2所示:
圖2 Oracle Net Manager協(xié)議更改
也可以使用OracleNetConfigurationAssistant進行修改,如下圖3:
圖3 Oracle Net Configuration Assistan協(xié)議更改
還要特別指出的是,部分單位可能會采用網(wǎng)絡數(shù)據(jù)庫審計系統(tǒng),需要數(shù)據(jù)庫通信協(xié)議采用明文的方式進行監(jiān)聽,在已經(jīng)采用該技術作為數(shù)據(jù)庫審計方案的情況下,為了降低安全風險,可以在數(shù)據(jù)庫上聯(lián)交換機或防護墻上進行配置,設置訪問控制列表,將可以訪問數(shù)據(jù)庫的地址限定在應用服務器或維護終端的地址或地址段及開放端口,同時,配合IP和MAC地址綁定技術,避免非授權設備監(jiān)聽數(shù)據(jù)庫通信。
1.5“雙因素”鑒別措施
“雙因素鑒別”是國家及廣電行業(yè)信息安全等級保護基本要求中針對三級及以上信息系統(tǒng)特有的技術要求。雙因素鑒別的目的是當用戶所持有的一種登錄憑證遭到盜用后,可以憑借另一種不同屬性的登錄憑證拒絕非法登錄。而用戶所持有的兩種不同屬性的鑒別憑證同時遭到盜用的可能性很低,可以抵御一般意義上的盜用登錄,因此,如果登錄設備采用“用戶名+口令”或兩級以及兩級以上的口令認證應認為是一種鑒別技術。
目前,筆者尚未接觸到比較成熟的數(shù)據(jù)庫雙因素鑒別產(chǎn)品,但隨著技術的不斷發(fā)展,將會不斷出現(xiàn)滿足等保要求的產(chǎn)品,在進行產(chǎn)品選型時須注意的是這類產(chǎn)品應首先能夠實現(xiàn)除了用戶名和口令以外的其他鑒別技術,如動態(tài)口令卡、USB證書等,其次在選擇這類產(chǎn)品時也應注意現(xiàn)有的業(yè)務應用軟件可以支持這種雙因素認證方式。
2.1用戶權限設置
在等級保護標準中,針對用戶權限部分進行了如下要求“應啟用訪問控制功能,依據(jù)安全策略控制用戶對資源的訪問,根據(jù)需要禁止通過USB、光驅等外設進行數(shù)據(jù)交換,關閉不必要的服務和端口”;“應根據(jù)管理用戶的角色分配權限,實現(xiàn)管理用戶的權限分離,僅授予管理用戶所需的最小權限”。
在Oracle數(shù)據(jù)庫中,可以通過給用戶或角色授予針對于不同類型數(shù)據(jù)庫對象操作的權限,從而實現(xiàn)對于數(shù)據(jù)對象的訪問控制。表1列出了針對于不同對象可設置的權限:
表1 不同對象的設置權限
可以通過下面的語法實現(xiàn)對數(shù)據(jù)庫對象的操作授權:
SQL>GRANTprivilegeON[schema.]object TO username[WITH GRANT OPTION]
在應用環(huán)境中,為防止業(yè)務應用賬號被賦予過多的權利,應避免將數(shù)據(jù)庫的創(chuàng)建賬號作為業(yè)務應用賬號使用。應該結合業(yè)務應用軟件的開發(fā)情況,梳理業(yè)務賬號需要操作的數(shù)據(jù)庫對象以及所需權限,創(chuàng)建賬戶或定義角色,賦予其對數(shù)據(jù)庫對象的最小可用權限。此外,Oracle還提供了基于標記的訪問控制策略,在下文中將會做介紹。
對于Oracle用戶的授權可以通過直接授權,或為了便于方便管理建立一個具有一定權限的角色并授權的方式進行。在對數(shù)據(jù)庫用戶進行權限分配時,應僅分配能夠支持業(yè)務應用的最小權限,授予超出業(yè)務應用所需的權限。在Oracle 11g中,有超過200種的系統(tǒng)權限,其中部分權限對整個數(shù)據(jù)庫具有全局的影響,如果被惡意使用或操作不當則有可能對數(shù)據(jù)庫造成嚴重損害(如帶有“ANY”的特權)。下面列出的部分特權在對普通用戶或角色(使用Oracle默認角色時應注意默認的權限)進行授權時應特別注意:
(1)GRANT ANY PRIVILEGE/OBJECT PRIVILEGE/ROLE/JOB:用戶可以為自己提升權限(相當于DBA),訪問數(shù)據(jù)庫內(nèi)任何數(shù)據(jù);
(2)EXECUTE/ALTER ANY PROCEDURE∶用戶可以被用來在DBA模式下創(chuàng)建一個程序(相當于DBA),運行任意的SQL語句;
(3)INSERT/DROP/UPDATE/SELECT/ANY TABLE:可以對數(shù)據(jù)庫內(nèi)任何數(shù)據(jù)進行增刪改查;
(4)CREATE/ALTERANYVIEW/TRIGGER/ SYNONYM∶可以在創(chuàng)建、修改視圖、觸發(fā)器、同義詞的過程中內(nèi)置提升賬戶權限代碼;
(5)CREATE ANY DERECTORY:可以與UTL_FILE和DBMS_LOB等函數(shù)結合使用,實現(xiàn)對操作系統(tǒng)文件的控制。
此外,對于一些不帶有“ANY”的特權,也應特別注意:
(1)SYSDBA/SYSOPER∶直接將DBA的權限賦予用戶;
(2)ALTER SYSTEM:允許用戶設置配置參數(shù)并執(zhí)行系統(tǒng)管理任務;
(3)AUDIT ANY/SYSTEM∶可以對關閉審計功能,避免遺留對數(shù)據(jù)庫進行攻擊后的痕跡;
(4)ALTER DATABASE∶可以進行關閉數(shù)據(jù)庫、使用訪問操作系統(tǒng)文件的UTL_FILE或其他重要操作;
(5)ALTER/DROP USER:可以允許任何用戶成為DBA,刪除重要用戶及所屬對象,直接會導致數(shù)據(jù)丟失、服務停止,除了DBA以外任何用戶和角色都不應得到這項特權;
(6)ALTER PROFILE∶可以更改配置文件中口令嘗試次數(shù)限制,以便實現(xiàn)暴力破解而不被鎖定;
(7)EXPORT/IMPORT FULL DATABASE∶將整個數(shù)據(jù)庫導入或導出,相當于黑客的“拖庫”操作,這項授權應僅授于數(shù)據(jù)庫備份管理賬戶。
2.2特權用戶的權限設置
作為數(shù)據(jù)庫的DBA,其對數(shù)據(jù)庫的管理也應受到審計,而審計記錄保存在操作系統(tǒng)當中,如果DBA與操作系統(tǒng)管理員的身份重疊,那么DBA可以對審計記錄進行任意的修改、刪除操作,那么對于DBA的審計則沒有意義。對操作系統(tǒng)和數(shù)據(jù)庫DBA的權限分離可以從兩個方面進行保障,首先,從技術角度講,應避免采用操作系統(tǒng)本地認證(前文中“身份鑒別”已做過介紹);其次,從管理角度講,在人員安排上數(shù)據(jù)庫管理員與操作系統(tǒng)管理員應分別由不同的人員擔任。
2.3嚴格限制默認帳戶權限
在Oracle數(shù)據(jù)庫中,每個帳戶都是PUBLIC用戶組中的成員,且不能將用戶從該組中移除。默認情況下,PUBLIC用戶組被授予很多特權,其中部分特權在Web應用存在注入等漏洞且并未有效的被安全防護產(chǎn)品保護的情況下容易被黑客利用,對Oracle數(shù)據(jù)庫以及所在的服務器操作系統(tǒng)發(fā)起進一步攻擊。下面列出部分重要的特權,如業(yè)務應用系統(tǒng)沒有切實需要,應從PUBLIC用戶組中取消:
UTL_FILE:為數(shù)據(jù)庫訪問提供對數(shù)據(jù)庫所在的操作系統(tǒng)上的文件讀和寫的權利;
UTL_HTTP/UTL_SMTP/UTL_TCP:允許數(shù)據(jù)庫使用標準的協(xié)議跨網(wǎng)絡地進行通信。攻擊者可以用來向自己“反彈”敏感數(shù)據(jù),繞過已經(jīng)存在的安全措施。
可以通過以下命令取消這些特權,如:
SQL>revoke execute on utl_file from pubic;
除了PUBLIC用戶組默認的權限外,還應特別注意不要賦予該用戶組其他特權,如果對于用戶進行授權可以通過定義角色或直接授予用戶權限方式進行實現(xiàn)。
2.4刪除多余的、過期的帳戶
在Oracle數(shù)據(jù)庫中,內(nèi)置了大量默認賬戶,其中大部分默認處于口令過期和鎖定狀態(tài)。在開發(fā)過程中如果使用了這些默認的賬戶作為測試賬戶應及時鎖定,對于已經(jīng)使用默認賬戶作為業(yè)務賬戶進行使用的情況,應避免使用默認口令,并按照要求及時更換。同時,應檢查是否存在非默認賬戶的過期測試賬戶的存在,如果有則應及時刪除。
2.5敏感標記設置
“敏感標記”同“雙因素認證”一樣,是國家及廣電行業(yè)信息安全等級保護基本要求中針對三級及以上信息系統(tǒng)特有的技術要求。敏感標記是表示主體/客體安全級別和安全范疇的一組信息,通過比較標記來控制是否允許主體對客體的訪問。在廣播電視系統(tǒng)中,存儲在數(shù)據(jù)庫中的播出單、字幕、OSD、EPG、節(jié)目視音頻參數(shù)等涉及重要業(yè)務以及直接面向受眾的信息應作為敏感信息進行標記,限定特定用戶進行訪問。
在Oracle 11g的高級安全性中提供了Oracle Label Security組件來實現(xiàn)敏感標記功能,該組件可以設置一組或多組訪問權限策略(Policy),然后給數(shù)據(jù)庫內(nèi)重要的信息資源如表或schema打上不同的標簽(Label)進行標記,然后再將用戶與標簽相關聯(lián),以標簽為紐帶實現(xiàn)用戶對不同資源訪問權限的控制,
添加敏感標記并控制用戶對其訪問的過程大體可分為以下步驟:
(1)安裝Oracle Label Security組件;
(2)創(chuàng)建安全策略∶首先解鎖LBACSYS賬戶,并賦予SELECT ANY DICTIONARY系統(tǒng)權限;
(3)為策略定義安全級別、劃分及組;(4)為安全策略創(chuàng)建標簽;
(5)將安全策略向用戶授權;(6)使能安全策略應用表;
(7)為表中的行指定適合的標簽。
由于篇幅所限,本文對敏感標記具體實施方法不做過多介紹,感興趣的讀者在進行實際部署時可參考本文所列文獻《Oracle.Label Security Administrator’s Guide 11g Release2(11.2)》。
加強Oracle數(shù)據(jù)庫安全不管是從國家和行業(yè)信息安全管理要求還是廣播電視播出相關單位實際運行支撐需要而言都非常重要。本文結合信息安全等級保護基本要求,對Oracle 11g數(shù)據(jù)庫用戶設置、權限設置等方面基本安全加固技術進行了一些簡單研究,Oracle安全還包括其他更深層次的問題,還需要開發(fā)人員、安全管理人員、數(shù)據(jù)庫維護人員共同努力,探索適用于廣播電視行業(yè)特點的安全技術手段和方法,才能不斷的提高其信息安全防護保障能力。
[1]中華人民共和國國家標準,GB/T 22239—2008.信息安全技術信息系統(tǒng)安全等級保護基本要求[S],2008(6).
[2]中華人民共和國廣播電影電視行業(yè)暫行技術文件,GD/J037—2011.廣播電視相關信息系統(tǒng)安全等級保護定級指南[S],2011(5).
[3]中華人民共和國廣播電影電視行業(yè)暫行技術文件,GD/J038—2011.廣播電視相關信息系統(tǒng)安全等級保護基本要求[S],2011(5).
[4]國家廣播電影電視總局令第62號,廣播電視安全播出管理規(guī)定[Z],2009(12)
[5]中華人民共和國行業(yè)標準,GY/T107-1992.電視中心播控系統(tǒng)維護規(guī)程[S],1992(12).
[6]Oracle.OracleDatabaseAdvancedSecurityAdministrator’ sGuide11gRelease2 (11.2)[Z],http://docs.oracle.com/cd/E11882_01/ network.112/e40393/toc.htm,2014(9)
[7]Oracle.LabelSecurityAdministrator’s Guide11gRelease2(11.2) [Z],http://docs. oracle.com/cd/B28359_01/network.111/b28529/toc. htm,2007(11)
[8](美)JohnWatson等著,寧洪,吳云潔,李夢汶譯.OCP/OCA認證考試指南全冊:Oracle Database 11g[M].北京:清華大學出版社,2011(1).
[9](美)DavidC.Knox等著,孟祥旭,唐揚斌譯.Oracle安全實戰(zhàn):開發(fā)完全的數(shù)據(jù)庫與中間件環(huán)境[M].北京:清華大學出版社,2011(7).
[10](美)Josh Shaul等著,李楨譯.Oracle安全實踐:來自第三方的關系型數(shù)據(jù)庫安全指南[M].北京:科學出版社,2009(1).
[11](美)Justin Clarke等著,黃曉磊,李化譯.SQL注入攻擊與防御[M].北京:清華大學出版社,2010(6).
[12]林樹澤,盧芬著.Oracle 11g R2 DBA操作指南[M].北京:清華大學出版社,2013(10).
[13]Sam R.Alapati著,鐘鳴,楊樺,楊衛(wèi)軍,孫登峰等譯.Oracle Database 11g數(shù)據(jù)庫管理藝術[M].北京:人民郵電出版社,2013(7).
[14]公安部信息安全等級保護評估中心.信息安全等級測評師培訓教程(初級)[M].北京:電子工業(yè)出版社,2010.
審稿人:魏朝暉內(nèi)蒙古新聞出版廣電局監(jiān)管中心正高級工程師
責任編輯:王學敏
TP392
A
2096-0751(2016)07-0020-07
楊波國家新聞出版廣電總局監(jiān)管中心工程師