熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫安全措施

2013-11-13 12:47:58  來源: Oracle 

  說明以下措施只是加強oracle訪問上的安全防止非法用戶通過oracle中的漏洞進行非法連接對數據庫中的數據進行非法操作造成數據庫損害

  一數據庫安全原則

  .只安裝oracle必須的組件

  .鎖定並終止默認用戶帳號

  .改變默認用戶密碼

  .激活數據字典保護(oraclei默認具有此功能)

  .根據實際情況給予最少的權限

  .強制進行有效的訪問控制(oraclei默認具有此功能)

  .限制操作系統訪問

  .限制網絡訪問

  .安裝所有的安全補丁

  二具體安全加強措施 .對默認用戶進行鎖定

  在oracle安裝過程中默認安裝會有很多的默認用戶造成安全潛在問題可以將其鎖定限制對數據庫進行連接

  Oracle范例用戶HROEPMSHQS_ADMQSQS_WSQS_ESQS_OSQS_CBADMQS_CBQS_CS

  只是用於oracle的范例沒有實際用處

  DBSNMP負責運行Oracle系統的智能代理(Intelligent Agent)實際中很少使用幾乎不使用

  OUTLN用於存儲Outlines不使用時可鎖定使用時再打開

  MDSYS ORDSYS CTXSYS ORDPLUGINS用於支持oracle的Intermedia默認鎖定

  WMSYS用於存儲Oracle Workspace Manager的元數據信息默認鎖定

  ANONYMOUS用於允許HTTP 訪問Oracle XML DB

  XDB用於存儲Oracle XML DB數據和元數據

  此外還有一些系統自帶的用戶不再列舉建議對除syssystemrmanperfstat以外的系統自帶用戶進行鎖定減少安全隱患

  Sqlselect usernameaccount_status from dba_users;

  alter user username account lock; .安裝最新的安全補丁

  安全公告和補丁位置如下

  

  .密碼管理機制

  在Oracle我們可以通過修改用戶概要文件來設置密碼的安全策略可以自定義密碼的復雜度在概要文件中有以下參數是和密碼安全有關系的

  FAILED_LOGIN_ATTEMPTS最大錯誤登錄次數

  PASSWORD_GRACE_TIME口令失效後鎖定時間

  PASSWORD_LIFE_TIME口令有效時間

  PASSWORD_LOCK_TIME登錄超過有效次數鎖定時間

  PASSWORD_REUSE_MAX口令歷史記錄保留次數

  PASSWORD_REUSE_TIME口令歷史記錄保留時間

  PASSWORD_VERIFY_FUNCTION口令復雜度審計函數

  缺省這個安全策略是沒有啟用的

  啟用安全策略

  以sys用戶執行SQL> @?/rdbms/admin/utlpwdmgsql

  設置舉例

  CREATE PROFILE app_user LIMIT

  FAILED_LOGIN_ATTEMPTS

  PASSWORD_LIFE_TIME

  PASSWORD_REUSE_TIME

  PASSWORD_REUSE_MAX UNLIMITED

  PASSWORD_VERIFY_FUNCTION verify_function

  PASSWORD_LOCK_TIME /

  PASSWORD_GRACE_TIME ;

  .資源管理機制

  啟用資源管理

  SQL> alter system set resource_limit=true;

  設置舉例

  CREATE PROFILE app_user LIMIT

  SESSIONS_PER_USER UNLIMITED

  CPU_PER_SESSION UNLIMITED

  CPU_PER_CALL

  CONNECT_TIME

  LOGICAL_READS_PER_SESSION DEFAULT

  LOGICAL_READS_PER_CALL

  PRIVATE_SGA K

  COMPOSITE_LIMIT ;

  指定profile可以使用create user 或者alter user舉例如下

  CREATE USER test

  IDENTIFIED BY aZbC

  DEFAULT TABLESPACE data_ts

  QUOTA M ON test_ts

  QUOTA K ON data_ts

  TEMPORARY TABLESPACE temp_ts

  PROFILE profile_name;

  ALTER USER test

  IDENTIFIED BY ABDD

  DEFAULT TABLESPACE data_ts

  TEMPORARY TABLESPACE temp_ts

  QUOTA M ON data_ts

  QUOTA ON test_ts

  PROFILE profile_name;

   權限管理

  根據實際情況細分權限建立角色對於系統權限慎重給予采用最小授權原則給用戶盡量少的權限

  用戶組PUBLIC顧名思義表示數據庫中的每一位用戶因此對PUBLIC 用戶組授予權限其實也就是對數據庫中的每一位用戶都授予了相應的權限這是在授予或撤銷權限時非常有用的一條捷徑但也可能帶來巨大的安全隱患尤其是在試圖確保以最少權限的方式運行數據庫時更是如此

  撤銷Public 組的一些不必要權限嚴格限制以下程序包的權限

  UTL_FILE:該程序包允許oralce 用戶讀取服務器上的文件如果設置錯誤的話可能可以得到任何文件

  UTL_HTTP該程序包允許oracle 用戶通過HTTP 訪問外部資源包括惡意的web 代碼和文件

  UTL_TCP: 該程序包允許oracle 通過TCP 建立連接從而從網絡上得到可執行文件

  UTL_SMTP: 該程序包允許oracle 通過SMTP 方式進行通信從而轉發關鍵文件

  撤銷以上包的執行權限

  Sql

  revoke EXECUTE on UTL_FILE from public;

  revoke EXECUTE on UTL_TCP from public;

  revoke EXECUTE on UTL_SMTP from public;

  revoke EXECUTE on UTL_HTTP from public; .修改認證方式

  Oracle默認使用操作系統認證只要能進入系統可直接以sys進入oracle存在較大安全隱患可修改為數據庫認證方式

  在$ORACLE_HOME/network/admin中打開sqlnetora將SQLNETAUTHENTICATION_SERVICES= (NTS)注釋掉在前面加#即可 .限制IP連接

  由於Oracle 的TNS 監聽器有許多安全漏洞其中的一些漏洞甚至能讓入侵者得到操作系統的超級用戶權限或者修改數據庫中的數據因此在打好補丁的同時對連接IP 的限制也能做到防患於未然

  在$ORACLE_HOME\network\admin 目錄下修改SQLNETORA文件

  增加如下內容

  tcpvalidnode_checking = YES

  tcpinvited_nodes = (IP地址 hostname)

  IP地址和hostname是允許連接的主機的名字和IP地址 .關掉Extproc 功能

  由於extproc 存在安全問題允許用戶不進行身份認證就可以調用系統函數因此如果不需要該功能必須關閉

  修改TNSNAMESORA 和LISTENERORA 文件刪除含有EXTPROC的條目使兩個文件中只含有使用的有效連接信息 .啟動審計功能

  Oracle的審計機制是用來監視用戶對ORACLE數據庫所做的各種操作在缺省情況下系統的審計功能是關閉的可以在INITORA參數文件中設置參數AUDIT_TRAIL來激活它的值有NONE 禁止審計DB 啟用審計寫入SYSAUD$OS 啟用審計寫入操作系統

  當AUDIT_TRAIL=OS可設置AUDIT_FILE_DEST指定審計文件的位置默認情況在$ORACLE_HOME/rdbms/audit下面

  AUDIT_SYS_OPERATIONS AUDIT_TRAIL AUDIT_FILE_DEST都是靜態參數需修改參數文件重啟後生效

  設置審計水平

  Statement指定對影響數據庫對象的一個特定類型的特定SQL語句進行審計比如對表的audit table有以下語句CREATE TABLE TRUNCATE TABLE COMMENT ON TABLE and DELETE [FROM] TABLE等

  Privilege對由指定系統權限授權的SQL語句進行審計比如AUDIT CREATE ANY TRIGGER是對由CREATE ANY TRIGGER系統權限授權的語句進行審計

  Object對特定對象上的特定操作進行審計比如ALTER TABLE on the emp

  設置審計條件

  BY SESSION/BY ACCESSBY SESSION使oracle在同一session中的同一類型的SQL語句只寫一條記錄BY ACCESS使oracle對每次訪問寫一條記錄

  WHENEVER SUCCESSFUL/WHENEVER NOT SUCCESSFULWHENEVER SUCCESSFU只審計那些成功執行的SQL語句WHENEVER NOT SUCCESSFUL只審計那些失敗或結果錯誤的SQL語句

  審計操作舉例

  審計連接

  AUDIT SESSION; AUDIT SESSION BY scott lori;

  審計指定權限

  AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

  AUDIT DELETE ANY TABLE;

  AUDIT SELECT TABLE INSERT TABLE DELETE TABLE EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;

  審計指定對象

  AUDIT DELETE ON scottemp;

  AUDIT SELECT INSERT DELETE ON jwarddept BY ACCESS WHENEVER SUCCESSFUL;

  AUDIT SELECT ON DEFAULT WHENEVER NOT SUCCESSFUL;

  關閉審計操作

  關閉上面例子中的相應審計

  NOAUDIT session;

  NOAUDIT session BY scott lori;

  NOAUDIT DELETE ANY TABLE;

  NOAUDIT SELECT TABLE INSERT TABLE DELETE TABLEEXECUTE PROCEDURE;

  關閉所有語句審計

  NOAUDIT ALL;

  關閉所有權限審計

  NOAUDIT ALL PRIVILEGES;

  關閉對象審計

  NOAUDIT DELETE ON emp;

  NOAUDIT SELECT INSERT DELETE ON jwarddept;

  關閉某一對象上的所有審計

  NOAUDIT ALL ON emp;

  關閉所有的默認對象審計

  NOAUDIT ALL ON DEFAULT;

  相關審計信息視圖

  ALL_DEF_AUDIT_OPTS

  USER_OBJ_AUDIT_OPTS

  DBA_OBJ_AUDIT_OPTS

  DBA_STMT_AUDIT_OPTS

  DBA_PRIV_AUDIT_OPTS

  DBA_AUDIT_TRAIL

  USER_AUDIT_TRAIL

  DBA_AUDIT_SESSION

  USER_AUDIT_SESSION

  DBA_AUDIT_STATEMENT

  USER_AUDIT_STATEMENT

  DBA_AUDIT_OBJECT

  USER_AUDIT_OBJECT

  DBA_AUDIT_EXISTS

  SM$AUDIT_CONFIG

  KU$_AUDIT_VIEW

  KU$_AUDIT_OBJ_BASE_VIEW

  KU$_AUDIT_OBJ_VIEW

  DBA_AUDIT_POLICIES

  ALL_AUDIT_POLICIES

  USER_AUDIT_POLICIES

  DBA_FGA_AUDIT_TRAIL

  DBA_REPAUDIT_ATTRIBUTE

  ALL_REPAUDIT_ATTRIBUTE

  USER_REPAUDIT_ATTRIBUTE

  DBA_REPAUDIT_COLUMN

  ALL_REPAUDIT_COLUMN

  USER_REPAUDIT_COLUMN

  查看審計信息舉例

  列出活動的語句審計操作

  SELECT * FROM DBA_STMT_AUDIT_OPTS;

  列出活動的權限審計操作

  SELECT * FROM DBA_PRIV_AUDIT_OPTS;

  列出對指定對象的活動對象審計操作

  SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER = SCOTT AND OBJECT_NAME LIKE EMP%;

  列出默認的對象審計操作

  SELECT * FROM ALL_DEF_AUDIT_OPTS;

  列出審計記錄

  SELECT * FROM DBA_AUDIT_OBJECT;

  列出對於AUDIT SESSION審計操作的審計記錄

  SELECT USERNAME LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD LOGOFF_LWRITE LOGOFF_DLOCK FROM DBA_AUDIT_SESSION;

  詳細信息請查看聯機文檔及相關資料


From:http://tw.wingwit.com/Article/program/Oracle/201311/16598.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.