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