DBA日記之Oracle數(shù)據(jù)庫(kù)運(yùn)維安全規(guī)范
本規(guī)范明確了Oracle數(shù)據(jù)庫(kù)安全配置方面的基本要求。
縮寫(xiě)
英文描述
中文描述
DBA
Database Administrator
數(shù)據(jù)庫(kù)管理員
本規(guī)范所指的設(shè)備為ORACLE數(shù)據(jù)庫(kù)。本規(guī)范提出的安全配置要求,在未特別說(shuō)明的情況下,均適用于ORACLE數(shù)據(jù)庫(kù)。
本規(guī)范從ORACLE數(shù)據(jù)庫(kù)的認(rèn)證授權(quán)功能、安全日志功能,和其他自身安全配置功能提出安全要求。
ORACLE應(yīng)提供賬號(hào)管理及認(rèn)證授權(quán)功能,并應(yīng)滿足以下各項(xiàng)要求。
要求內(nèi)容
應(yīng)按照用戶分配賬號(hào),避免不同用戶間共享賬號(hào)。
操作指南
1、 參考配置操作
create user abc1 identified by password1;
create user abc2 identified by password2;
建立role,并給role授權(quán),把role賦給不同的用戶
2、 補(bǔ)充操作說(shuō)明
1、abc1和abc2是兩個(gè)不同的賬號(hào)名稱(chēng),可根據(jù)不同用戶,取不同的名稱(chēng);
檢測(cè)方法
3、 判定條件
不同名稱(chēng)的用戶可以連接數(shù)據(jù)庫(kù)
4、 檢測(cè)操作
connect abc1/password1連接數(shù)據(jù)庫(kù)成功
5、補(bǔ)充說(shuō)明
要求內(nèi)容
應(yīng)刪除或鎖定與數(shù)據(jù)庫(kù)運(yùn)行、維護(hù)等工作無(wú)關(guān)的賬號(hào)。
操作指南
1、 參考配置操作
alter user username lock;
drop user username cascade;
2、 補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、 判定條件
首先鎖定不需要的用戶
在經(jīng)過(guò)一段時(shí)間后,確認(rèn)該用戶對(duì)業(yè)務(wù)確無(wú)影響的情況下,可以刪除
4、檢測(cè)操作
5、補(bǔ)充說(shuō)明
要求內(nèi)容
限制具備數(shù)據(jù)庫(kù)超級(jí)管理員(SYSDBA)權(quán)限的用戶遠(yuǎn)程登錄。
操作指南
1、參考配置操作
1. 在spfile中設(shè)置REMOTE_LOGIN_PASSWORDFILE=NONE來(lái)禁止SYSDBA用戶從遠(yuǎn)程登陸。
2. 在sqlnet.ora中設(shè)置
SQLNET.AUTHENTICATION_SERVICES=NONE來(lái)禁用 SYSDBA 角色的自動(dòng)登錄。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
1. 不能通過(guò)Sql*Net遠(yuǎn)程以SYSDBA用戶連接到數(shù)據(jù)庫(kù)。
2. 在數(shù)據(jù)庫(kù)主機(jī)上以sqlplus ‘/as sysdba’連接到數(shù)據(jù)庫(kù)需要輸入口令。
4、檢測(cè)操作
1. 以O(shè)racle用戶登陸到系統(tǒng)中。
2. 以sqlplus ‘/as sysdba’登陸到sqlplus環(huán)境中。
3. 使用show parameter命令來(lái)檢查參數(shù)REMOTE_LOGIN_PASSWORDFILE是否設(shè)置為NONE。
Show parameter REMOTE_LOGIN_PASSWORDFILE
4. 檢查在$
ORACLE_HOME/network/admin/sqlnet.ora文件中參數(shù)
SQLNET.AUTHENTICATION_SERVICES是否被設(shè)置成NONE。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
在數(shù)據(jù)庫(kù)權(quán)限配置能力內(nèi),根據(jù)用戶的業(yè)務(wù)需要,配置其所需的最小權(quán)限。
操作指南
1、 參考配置操作
grant 權(quán)限 to username;
revoke 權(quán)限 from username;
2、 補(bǔ)充操作說(shuō)明
用第一條命令給用戶賦相應(yīng)的最小權(quán)限
用第二條命令收回用戶多余的權(quán)限
檢測(cè)方法
3、 判定條件
業(yè)務(wù)測(cè)試正常
4、 檢測(cè)操作
業(yè)務(wù)測(cè)試正常
5、補(bǔ)充說(shuō)明
要求內(nèi)容
使用數(shù)據(jù)庫(kù)角色(ROLE)來(lái)管理對(duì)象的權(quán)限。
操作指南
1、參考配置操作
1. 使用Create Role命令創(chuàng)建角色。
2. 使用用Grant命令將相應(yīng)的系統(tǒng)、對(duì)象或Role的權(quán)限賦予應(yīng)用用戶。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
對(duì)應(yīng)用用戶不要賦予DBA Role或不必要的權(quán)限。
4、檢測(cè)操作
1. 以DBA用戶登陸到sqlplus中。
2. 通過(guò)查詢dba_role_privs、dba_sys_privs和dba_tab_privs等視圖來(lái)檢查是否使用ROLE來(lái)管理對(duì)象權(quán)限。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
對(duì)用戶的屬性進(jìn)行控制,包括密碼策略、資源限制等。
操作指南
1、參考配置操作
可通過(guò)下面類(lèi)似命令來(lái)創(chuàng)建profile,并把它賦予一個(gè)用戶
CREATE PROFILE app_user2 LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;
ALTER USER jd PROFILE app_user2;
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
1. 可通過(guò)設(shè)置profile來(lái)限制數(shù)據(jù)庫(kù)賬戶口令的復(fù)雜程度,口令生存周期和賬戶的鎖定方式等。
2. 可通過(guò)設(shè)置profile來(lái)限制數(shù)據(jù)庫(kù)賬戶的CPU資源占用。
4、檢測(cè)操作
1. 以DBA用戶登陸到sqlplus中。
2. 查詢視圖dba_profiles和dba_usres來(lái)檢查profile是否創(chuàng)建。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
啟用數(shù)據(jù)字典保護(hù),只有SYSDBA用戶才能訪問(wèn)數(shù)據(jù)字典基礎(chǔ)表。
操作指南
1、參考配置操作
通過(guò)設(shè)置下面初始化參數(shù)來(lái)限制只有SYSDBA權(quán)限的用戶才能訪問(wèn)數(shù)據(jù)字典。
O7_DICTIONARY_ACCESSIBILITY = FALSE
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
以普通dba用戶登陸到數(shù)據(jù)庫(kù),不能查看X$開(kāi)頭的表,比如:
select * from sys. x$ksppi;
4、檢測(cè)操作
1. 以O(shè)racle用戶登陸到系統(tǒng)中。
2. 以sqlplus ‘/as sysdba’登陸到sqlplus環(huán)境中。
3. 使用show parameter命令來(lái)檢查參數(shù)
O7_DICTIONARY_ACCESSIBILITY是否設(shè)置為FALSE。
Show parameter O7_DICTIONARY_ACCESSIBILITY
5、補(bǔ)充說(shuō)明
要求內(nèi)容
對(duì)于采用靜態(tài)口令進(jìn)行認(rèn)證的數(shù)據(jù)庫(kù),口令長(zhǎng)度至少6位,并包括數(shù)字、小寫(xiě)字母、大寫(xiě)字母和特殊符號(hào)4類(lèi)中至少2類(lèi)。
操作指南
1、 參考配置操作
為用戶建profile,調(diào)整PASSWORD_VERIFY_FUNCTION,指定密碼復(fù)雜度
2、 補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、 判定條件
修改密碼為不符合要求的密碼,將失敗
4、 檢測(cè)操作
alter user abcd1 identified by abcd1;將失敗
5、補(bǔ)充說(shuō)明
要求內(nèi)容
對(duì)于采用靜態(tài)口令認(rèn)證技術(shù)的數(shù)據(jù)庫(kù),賬戶口令的生存期不長(zhǎng)于90天。
操作指南
1、 參考配置操作
為用戶建相關(guān)profile,指定PASSWORD_GRACE_TIME為90天
2、 補(bǔ)充操作說(shuō)明
在90天內(nèi),需要修改密碼
檢測(cè)方法
3、 判定條件
到期不修改密碼,密碼將會(huì)失效。連接數(shù)據(jù)庫(kù)將不會(huì)成功
4、 檢測(cè)操作
connect username/password報(bào)錯(cuò)
5、補(bǔ)充說(shuō)明
要求內(nèi)容
對(duì)于采用靜態(tài)口令認(rèn)證技術(shù)的數(shù)據(jù)庫(kù),應(yīng)配置數(shù)據(jù)庫(kù),使用戶不能重復(fù)使用最近5次(含5次)內(nèi)已使用的口令。
操作指南
1、 參考配置操作
為用戶建profile,指定PASSWORD_REUSE_MAX為5
2、 補(bǔ)充操作說(shuō)明
當(dāng)前使用的密碼,必需在密碼修改5次后才能再次被使用
檢測(cè)方法
3、 判定條件
重用修改5次內(nèi)的密碼,將不能成功
4、 檢測(cè)操作
alter user username identified by password1;如果password1在5次修改密碼內(nèi)被使用,該操作將不能成功
5、補(bǔ)充說(shuō)明
要求內(nèi)容
對(duì)于采用靜態(tài)口令認(rèn)證技術(shù)的數(shù)據(jù)庫(kù),應(yīng)配置當(dāng)用戶連續(xù)認(rèn)證失敗次數(shù)超過(guò)6次(不含6次),鎖定該用戶使用的賬號(hào)。
操作指南
1、 參考配置操作
為用戶建profile,指定FAILED_LOGIN_ATTEMPTS為6
2、 補(bǔ)充操作說(shuō)明
如果連續(xù)6次連接該用戶不成功,用戶將被鎖定
檢測(cè)方法
3、 判定條件
連續(xù)6次用錯(cuò)誤的密碼連接用戶,第7次時(shí)用戶將被鎖定
4、 檢測(cè)操作
connect username/password,連續(xù)6次失敗,用戶被鎖定
5、補(bǔ)充說(shuō)明
要求內(nèi)容
更改數(shù)據(jù)庫(kù)默認(rèn)帳號(hào)的密碼。
操作指南
1、參考配置操作
1. 可通過(guò)下面命令來(lái)更改默認(rèn)用戶的密碼:
ALTER USER XXX IDENTIFIED BY XXX;
2. 下面是默認(rèn)用戶列表:
ANONYMOUS
CTXSYS
DBSNMP
DIP
DMSYS
EXFSYS
HR
LBACSYS
MDDATA
MDSYS
MGMT_VIEW
ODM
ODM_MTR
OE
OLAPSYS
ORDPLUGINS
ORDSYS
OUTLN
PM
QS
QS_ADM
QS_CB
QS_CBADM
QS_CS
QS_ES
QS_OS
QS_WS
RMAN
SCOTT
SH
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
TSMSYS
WK_TEST
WKPROXY
WKSYS
WMSYS
XDB
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
不能以用戶名作為密碼或使用默認(rèn)密碼的賬戶登陸到數(shù)據(jù)庫(kù)。
4、檢測(cè)操作
1. 以DBA用戶登陸到sqlplus中。
2. 檢查數(shù)據(jù)庫(kù)默認(rèn)賬戶是否使用了用戶名作為密碼或默認(rèn)密碼。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
Oracle軟件賬戶的訪問(wèn)控制可遵循操作系統(tǒng)賬戶的安全策略,比如不要共享賬戶、強(qiáng)制定期修改密碼、密碼需要有一定的復(fù)雜度等。
操作指南
1、參考配置操作
使用操作系統(tǒng)一級(jí)的賬戶安全管理來(lái)保護(hù)Oracle軟件賬戶。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
每3個(gè)月自動(dòng)提示更改密碼,過(guò)期后不能登陸。
4、檢測(cè)操作
每3個(gè)月強(qiáng)制修改Oracle軟件賬戶密碼,并且密碼需要滿足一定的復(fù)雜程度,符合操作系統(tǒng)的密碼要求。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
數(shù)據(jù)庫(kù)應(yīng)配置日志功能,對(duì)用戶登錄進(jìn)行記錄,記錄內(nèi)容包括用戶登錄使用的賬號(hào)、登錄是否成功、登錄時(shí)間以及遠(yuǎn)程登錄時(shí)用戶使用的IP地址。
操作指南
1、 參考配置操作
創(chuàng)建ORACLE登錄觸發(fā)器,記錄相關(guān)信息,但對(duì)IP地址的記錄會(huì)有困難
檢測(cè)方法
2、 判定條件
登錄測(cè)試,檢查相關(guān)信息是否被記錄
3、檢測(cè)操作
4、 補(bǔ)充說(shuō)明
觸發(fā)器與AUDIT會(huì)有相應(yīng)資源開(kāi)消,請(qǐng)檢查系統(tǒng)資源是否充足。特別是RAC環(huán)境,資源消耗較大。
要求內(nèi)容
數(shù)據(jù)庫(kù)應(yīng)配置日志功能,記錄用戶對(duì)數(shù)據(jù)庫(kù)的操作,包括但不限于以下內(nèi)容:賬號(hào)創(chuàng)建、刪除和權(quán)限修改、口令修改、讀取和修改數(shù)據(jù)庫(kù)配置、讀取和修改業(yè)務(wù)用戶的話費(fèi)數(shù)據(jù)、身份數(shù)據(jù)、涉及通信隱私數(shù)據(jù)。記錄需要包含用戶賬號(hào),操作時(shí)間,操作內(nèi)容以及操作結(jié)果。
操作指南
1、 參考配置操作
創(chuàng)建ORACLE DDL觸發(fā)器,記錄相關(guān)信息,但對(duì)IP地址的記錄會(huì)有困難
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
2、 判定條件
做相關(guān)操作,檢查是否記錄成功
4、檢測(cè)操作
5、 補(bǔ)充說(shuō)明
觸發(fā)器與AUDIT會(huì)有相應(yīng)資源開(kāi)消,請(qǐng)檢查系統(tǒng)資源是否充足。特別是RAC環(huán)境,資源消耗較大。
要求內(nèi)容
根據(jù)業(yè)務(wù)要求制定數(shù)據(jù)庫(kù)審計(jì)策略。
操作指南
1、參考配置操作
1. 通過(guò)設(shè)置參數(shù)audit_trail = db或os來(lái)打開(kāi)數(shù)據(jù)庫(kù)審計(jì)。
2. 然后可使用Audit命令對(duì)相應(yīng)的對(duì)象進(jìn)行審計(jì)設(shè)置。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
對(duì)審計(jì)的對(duì)象進(jìn)行一次數(shù)據(jù)庫(kù)操作,檢查操作是否被記錄。
4、檢測(cè)操作
1. 檢查初始化參數(shù)audit_trail是否設(shè)置。
2. 檢查dba_audit_trail視圖中或$ORACLE_BASE/admin/adump目錄下是否有數(shù)據(jù)。
5、 補(bǔ)充說(shuō)明
AUDIT會(huì)有相應(yīng)資源開(kāi)消,請(qǐng)檢查系統(tǒng)資源是否充足。特別是RAC環(huán)境,資源消耗較大。
要求內(nèi)容
使用Oracle提供的Data Vault選件來(lái)限制有DBA權(quán)限的用戶訪問(wèn)敏感數(shù)據(jù)。
操作指南
1、參考配置操作
Oracle Data Vault是作為數(shù)據(jù)庫(kù)安全解決方案的一個(gè)單獨(dú)選件,主要功能是將數(shù)據(jù)庫(kù)管理賬戶的權(quán)限和應(yīng)用數(shù)據(jù)訪問(wèn)的權(quán)限分開(kāi), Data Vault可限制有DBA權(quán)限的用戶訪問(wèn)敏感數(shù)據(jù)。設(shè)置比較復(fù)雜,具體細(xì)節(jié)請(qǐng)參考Oracle文檔。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
以DBA用戶登陸,不能查詢其它用戶下面的數(shù)據(jù)。
4、檢測(cè)操作
1. 在視圖dba_users中查詢是否存在dvsys用戶。
2. 在視圖dba_objects中檢查是否存在dbms_macadm對(duì)象。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
為數(shù)據(jù)庫(kù)監(jiān)聽(tīng)器(LISTENER)的關(guān)閉和啟動(dòng)設(shè)置密碼。
操作指南
1、參考配置操作
通過(guò)下面命令設(shè)置密碼:
$ lsnrctl
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)(IP=FIRST)))
Password changed for LISTENER
The command completed successfully
LSNRCTL> save_config
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
使用lsnrctl start或lsnrctl stop命令起停listener需要密碼
4、檢測(cè)操作
檢查$
ORACLE_HOME/network/admin/listener.ora文件中是否設(shè)置參數(shù)PASSWORDS_LISTENER。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
設(shè)置只有信任的IP地址才能通過(guò)監(jiān)聽(tīng)器訪問(wèn)數(shù)據(jù)庫(kù)。
操作指南
1、參考配置操作
只需在服務(wù)器上的文件$
ORACLE_HOME/network/admin/sqlnet.ora中設(shè)置以下行:
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…)
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
在非信任的客戶端以數(shù)據(jù)庫(kù)賬戶登陸被提示拒絕。
4、檢測(cè)操作
檢查$
ORACLE_HOME/network/admin/sqlnet.ora文件中是否設(shè)置參數(shù)tcp.validnode_checking和tcp.invited_nodes。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
使用Oracle提供的高級(jí)安全選件來(lái)加密客戶端與數(shù)據(jù)庫(kù)之間或中間件與數(shù)據(jù)庫(kù)之間的網(wǎng)絡(luò)傳輸數(shù)據(jù)。
操作指南
1、參考配置操作
1. 在Oracle Net Manager中選擇“Oracle Advanced Security”。
2. 然后選擇Encryption。
3. 選擇Client或Server選項(xiàng)。
4. 選擇加密類(lèi)型。
5. 輸入加密種子(可選)。
6. 選擇加密算法(可選)。
7. 保存網(wǎng)絡(luò)配置,sqlnet.ora被更新。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
通過(guò)網(wǎng)絡(luò)層捕獲的數(shù)據(jù)庫(kù)傳輸包為加密包。
4、檢測(cè)操作
檢查$
ORACLE_HOME/network/admin/sqlnet.ora文件中是否設(shè)置sqlnet.encryption等參數(shù)。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
在某些應(yīng)用環(huán)境下可設(shè)置數(shù)據(jù)庫(kù)連接超時(shí),比如數(shù)據(jù)庫(kù)將自動(dòng)斷開(kāi)超過(guò)10分鐘的空閑遠(yuǎn)程連接。
操作指南
1、參考配置操作
在sqlnet.ora中設(shè)置下面參數(shù):
SQLNET.EXPIRE_TIME=10
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
10分鐘以上的無(wú)任何操作的空閑數(shù)據(jù)庫(kù)連接被自動(dòng)斷開(kāi)
4、檢測(cè)操作
檢查$
ORACLE_HOME/network/admin/sqlnet.ora文件中是否設(shè)置參數(shù)SQLNET.EXPIRE_TIME。
5、補(bǔ)充說(shuō)明
要求內(nèi)容
限制在DBA組中的操作系統(tǒng)用戶數(shù)量,通常DBA組中只有Oracle安裝用戶。
操作指南
1、參考配置操作
通過(guò)/etc/passwd文件來(lái)檢查是否有其它用戶在DBA組中。
2、補(bǔ)充操作說(shuō)明
檢測(cè)方法
3、判定條件
無(wú)其它用戶屬于DBA組。
4、檢測(cè)操作
通過(guò)/etc/passwd文件來(lái)檢查是否有其它用戶在DBA組中。
下一篇:DBA最好的“枕邊故事”丨真實(shí)世界Oracle故障診斷之一千零一夜