天天看點

DBA日記之Oracle資料庫運維安全規範

作者:執着的花貓Jp

1 概述

1.1 适用範圍

本規範明确了Oracle資料庫安全配置方面的基本要求。

1.2 符号和縮略語

縮寫 英文描述 中文描述
DBA Database Administrator 資料庫管理者

2 ORACLE安全配置要求

本規範所指的裝置為ORACLE資料庫。本規範提出的安全配置要求,在未特别說明的情況下,均适用于ORACLE資料庫。

本規範從ORACLE資料庫的認證授權功能、安全日志功能,和其他自身安全配置功能提出安全要求。

2.1 賬号

ORACLE應提供賬号管理及認證授權功能,并應滿足以下各項要求。

2.1.1 按使用者配置設定帳号

要求内容 應按照使用者配置設定賬号,避免不同使用者間共享賬号。
操作指南

1、 參考配置操作

create user abc1 identified by password1;

create user abc2 identified by password2;

建立role,并給role授權,把role賦給不同的使用者

2、 補充操作說明

1、abc1和abc2是兩個不同的賬号名稱,可根據不同使用者,取不同的名稱;

檢測方法

3、 判定條件

不同名稱的使用者可以連接配接資料庫

4、 檢測操作

connect abc1/password1連接配接資料庫成功

5、補充說明

2.1.2 删除或鎖定無關帳号

要求内容 應删除或鎖定與資料庫運作、維護等工作無關的賬号。
操作指南

1、 參考配置操作

alter user username lock;

drop user username cascade;

2、 補充操作說明

檢測方法

3、 判定條件

首先鎖定不需要的使用者

在經過一段時間後,确認該使用者對業務确無影響的情況下,可以删除

4、檢測操作

5、補充說明

2.1.3 限制SYSDBA使用者的遠端登入

要求内容 限制具備資料庫超級管理者(SYSDBA)權限的使用者遠端登入。
操作指南

1、參考配置操作

1. 在spfile中設定REMOTE_LOGIN_PASSWORDFILE=NONE來禁止SYSDBA使用者從遠端登陸。

2. 在sqlnet.ora中設定SQLNET.AUTHENTICATION_SERVICES=NONE來禁用 SYSDBA 角色的自動登入。

2、補充操作說明

檢測方法

3、判定條件

1. 不能通過Sql*Net遠端以SYSDBA使用者連接配接到資料庫。

2. 在資料庫主機上以sqlplus ‘/as sysdba’連接配接到資料庫需要輸入密碼。

4、檢測操作

1. 以Oracle使用者登陸到系統中。

2. 以sqlplus ‘/as sysdba’登陸到sqlplus環境中。

3. 使用show parameter指令來檢查參數REMOTE_LOGIN_PASSWORDFILE是否設定為NONE。

Show parameter REMOTE_LOGIN_PASSWORDFILE

4. 檢查在$ORACLE_HOME/network/admin/sqlnet.ora檔案中參數SQLNET.AUTHENTICATION_SERVICES是否被設定成NONE。

5、補充說明

2.1.4 使用者權限最小化

要求内容 在資料庫權限配置能力内,根據使用者的業務需要,配置其所需的最小權限。
操作指南

1、 參考配置操作

grant 權限 to username;

revoke 權限 from username;

2、 補充操作說明

用第一條指令給使用者賦相應的最小權限

用第二條指令收回使用者多餘的權限

檢測方法

3、 判定條件

業務測試正常

4、 檢測操作

業務測試正常

5、補充說明

2.1.5 使用ROLE管理對象的權限

要求内容 使用資料庫角色(ROLE)來管理對象的權限。
操作指南

1、參考配置操作

1. 使用Create Role指令建立角色。

2. 使用用Grant指令将相應的系統、對象或Role的權限賦予應用使用者。

2、補充操作說明

檢測方法

3、判定條件

對應用使用者不要賦予DBA Role或不必要的權限。

4、檢測操作

1. 以DBA使用者登陸到sqlplus中。

2. 通過查詢dba_role_privs、dba_sys_privs和dba_tab_privs等視圖來檢查是否使用ROLE來管理對象權限。

5、補充說明

2.1.6 控制使用者屬性

要求内容 對使用者的屬性進行控制,包括密碼政策、資源限制等。
操作指南

1、參考配置操作

可通過下面類似指令來建立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. 可通過設定profile來限制資料庫賬戶密碼的複雜程度,密碼生存周期和賬戶的鎖定方式等。

2. 可通過設定profile來限制資料庫賬戶的CPU資源占用。

4、檢測操作

1. 以DBA使用者登陸到sqlplus中。

2. 查詢視圖dba_profiles和dba_usres來檢查profile是否建立。

5、補充說明

2.1.7 啟用資料庫字典保護

要求内容 啟用資料字典保護,隻有SYSDBA使用者才能通路資料字典基礎表。
操作指南

1、參考配置操作

通過設定下面初始化參數來限制隻有SYSDBA權限的使用者才能通路資料字典。

O7_DICTIONARY_ACCESSIBILITY = FALSE

2、補充操作說明

檢測方法

3、判定條件

以普通dba使用者登陸到資料庫,不能檢視X$開頭的表,比如:

select * from sys. x$ksppi;

4、檢測操作

1. 以Oracle使用者登陸到系統中。

2. 以sqlplus ‘/as sysdba’登陸到sqlplus環境中。

3. 使用show parameter指令來檢查參數O7_DICTIONARY_ACCESSIBILITY是否設定為FALSE。

Show parameter O7_DICTIONARY_ACCESSIBILITY

5、補充說明

2.2 密碼

2.2.1 靜态密碼認證的密碼複雜度控制

要求内容 對于采用靜态密碼進行認證的資料庫,密碼長度至少6位,并包括數字、小寫字母、大寫字母和特殊符号4類中至少2類。
操作指南

1、 參考配置操作

為使用者建profile,調整PASSWORD_VERIFY_FUNCTION,指定密碼複雜度

2、 補充操作說明

檢測方法

3、 判定條件

修改密碼為不符合要求的密碼,将失敗

4、 檢測操作

alter user abcd1 identified by abcd1;将失敗

5、補充說明

2.2.2 靜态密碼認證的密碼生命周期

要求内容 對于采用靜态密碼認證技術的資料庫,賬戶密碼的生存期不長于90天。
操作指南

1、 參考配置操作

為使用者建相關profile,指定PASSWORD_GRACE_TIME為90天

2、 補充操作說明

在90天内,需要修改密碼

檢測方法

3、 判定條件

到期不修改密碼,密碼将會失效。連接配接資料庫将不會成功

4、 檢測操作

connect username/password報錯

5、補充說明

2.2.3 靜态密碼認證的密碼重複使用限制

要求内容 對于采用靜态密碼認證技術的資料庫,應配置資料庫,使使用者不能重複使用最近5次(含5次)内已使用的密碼。
操作指南

1、 參考配置操作

為使用者建profile,指定PASSWORD_REUSE_MAX為5

2、 補充操作說明

目前使用的密碼,必需在密碼修改5次後才能再次被使用

檢測方法

3、 判定條件

重用修改5次内的密碼,将不能成功

4、 檢測操作

alter user username identified by password1;如果password1在5次修改密碼内被使用,該操作将不能成功

5、補充說明

2.2.4 景泰密碼認證的連續登入失敗的帳号鎖定政策

要求内容 對于采用靜态密碼認證技術的資料庫,應配置當使用者連續認證失敗次數超過6次(不含6次),鎖定該使用者使用的賬号。
操作指南

1、 參考配置操作

為使用者建profile,指定FAILED_LOGIN_ATTEMPTS為6

2、 補充操作說明

如果連續6次連接配接該使用者不成功,使用者将被鎖定

檢測方法

3、 判定條件

連續6次用錯誤的密碼連接配接使用者,第7次時使用者将被鎖定

4、 檢測操作

connect username/password,連續6次失敗,使用者被鎖定

5、補充說明

2.2.5 更改資料庫預設帳号的密碼

要求内容 更改資料庫預設帳号的密碼。
操作指南

1、參考配置操作

1. 可通過下面指令來更改預設使用者的密碼:

ALTER USER XXX IDENTIFIED BY XXX;

2. 下面是預設使用者清單:

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、判定條件

不能以使用者名作為密碼或使用預設密碼的賬戶登陸到資料庫。

4、檢測操作

1. 以DBA使用者登陸到sqlplus中。

2. 檢查資料庫預設賬戶是否使用了使用者名作為密碼或預設密碼。

5、補充說明

2.2.6 作業系統級的帳戶安全政策

要求内容 Oracle軟體賬戶的通路控制可遵循作業系統賬戶的安全政策,比如不要共享賬戶、強制定期修改密碼、密碼需要有一定的複雜度等。
操作指南

1、參考配置操作

使用作業系統一級的賬戶安全管理來保護Oracle軟體賬戶。

2、補充操作說明

檢測方法

3、判定條件

每3個月自動提示更改密碼,過期後不能登陸。

4、檢測操作

每3個月強制修改Oracle軟體賬戶密碼,并且密碼需要滿足一定的複雜程度,符合作業系統的密碼要求。

5、補充說明

2.3 日志

2.3.1 登入日志功能

要求内容 資料庫應配置日志功能,對使用者登入進行記錄,記錄内容包括使用者登入使用的賬号、登入是否成功、登入時間以及遠端登入時使用者使用的IP位址。
操作指南

1、 參考配置操作

建立ORACLE登入觸發器,記錄相關資訊,但對IP位址的記錄會有困難

檢測方法

2、 判定條件

登入測試,檢查相關資訊是否被記錄

3、檢測操作

4、 補充說明

觸發器與AUDIT會有相應資源開消,請檢查系統資源是否充足。特别是RAC環境,資源消耗較大。

2.3.2 DDL日志

要求内容 資料庫應配置日志功能,記錄使用者對資料庫的操作,包括但不限于以下内容:賬号建立、删除和權限修改、密碼修改、讀取和修改資料庫配置、讀取和修改業務使用者的話費資料、身份資料、涉及通信隐私資料。記錄需要包含使用者賬号,操作時間,操作内容以及操作結果。
操作指南

1、 參考配置操作

建立ORACLE DDL觸發器,記錄相關資訊,但對IP位址的記錄會有困難

2、補充操作說明

檢測方法

2、 判定條件

做相關操作,檢查是否記錄成功

4、檢測操作

5、 補充說明

觸發器與AUDIT會有相應資源開消,請檢查系統資源是否充足。特别是RAC環境,資源消耗較大。

2.3.3 資料庫審記

要求内容 根據業務要求制定資料庫審計政策。
操作指南

1、參考配置操作

1. 通過設定參數audit_trail = db或os來打開資料庫審計。

2. 然後可使用Audit指令對相應的對象進行審計設定。

2、補充操作說明

檢測方法

3、判定條件

對審計的對象進行一次資料庫操作,檢查操作是否被記錄。

4、檢測操作

1. 檢查初始化參數audit_trail是否設定。

2. 檢查dba_audit_trail視圖中或$ORACLE_BASE/admin/adump目錄下是否有資料。

5、 補充說明

AUDIT會有相應資源開消,請檢查系統資源是否充足。特别是RAC環境,資源消耗較大。

2.4 其他

2.4.1 Data Vault

要求内容 使用Oracle提供的Data Vault選件來限制有DBA權限的使用者通路敏感資料。
操作指南

1、參考配置操作

Oracle Data Vault是作為資料庫安全解決方案的一個單獨選件,主要功能是将資料庫管理賬戶的權限和應用資料通路的權限分開, Data Vault可限制有DBA權限的使用者通路敏感資料。設定比較複雜,具體細節請參考Oracle文檔。

2、補充操作說明

檢測方法

3、判定條件

以DBA使用者登陸,不能查詢其它使用者下面的資料。

4、檢測操作

1. 在視圖dba_users中查詢是否存在dvsys使用者。

2. 在視圖dba_objects中檢查是否存在dbms_macadm對象。

5、補充說明

2.4.2 Listener設定密碼保護

要求内容 為資料庫監聽器(LISTENER)的關閉和啟動設定密碼。
操作指南

1、參考配置操作

通過下面指令設定密碼:

$ lsnrctl

LSNRCTL> change_password

Old password: <OldPassword> Not displayed

New password: <NewPassword> Not displayed

Reenter new password: <NewPassword> Not displayed

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檔案中是否設定參數PASSWORDS_LISTENER。

5、補充說明

2.4.3 設定信任IP集

要求内容 設定隻有信任的IP位址才能通過監聽器通路資料庫。
操作指南

1、參考配置操作

隻需在伺服器上的檔案$ORACLE_HOME/network/admin/sqlnet.ora中設定以下行:

tcp.validnode_checking = yes

tcp.invited_nodes = (ip1,ip2…)

2、補充操作說明

檢測方法

3、判定條件

在非信任的用戶端以資料庫賬戶登陸被提示拒絕。

4、檢測操作

檢查$ORACLE_HOME/network/admin/sqlnet.ora檔案中是否設定參數tcp.validnode_checking和tcp.invited_nodes。

5、補充說明

2.4.4 加密網絡傳輸

要求内容 使用Oracle提供的進階安全選件來加密用戶端與資料庫之間或中間件與資料庫之間的網絡傳輸資料。
操作指南

1、參考配置操作

1. 在Oracle Net Manager中選擇“Oracle Advanced Security”。

2. 然後選擇Encryption。

3. 選擇Client或Server選項。

4. 選擇加密類型。

5. 輸入加密種子(可選)。

6. 選擇加密算法(可選)。

7. 儲存網絡配置,sqlnet.ora被更新。

2、補充操作說明

檢測方法

3、判定條件

通過網絡層捕獲的資料庫傳輸包為加密包。

4、檢測操作

檢查$ORACLE_HOME/network/admin/sqlnet.ora檔案中是否設定sqlnet.encryption等參數。

5、補充說明

2.4.5 斷開逾時的空閑遠端連接配接

要求内容 在某些應用環境下可設定資料庫連接配接逾時,比如資料庫将自動斷開超過10分鐘的空閑遠端連接配接。
操作指南

1、參考配置操作

在sqlnet.ora中設定下面參數:

SQLNET.EXPIRE_TIME=10

2、補充操作說明

檢測方法

3、判定條件

10分鐘以上的無任何操作的空閑資料庫連接配接被自動斷開

4、檢測操作

檢查$ORACLE_HOME/network/admin/sqlnet.ora檔案中是否設定參數SQLNET.EXPIRE_TIME。

5、補充說明

2.4.6 限制DBA組中的作業系統使用者數量

要求内容 限制在DBA組中的作業系統使用者數量,通常DBA組中隻有Oracle安裝使用者。
操作指南

1、參考配置操作

通過/etc/passwd檔案來檢查是否有其它使用者在DBA組中。

2、補充操作說明

檢測方法

3、判定條件

無其它使用者屬于DBA組。

4、檢測操作

通過/etc/passwd檔案來檢查是否有其它使用者在DBA組中。

5、補充說明