楊大哲,孫瑞浩
(國網(wǎng)山西省電力公司電力科學(xué)研究院,山西 太原 030001)
基于電力行業(yè)信息系統(tǒng)等級(jí)保護(hù)的Oracle數(shù)據(jù)庫安全加固實(shí)踐
楊大哲,孫瑞浩
(國網(wǎng)山西省電力公司電力科學(xué)研究院,山西 太原 030001)
針對(duì)O r a c l e數(shù)據(jù)庫管理系統(tǒng),按照信息安全等級(jí)保護(hù)要求,從身份鑒別、訪問控制、入侵防范、安全審計(jì)等方面,利用數(shù)據(jù)庫自身的安全機(jī)制,進(jìn)行了具體加固實(shí)踐,加強(qiáng)數(shù)據(jù)的防泄密能力與防篡改能力,提高電力信息系統(tǒng)的安全防護(hù)水平。
Or a c l e數(shù)據(jù)庫;安全加固;信息系統(tǒng)等級(jí)保護(hù)
Oracle數(shù)據(jù)庫作為主流的大中型數(shù)據(jù)庫管理軟件系統(tǒng),在電力行業(yè)的應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。據(jù)統(tǒng)計(jì),在電力公司的應(yīng)用系統(tǒng)中,85%以上的數(shù)據(jù)庫管理軟件均采用Oracle數(shù)據(jù)庫管理軟件。
數(shù)據(jù)庫管理系統(tǒng)作為信息系統(tǒng)的核心部件,存儲(chǔ)了應(yīng)用系統(tǒng)的全部數(shù)據(jù)和信息。數(shù)據(jù)庫的安全性與保密性對(duì)于整個(gè)信息系統(tǒng)安全是至關(guān)重要的?!秶译娋W(wǎng)公司SG186工程信息系統(tǒng)安全等級(jí)保護(hù)驗(yàn)收標(biāo)準(zhǔn)》對(duì)數(shù)據(jù)庫安全從身份鑒別、訪問控制、安全審計(jì)、剩余信息保護(hù)、入侵防范等五個(gè)方面提出了明確要求。
Oracle數(shù)據(jù)庫作為大型關(guān)系型數(shù)據(jù)庫,自身具有強(qiáng)大的安全機(jī)制。本文主要從三級(jí)系統(tǒng)安全防護(hù)要求出發(fā),利用Oracle數(shù)據(jù)庫管理軟件自身的功能和基本操作,完成數(shù)據(jù)庫的安全加固,使其能夠滿足等級(jí)保護(hù)相關(guān)技術(shù)要求,提高信息系統(tǒng)整體的安全性。
根據(jù)信息系統(tǒng)的安全保護(hù)等級(jí),國家電網(wǎng)公司SG186工程中多的信息系統(tǒng)要求具有相應(yīng)等級(jí)。第二級(jí)信息系統(tǒng)應(yīng)至少按照第二級(jí)安全技術(shù)指標(biāo)進(jìn)行安全加固,第三級(jí)信息系統(tǒng)應(yīng)至少按照第三級(jí)安全技術(shù)進(jìn)行安全加固。其中數(shù)據(jù)庫方面涉及身份鑒別、訪問控制等5類20個(gè)指標(biāo),具體包括用戶標(biāo)識(shí)鑒別、口令復(fù)雜度、口令策略、登陸限制、用戶唯一性、多種鑒別技術(shù)、訪問限制、默認(rèn)賬戶管理、用戶賬戶管理、最小權(quán)限原則、審計(jì)范圍、審計(jì)內(nèi)容、審計(jì)記錄屬性、審計(jì)數(shù)據(jù)安全、審計(jì)分析、審計(jì)可用性、關(guān)閉不必要服務(wù)、補(bǔ)丁更新、廢棄數(shù)據(jù)空間的釋放、廢棄用戶空間的釋放等。
信息系統(tǒng)安全加固工作具體實(shí)施流程分為五個(gè)階段:啟動(dòng)準(zhǔn)備階段、方案制定階段、數(shù)據(jù)備份階段、現(xiàn)場(chǎng)實(shí)施階段、驗(yàn)證總結(jié)階段。
2.1 身份標(biāo)識(shí)與鑒別
身份標(biāo)識(shí)是用戶身份的象征,是進(jìn)行數(shù)據(jù)庫審計(jì)的基礎(chǔ)。在進(jìn)行Oracle數(shù)據(jù)庫加固時(shí),可使用select username,account_status from dba_users檢查數(shù)據(jù)庫中所有處于開放狀態(tài)的用戶,對(duì)無關(guān)或測(cè)試的賬號(hào)及時(shí)刪除或鎖定;在數(shù)據(jù)庫維護(hù)中,應(yīng)按照用戶所需的權(quán)限授予不同的角色,同時(shí)做到賬號(hào)專用,禁止共用賬號(hào)。
身份鑒別是指驗(yàn)證用戶提交的身份鑒別信息,核實(shí)用戶的身份。數(shù)據(jù)庫登陸、數(shù)據(jù)操作等均需要首先進(jìn)行身份鑒別,確保只有符合要求的賬戶才能進(jìn)行。
Oracle數(shù)據(jù)庫可通過設(shè)置每個(gè)用戶的概要文件,制定用戶密碼策略設(shè)置,防止口令被暴力破解,設(shè)置口令審核函數(shù),增強(qiáng)口令的健壯性,從而加強(qiáng)數(shù)據(jù)庫用戶口令的安全性。具體設(shè)置方法如下。
CREATEPROFILEmyprofile
LIMIT FAILED_LOGIN_ATTEMPTS 3---(單位次)
PASSWORD_LIFE_TIME 90---(單位天)
PASSWORD_REUSE_TIME 90---(單位天)
PASSWORD_REUSE_MAX 3---(單位次)
PASSWORD_VERIFY_FUNCTIONverify_ function;
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;
用下面的命令把新創(chuàng)建的profile賦給制定的用戶ALTERUSER user1 PROFILEmyprofile;
對(duì)于用戶口令,一般要求口令長度至少為8位,由字母、數(shù)字、特殊字符3種字符組成??赏ㄟ^設(shè)置審核函數(shù),并將審核函數(shù)賦予用戶所屬概要文件,從而限制用戶在設(shè)置、修改口令時(shí)都必須符合口令復(fù)雜度要求。下面是一個(gè)典型的口令審核函數(shù)。該函數(shù)限制用戶口令不能與用戶名相同,不能為常見易猜測(cè)的密碼,口令長度不能少于8位,并且必須包含大小寫字母、1個(gè)數(shù)字、1個(gè)特殊字符中的3種。并且限制用戶在修改口令時(shí),至少有3個(gè)不同于上次的口令字符出現(xiàn)。函數(shù)具體邏輯如下。
IF NLS_LOWER(password)=NLS_LOWER (username)THEN
raise_application_error(-20001,'Password same as or similar to user');
END IF;
IF length(password)<8 THEN
raise_application_error(-10001,'口令長度不能少于8位');
END IF;
IF NLS_LOWER (password)IN ('system', 'database','123456','111111','password','oracle', 'abcd')THEN
raise_application_error(-10001,'口令過于簡單');
END IF;
isdigit:=FALSE;
m:=length(password);
FOR i IN 1..10 LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1)=substr(digitarray,i,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit=FALSETHEN
raise_application_error(-10002,'口令至少含有一個(gè)數(shù)字、字符和特殊符號(hào)');
END IF;
2.2 訪問控制
訪問控制就是按用戶身份及其所歸屬的對(duì)象組來限制用戶對(duì)數(shù)據(jù)庫資源的訪問,主要作用為保證合法主體訪問所需資源,防止非法主體訪問受保護(hù)的資源及合法的用戶非授權(quán)的訪問受保護(hù)的資源。Oracle數(shù)據(jù)庫作為大型關(guān)系數(shù)據(jù)庫,在數(shù)據(jù)庫監(jiān)聽、遠(yuǎn)程登錄、數(shù)據(jù)字典訪問、可訪問IP、連接超時(shí)、默認(rèn)端口方面進(jìn)行加固,以提高數(shù)據(jù)庫的訪問控制能力。
數(shù)據(jù)庫超級(jí)管理員具有數(shù)據(jù)庫的最高權(quán)限,應(yīng)限制具有SYSDBA權(quán)限的用戶遠(yuǎn)程登錄,具體可修改initSid.ora令REMOTE_LOGIN_PASSWORDFILE=’NONE’ 。
在數(shù)據(jù)庫用戶權(quán)限配置過程中,應(yīng)按照用戶所必需的權(quán)限,根據(jù)最小權(quán)限原則,賦予用戶權(quán)限。一般情況下不應(yīng)授予普通用戶DBA角色。
Oracle數(shù)據(jù)字典是用來描述數(shù)據(jù)庫數(shù)據(jù)的組織方式,由表和視圖組成。應(yīng)限制普通用戶訪問數(shù)據(jù)字 典 , 可 通 過 修 改 initSid.ora 令O7_DICTIONARY_ACCESSIBILITY=FALSE,啟用數(shù)據(jù)字典保護(hù),確保只有SYSDBA用戶才能訪問數(shù)據(jù)字典基礎(chǔ)表,從而提高數(shù)據(jù)字典的安全性。
Oracle監(jiān)聽負(fù)責(zé)接受客戶端與實(shí)例溝通的主要組件,默認(rèn)是沒有密碼,能訪問的用戶可隨意遠(yuǎn)程關(guān)閉監(jiān)聽器。為更好地保障監(jiān)聽器的安全,應(yīng)設(shè)置LISTENER的啟動(dòng)關(guān)閉密碼,防止用戶的未授權(quán)操作,具體設(shè)置如下。
$lsnrctl
LSNRCTL>change_password
Old password:--舊口令
New password:--新口令
Reenter new password:--再次輸入新口令
LSNRCTL>save_config--保存配置
Oracle 的 網(wǎng) 絡(luò) 配 置 文 件 為$ORACLE_HOME/network/admin/ 目 錄 下 的tnsnames.ora、sqlnet.ora、listener.ora。其中 sqlnet. ora主要用于確定解析方式,為提高訪問控制能力,在 sqlnet.ora文 件 中 添 加 以 下 配 置 :tcp. validnode_checking=yes tcp.invited_nodes=(192. 168.x.x,192.168.x.x),這樣就只有信任的IP地址才能通過監(jiān)聽器訪問數(shù)據(jù)庫;設(shè)置參數(shù)SQLNET. EXPIRE_TIME=10,數(shù)據(jù)庫定期檢測(cè)客戶端是否活動(dòng),當(dāng)超過10min未活動(dòng)時(shí),數(shù)據(jù)庫自動(dòng)斷開連接。
Oracle默認(rèn)的端口是1521,黑客通常對(duì)該端口進(jìn)行監(jiān)聽,以確定該服務(wù)器是否存在Oracle數(shù)據(jù)庫可通過在tnsnames.ora,listener.ora文件中增加新的監(jiān)聽器,使用其他端口(如1522),避免黑客發(fā)現(xiàn)。具體設(shè)置如下:listener1=(DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=hostname)(PORT=1522))。
2.3 安全審計(jì)
Oracle數(shù)據(jù)庫審計(jì)總體上可分為標(biāo)準(zhǔn)審計(jì)和細(xì)粒度審計(jì)。在Oracle10g中標(biāo)準(zhǔn)審計(jì)可分為用戶級(jí)審計(jì)和系統(tǒng)級(jí)審計(jì)。用戶級(jí)審計(jì)是任何用戶可設(shè)置的審計(jì),主要是用戶針對(duì)自建創(chuàng)建的表或視圖進(jìn)行的審計(jì),記錄所有用戶對(duì)這些表或視圖的成功和不成功的訪問,系統(tǒng)級(jí)審計(jì)由DBA用戶設(shè)置,用以監(jiān)測(cè)成功或失敗的登陸請(qǐng)求、檢測(cè)GRANT和REVOKE的操作及其他數(shù)據(jù)庫級(jí)權(quán)限的操作。通過修改初始化參數(shù)文件(initsid.ora)alter system set audit_trail=db scope=both,重啟數(shù)據(jù)庫,設(shè)置需要審計(jì)的信息,即開啟Oracle數(shù)據(jù)庫標(biāo)準(zhǔn)審計(jì)。細(xì)粒度審計(jì)能夠記錄SCN號(hào)和行級(jí)的更改,主要利用數(shù)據(jù)庫中DBMS_FGA包完成配置和管理工作。
對(duì)于用戶登陸行為的審計(jì),主要記錄用戶登錄的賬號(hào)、登錄的成功與失敗、登錄時(shí)間以及登錄時(shí)使用的IP地址。對(duì)于用戶操作行為的審計(jì),應(yīng)對(duì)新建、刪除賬號(hào),變更權(quán)限、變更密碼、讀取和修改數(shù)據(jù)庫配置進(jìn)行記錄,同時(shí)還應(yīng)記錄進(jìn)行操作的用戶賬號(hào)、具體時(shí)間、內(nèi)容以及結(jié)果。
2.4 入侵防范
數(shù)據(jù)庫的入侵防范主要為及時(shí)修復(fù)系統(tǒng)漏洞與服務(wù),防止黑客利用漏洞進(jìn)行入侵。具體操作包括關(guān)閉不必要的服務(wù),及時(shí)更新系統(tǒng)補(bǔ)丁。對(duì)于oracle早期版本,其中有很多不必要的服務(wù),如OracleMTSRecoveryService、 OracleServiceOEMREP、OracleClientCache、 OraclePagingServer、OracleSNMPPeerMasterAgent、OracleSNMPPeerEncapsulator。上述服務(wù)應(yīng)及時(shí)關(guān)閉。Oracle公司會(huì)根據(jù)系統(tǒng)漏洞發(fā)布系統(tǒng)補(bǔ)丁,數(shù)據(jù)庫管理員應(yīng)及時(shí)更新數(shù)據(jù)庫至最新版本。
Oracle數(shù)據(jù)庫作為大型數(shù)據(jù)庫,安全防護(hù)更多地在于數(shù)據(jù)庫本身的安全水平。通過實(shí)施數(shù)據(jù)庫系統(tǒng)自身的安全加固,在身份鑒別、訪問控制、安全審計(jì)、入侵防范等方面進(jìn)行全面全防護(hù),可大幅提升數(shù)據(jù)庫系統(tǒng)的安全防護(hù)能力,加強(qiáng)應(yīng)用系統(tǒng)數(shù)據(jù)的保密性與完整性,從而提高應(yīng)用系統(tǒng)安全水平。
充分利用Oracle本身自帶了安全機(jī)制,并加以一定的外部防御設(shè)備(防火墻、入侵防御設(shè)備等),數(shù)據(jù)庫系統(tǒng)能夠基本滿足三級(jí)信息系統(tǒng)等級(jí)保護(hù)測(cè)評(píng)的相關(guān)要求,可有效提升Oracle數(shù)據(jù)庫管理系統(tǒng)的整體防護(hù)水平,保障重要數(shù)據(jù)的安全。
Practice of Classified-protection-based Oracle Database Security Reinforcement in Electric Power Information Systems
YANG Dazhe,SUN Ruihao
(State Grid Shanxi Electric Power Research Institute,Taiyuan,Shanxi 030001,China)
In view of Oracle databasemanagement system,and according to the requirements on information security classified protection,this studymake use of the database's own securitymechanism to have completed the security reinforcementpractice from the aspects of authentication,access control,intrusion prevention and security audits,after which,the capabilities of data leak prevention and anti-tampering are strengthened,and the security levelofelectric power information systems is improved.
Oracle database;security reinforcement;classified protection of information system
TP309
A
1671-0320(2015)05-0038-03
2015-06-22,
2015-07-10
楊大哲(1983),男,河南南陽人,2009年畢業(yè)于山東大學(xué)熱能工程專業(yè),碩士,工程師,從事信息安全工作;
孫瑞浩(1987),男,山西運(yùn)城人,2012年畢業(yè)于馬來西亞理工大學(xué)電力系統(tǒng)機(jī)器自動(dòng)化專業(yè),碩士,工程師,從事繼電保護(hù)工作。