一. 檢查項名稱:檢查是否使用加密傳輸
判斷條件:通過網絡層捕獲的資料庫傳輸包為加密包,有設定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