天天看點

oracle加強

一.   檢查項名稱:檢查是否使用加密傳輸

判斷條件:通過網絡層捕獲的資料庫傳輸包為加密包,有設定sqlnet.encryption為符合要求

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

2. 然後選擇Encryption。

3. 選擇Client或Server選項。

4. 選擇加密類型。

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

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

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

補充操作說明:存在sqlnet.encryption

二.   使用lsnrctl start或lsnrctl stop指令起停listener需要密碼

通過下面指令設定密碼:

$ lsnrctl

LSNRCTL> change_password

Old password:Not displayed

New password:Not displayed

Reenter new password: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

補充操作說明:指令:cat network/admin/sqlnet.ora,回顯中存在PASSWORDS_LISTENER

三.Oracle軟體賬戶的安全政策

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

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

補充操作說明:此項的判斷方式同作業系統的密碼生存周期項一緻

四.檢查是否限制可以通路資料庫的位址

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

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

tcp.validnode_checking = yes

tcp.invited_nodes = (ip1,ip2…)

補充操作說明:tcp.validnode_checking的值為yes

五.10分鐘以上的無任何操作的空閑資料庫連接配接被自動斷開,SQLNET.EXPIRE_TIME有設定

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

SQLNET.EXPIRE_TIME=10

補充操作說明:存在SQLNET.EXPIRE_TIME值大于等于1

六.檢查是否配置最大認證失敗次數

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

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

補充操作說明:如果連續6次連接配接該使用者不成功,使用者将被鎖定

指令:select limit from dba_profiles t where resource_name= 'FAILED_LOGIN_ATTEMPTS',回顯中default值變成6

七.檢查是否根據業務要求制定資料庫審計政策

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

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

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

補充操作說明:存在os,db,DB,OS

八.檢查是否記錄記錄檔

判斷條件:做相關操作,檢查是否記錄成功

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

1.建表LOGON_TABLE

2.建觸發器

CREATE TRIGGER TRI_LOGON

  AFTER LOGON ON DATABASE

BEGIN

  INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT('USERENV', 'SESSION_USER'),

SYSDATE);

END;

補充操作說明:指令:select value from v$parameter t where t.name= 'audit_trail',VALUE等于DB,OS中的一個

九.檢查是否限制具備資料庫超級管理者(SYSDBA)權限的使用者遠端登入

判斷條件:1. 以SYSDBA使用者不能遠端連接配接到資料庫。

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

補充操作說明:指令:select t.VALUE from v$parameter t whereupper(t.NAME) like  '%REMOTE_LOGIN_PASSWORDFILE%',回顯中出現NONE

十.檢查是否在資料庫對象上設定了VPD和OLS

判斷條件:通過視圖來檢查是否在資料庫對象上設定了VPD和OLS。

    1. 在表上建構 VPD可以使用Oracle所提供的 PL/SQL 包 DBMS_RLS 控制整個 VPD 基礎架構,具體設定方法較複雜,建議參考Oracle文檔進行配置。

2. Oracle标簽安全(OLS)是在相關表上通過添加一個标簽列來實作複雜的資料安全控制,具體細節請參考Oracle文檔。

補充操作說明:指令:select count(*) from v$vpd_policy,回顯中COUNT值大于等于1

十一. 檢查帳戶密碼生存周期

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

修改profile,使所有profile的PASSWORD_LIFE_TIME參數小于等于90

補充操作說明:在90天内,需要修改密碼

指令:select limit from dba_profiles t where resource_name= 'PASSWORD_LIFE_TIME',回顯值小于等于90

十二. 檢查密碼強度設定

判斷條件:修改密碼為不符合要求的密碼,将失敗.profile中對于密碼強度有定義

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

CREATE PROFILE "TEST_PROFILE"

LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;

ALTER USER "USER_NAME"  PROFILE"TEST_PROFILE";

補充操作說明:指令:select count(*) from dba_profiles whereresource_name = 'PASSWORD_VERIFY_FUNCTION' and limit = 'NULL',回顯中COUNT值為0

十三.檢查是否使用資料庫角色(ROLE)來管理對象的權限

判斷條件:對應用使用者不要賦予DBA Role或不必要的權限。

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

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

除了預設使用者(sys、system和sysman),其他使用者都沒有賦予dba角色

補充操作說明:擷取擁有dba權限的非預設管理者使用者,使用者數等于0

十四.檢查是否在配置使用者所需的最小權限

判斷條件:非預設的具有DBA權限使用者個數為0

      grant 權限 to username;

revoke 權限 from username;

補充操作說明:用第一條指令給使用者賦相應的最小權限

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

擷取擁有dba權限的非預設管理者使用者,使用者數等于0

十五.檢查是否配置日志功能

判斷條件:登入測試,檢查相關資訊是否被記錄

      建立ORACLE登入觸發器,記錄相關資訊,但對IP位址的記錄會有困難1.建表LOGON_TABLE2.建觸發器CREATE TRIGGER TRI_LOGON AFTER LOGON ON DATABASEBEGIN INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT('USERENV','SESSION_USER'),SYSDATE);END;

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

指令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim('LOGON'),回顯中COUNT值大于等于1

十六. 檢查是否記錄安全事件日志

判斷條件:做相關測試,檢查是否記錄成功

補充操作說明:指令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim('LOGON')。回顯中COUNT值大于等于1

十七. 檢查是否設定記住曆史密碼次數

判斷條件:重用修改5次内的密碼,将不能成功。profile中對于次數有定義

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

補充操作說明:目前使用的密碼,必需在密碼修改5次後才能再次被使用

指令:select limit from dba_profiles t where resource_name= 'PASSWORD_REUSE_MAX',回顯中default值變成5

十八. 檢查是否對使用者的屬性進行控制

判斷條件:1. 可通過設定profile來限制資料庫賬戶密碼的複雜程度,密碼生存周期和賬戶的鎖定方式等。

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

      為每個新使用者賦予非預設的profile。

可通過下面類似指令來建立profile,并把它賦予一個使用者

CREATE PROFILE app_user2 LIMIT

  FAILED_LOGIN_ATTEMPTS 6

   PASSWORD_LIFE_TIME 60

   PASSWORD_REUSE_TIME 60

   PASSWORD_REUSE_MAX 5

   PASSWORD_VERIFY_FUNCTIONverify_function

   PASSWORD_LOCK_TIME 1/24

   PASSWORD_GRACE_TIME 90;

ALTER USER jd PROFILE app_user2;

補充操作說明:指令:select * from dba_users t where profile notin ('DEFAULT','MONITORING_PROFILE'),回顯中的值大于0

十九. 檢查是否存在dvsys使用者dbms_macadm對象

判斷條件:以DBA使用者登陸,不能查詢其它使用者下面的資料

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

補充操作說明:指令:select count(*) from dba_users whereusername='DVSYS',回顯中COUNT值等于1

本文轉自 穿越防火牆 51CTO部落格,原文連結:http://blog.51cto.com/sjitwant/1692168