天天看點

Oracle資料庫安全規範建議第一章 資料庫伺服器安全第二章 使用者帳号配置安全第三章 系統配置安全第四章 網絡安全第五章 審計與監控第六章 資料庫變更安全

第一章 資料庫伺服器安全

1.1 伺服器程式安全

安全要求

1. 在安裝 Oracle 系統時,隻安裝必須的元件。

2. Oracle 的安裝目錄要和作業系統的系統盤分開。

3. 確定所有 Oracle 資料庫伺服器上不要安裝未經授權的伺服器及工作站程式。

4. 禁止在 Oracle 資料庫伺服器上安裝應用軟體,除非應用軟體是資料庫提供服務所必須的。

5. 安裝最新的資料庫伺服器更新檔包。

6. 根據需求隻安裝所需内容。如:不需要 web 功能,就不要安裝相應元件。

1.2 遠端伺服器管理安全

1. 對 Oracle 資料庫伺服器管理及故障排除應盡可能在本地實體控制台完成。

2. 需要遠端管理時,必須使用安全工具保證遠端通路的安全。

3. 進行遠端管理時必須對通路通道進行加密,以防止敏感資訊被竊取。

4. 通過終端服務遠端通路時,應使用防火牆等限制控制工具控制通路點的 IP 位址及登入 ID。

5. 應定期(至少每月)檢查網絡及系統針對遠端管理通路的配置情況,確定其安全并适用, 同時對該配置的更改及時認證并記錄。

第二章 使用者帳号配置安全

實施指引

1. Unix 下,Oracle 的帳号群組的權限也作相應設定。建立資料庫管理者組(DBA)配置設定 root 和

Oracle 軟體擁有者的使用者 ID 給這個組。DBA 能執行的程式隻有 710 權限。在安裝過程中 SQL*DBA 系統權限指令被自動配置設定給 DBA 組。

2.1 使用者分組

1. 資料庫應用對象級的資料庫使用者,指這些賬戶是和應用相關的,權限限制于資料庫對象級别。

2. 資料庫系統級的資料庫使用者,指這些賬戶是和資料庫運維、檢查相關的,權限是資料庫系統級别的。

明細賬戶分類    命名規則    使用者及用途   
資料庫對象建立賬戶(即對象 owner)   由應用負責人(沒有則開發負責人)根據實際需求命名(避免使用其他命名規則中用到的 app、read 等關鍵字)   操作團隊或資料庫運維團隊:
執行資料庫釋出 DDL、建立同義詞部分
其它情況下的 DDL 操作  
應用連接配接資料庫賬戶  

1.和對象 owner 一一對應:對象 owner 名+app  

2.如果有和其它應用互動等需求需要單個對象 owner 的對象由多個應用賬戶通路,則可使用如下方式增加:對象

owner 名+用途說明字元串縮寫+app

應用運維團隊或操作團隊 

配置應用伺服器端對資料庫的連接配接(如中間件連接配接池等)

應用運維隻讀賬戶  對象 owner 名+read   

應用運維團隊 

應用日常運維 

資料庫 DML 賬戶 對象 owner 名+dml    操作團隊:
執行資料庫釋出 DML 部分
應用資料背景修改賬戶 對象 owner 名+mod    背景資料修改團隊:
執行資料庫端背景應用資料修改
系統權限    對象權限   

資料庫對象建立賬

戶(即對象 owner)  

RESOURCE 和 CONNECT 角色下的所有權限 對 OWNER 下的隊友有所有權限
應用連接配接資料庫賬戶(即 APP 使用者)   Create session 和 create synonym 權限

對應的 OWNER 使用者下的所有對象有

insert,select,update,delete,execute權限

應用運維隻讀賬戶

(即 READ 使用者)

對 OWNER 使用者下的所有表有

select 權限。  

(即 DML 使用者) delete,insert,select,update 權限。  
(即 MOD 使用者) 

應用資料提取賬戶

(即 extr 使用者)

不做預設授權,需要根據業務需求授權

不做預設授權,需要根據業務需

求授權

安全審計資料庫系統級隻讀賬戶 jtsec 安全管控團隊:
進行各類安全方面的審計、檢查

日常運維資料庫系

統級隻讀賬戶

dbadm 資料庫運維團隊:
資料庫日常運維
日常運維資料庫系統級隻讀及特定特權賬戶 dbmgr
資料庫擴容、清理資料庫程序等特殊操作

2.2 使用者管理

3. 對于有固定工作期限的職工使用的帳号,必須設定使用期限。

4. 資料庫管理者必須定期檢查使用者的帳号,以確定已授權的通路權限是必須的。

1. 辨別出所有修改資料庫使用者的腳本。确定腳本中修改帳号時使用的指令是”alter user”。

2. 在帳号的建立請求中要求包含有帳号的有效期資訊。

3. 資料庫管理系統的 profile 制定資料庫安全通路政策。

4. 定期檢查使用系統内帳号的應用系統使用者的權限。

5. 及時删除不再使用的帳号。

2.3 預設帳号

Oracle 10g 以上版本的資料庫已經沒有 sys/system 使用者的預設密碼,其中 Oracle 11g 以上的版本中,使用者可使用大小寫敏感密碼,也可以使用傳統的大小寫不敏感的密碼。

1. Oracle 的預設安裝會建立很多預設的使用者名和密碼。

2. 下面是典型安裝情況下的 Oracle 資料庫内的預設帳戶,和帳戶狀态。

USERNAME USER_ID ACCOUNT_STATUS
SYS OPEN
SYSTEM 5
OUTLN 11 EXPIRED & LOCKED
DIP 19
TSMSYS 21
DBSNMP 24
WMSYS 25
EXFSYS 34
DMSYS 35
CTXSYS 36
XDB 38
ANONYMOUS 39
ORDSYS 43
ORDPLUGINS 44
SI_INFORMTN_SCHEMA 45
MDSYS 46
OLAPSYS 47
MDDATA 50
SYSMAN 51
MGMT_VIEW 53
SCOTT 54

3. 可以通過下面的語句檢視系統中的所有使用者:

select username from dba_users

2.4 認證及密碼配置

1.對系統的 Profile 應該設定 IDLE_TIME 值,使系統能夠自動斷開逾時的連接配接,例如帳戶在靜止 30 分鐘後就會自動斷開連接配接。

2.必要的情況下可以将使用者的并發會話數限制為 1。

3.使用者的帳号密碼長度必須大于 6 個字元并且密碼中必須包含至少一個數字。

4.帳号設定必須允許使用者能夠自行修改自己的密碼。

5.密碼的重用個數最好設定為 12,這樣可以確定使用者不能使用剛使用過的 12 個密碼。

6.密碼的有效期應該設定為 30 天。

7.帳号密碼中禁止使用單詞。

1. 将參數 FAILED_LOGIN_ATTEMPTS 設定一個值,例如 n,這樣當一個使用者的密碼連續出錯次數超 過 n 次時,就會被鎖住。

2. 由 于 Oracle 預設采用得是密碼方式認證,由于密碼容易被竊取,可以考慮采用以下認證方式進行認證:

· CyberSafe

· Kerberos

· SecurID

· Identix Biometric

· RADIUS

· SSL

在伺服器和用戶端中sqlnet.ora 中設定:

SQLNET.AUTHENTICATION_SERVICES=(oracle 提供的認證方法) 在資料庫初始化參數中設定:

REMOTE_OS_AUTHENT=FALSE

3. 可以通過修改使用者概要檔案來設定密碼的安全政策,可以自定義密碼的複雜度。在概要檔案中以下參數是和密碼安全相關的:

· FAILED_LOGIN_ATTEMPTS:最大錯誤登入次數,設定為10次

· PASSWORD_GRACE_TIME:密碼失效後鎖定時間

· PASSWORD_LIFE_TIME:密碼有效時間

· PASSWORD_LOCK_TIME:登入超過有效次數鎖定時間

· PASSWORD_REUSE_MAX:密碼曆史記錄保留次數

· PASSWORD_REUSE_TIME:密碼曆史記錄保留時間

· PASSWORD_VERIFY_FUNCTION:密碼複雜度審計函數

其中密碼複雜性檢查函數PASSWORD_VERIFY_FUNCTION 是Oracle 中自帶的,作為複雜性函數中的default 檢查函數,但是預設這個函數沒有建立,需要運作在oracle 軟體的主目錄下的rdbms/admin 下的utlpwdmg.sql 才可以使用:

SQL> connect sys/passwd@database as sysdba SQL> @?/rdbms/admin/utlpwdmg.sql

這樣就可以使用這個函數來檢查密碼的複雜度,啟用密碼複雜性函數,選擇default。預設

的這個函數可以檢查密碼是否與使用者名相同,是否小于4 個字元,是否是一組特定的詞, 密碼中是否包含1 個字元、一個數字和一個标點符号,然後再和舊密碼進行檢查。當然也可以修改或者建立自定義的密碼複雜度函數,然後啟用。

需要值得注意的是如果用alter user 來修改密碼,并不能完全用密碼複雜度檢查,最好用

password 函數進行密碼修改。例如:

SQL> connect scott/tiger Connected.

SQL> password

Changing password for SCOTT Old password:

New password:

Retype new password:

Password changed

4. 以下是使用密碼政策時的一些方法:

· 設定密碼鎖定時間的方法如下:

ALTER PROFILE [profile name] LIMIT PASSWORD_LOCK_TIME

· 一旦使用者被鎖住,可通過具有 ALTER ANY USER 權限的使用者用下面的指令對其解鎖:

ALTER USER [username] ACCOUNT UNLOCK

· 一個複雜的密碼應該具有以下特性:

混合了字母、數字和特殊字元

至少有 6 個字元在字典中無法找到

· 可以通過下面的指令修改角色的密碼:

ALTER ROLE [role] IDENTIFIED BY [password]

· 用下面的指令修改帳号的密碼:

ALTER USER [username] IDENTIFED BY [newpassword]

· 用下面的指令設定密碼失效的時間間隔:

ALTER PROFILE [profilename] LIMIT PASSWORD_LIFE_TIME 90

ALTER USER [username] PROFILE [profilename]

· 設定密碼的最大使用次數,方法如下:

ALTER PROFILE [profile name] LIMIT PASSWORD_REUSE_MAX 10 PASSWORD_REUSE_TIME UNLIMITED

2.5 權限管理

1.隻能給資料庫管理者賦 DBA 角色。

2.不要給應用系統的帳号賦 DROP 權限。

3.應該給角色賦權限,而不應該直接給使用者賦權限。

4.不要給應用系統的帳号賦 CREATE 權限。

5.不要給應用系統的帳号賦 UNLIMITED TABLESPACE 權限。

6.如果存在 scott 帳号,應該隻給 scott 賦 CONNECT 權限。

7.除非有特殊要求,不要給應用系統的帳号賦 BECOME USER 權限。

8.不要給應用系統的帳号賦 EXECUTE ANY PROCEDURE 權限。

9.不要給應用系統的帳号賦 GRANT ANY PRIVILEGE/ROLE 權限。

10. 除非有特殊要求,不要給應用系統的帳号賦 ALTER 權限。

1. 把所有直接授予使用者的權限撤消。建立角色,把所有需要的權限授予給角色,然後再把角色授予給使用者。

· 撤銷使用者權限,使用以下指令:

REVOKE [privilege] FROM [account name]

· 建立角色,使用以下指令:

CREATE ROLE [role name]

· 将權限授予角色,使用如下指令:

GRANT [privilege] TO [role name]

· 将角色授予使用者,使用以下指令:

GRANT [role name] TO [user name]

2. 撤銷所有被授予過 DBA 角色的使用者這一權限。然後重新為使用者設計新角色。REVOKE DBA FROM [user or role]

CREATE ROLE [role]

GRANT CREATE SESSION TO [role]

GRANT [role] TO [user or role]

3. 撤銷所有被授予過 RESOURCE 角色的使用者這一權限。然後重新為使用者設計新角色。REVOKE RESOURCE FROM [user or role]

4. 對象權限的 WITH GRANT OPTION 不可以有選擇性的撤銷。對象權限必須被全部撤銷,然後重新授予,但不通過 WITH GRANT OPTION 來授予。

REVOKE [privilege] ON [object name] FROM [user or role]   GRANT [privilege] ON [object name] TO [user or role]

5. 系統權限的 ADMIN OPTION 不可以有選擇性的撤銷。對象權限必須被全部撤銷,然後重新授予,但不通過 WITH GRANT OPTION 來授予。

REVOKE [system privilege] FROM [user or role]

GRANT [system privilege] TO [user or role]

6. 角色的 ADMIN OPTION 不可以有選擇性的撤銷。角色必須被全部撤銷,然後重新授予,但不通過 ADMIN OPTION 來授予。

REVOKE [role] FROM [user or role]   GRANT [role] TO [user or role]

7.使用 ANY 的系統權限應該僅限于資料庫管理者。

REVOKE SELECT ANY TABLE FROM [user or role]

8. 撤消 CTXSYS、 MDSYS、PORTAL30、和 PORTAL30_SSO 等使用者的 ALTER SYSTEM

權限并對這些使用者設定複雜的密碼。撤銷 ALTER SYSTEM 權限,指令如下:

REVOKE ALTER SYSTEM FROM [role or user]

9. 撤銷 Public 組的一些不必要權限,嚴格限制以下程式包的權限:

· UTL_FILE:該程式包允許Oracle使用者讀取伺服器上的檔案,如果設定錯誤的話,可能可以得到任何檔案。

· UTL_HTTP:該程式包允許Oracle使用者通過HTTP 通路外部資源包括惡意的web 代碼和檔案。

· UTL_TCP:該程式包允許Oracle通過TCP 建立連接配接,進而從網絡上得到可執行檔案。

· UTL_SMTP:該程式包允許 Oracle 通過 SMTP 方式進行通信,進而轉發關鍵檔案。

10.撤消 Public 角色的對象權限,把對象權限授予給需要的角色。指令如下:

REVOKE [privilege] ON [owner].[object] FROM PUBLIC

11.撤銷所有被授予過 CONNECT 角色的使用者這一權限,重新為使用者設計新角色。指令如下: REVOKE CONNECT FROM [user or role]

12.更改 UTL_FILE_DIR 參數,隻指向需要讀寫的目錄。删除 utl_file_dir=*,設定需要讀寫的目錄,如:utl_file_dir=c:\temp

13.在初始時,預設的 profle 的設定都為 UNILIMITED。但是為了防止無限制的資源使用,建議建立新的 profile 并分派給使用者。

· 建立新的 profile,指令如下:

CREATE PROFILE [profile name] LIMIT SESSIONS_PER_USER 2

CPU_PER_SESSION unlimited CPU_PER_CALL 6000

LOGICAL_READS_PER_SESSION unlimited LOGICAL_READS_PER_CALL 100

IDLE_TIME 30

CONNECT_TIME 480

· 将 profile 關聯到使用者,指令如下:

ALTER USER [username] PROFILE [profile name]

14.撤銷對任何系統表的通路權限。

REVOKE  [privilege]  ON [object] FROM [user or role]

15.SYS.AUD$ 審計表的讀取權限隻能授予安全管理者,删除其它使用者對審計表的任何權限,

指令如下:

REVOKE [permission] ON SYS.AUD$ FROM [user or role]

16.除非有特殊要求 07_DICTIONARY_ACCESSIBILIT)使用預設值 false,防止普通使用者對資料庫資料字典表的查詢。

17.extproc 允許使用者不進行身份認證就可以調用系統函數,是以必須關閉該功能。修改 TNSNAMES.ORA 和 LISTENER.ORA 檔案,删除以下條目:

icache_extproc, PLSExtproc,extproc

18.應該取消檔案的 setUID 功能,并且修改 Oracle 跟蹤檔案的權限:

cd $ORACLE_HOME/bin   chmod -s otrcrep

chmod 751 otrcrep

2.6 角色、視圖和通道控制

1.應用系統應使用密碼保護角色,不能向使用者洩漏角色的密碼。

2.最好不要賦給帳号任何 Oracle 的預設角色。

3.應用系統的帳号最好不要使用 RESOURCE 角色。

4.根據角色來定義視圖。

5.通過私有資料庫來限制使用者對表内非授權資料的通路。

6.如無特殊需求,關掉 Extproc 功能。

2.7 密碼安全控制

1. 使用一定的密碼政策控制密碼的複雜度

2. 對相應的使用者實施密碼政策

1. 建立密碼校驗函數

· 使用者名與密碼應不相同;

· 密碼最小長度大于 8;

· 密碼構成至少包括一個字母和一個數字。

2. 定義 profile 資源限制

· 允許空閑會話的時間 10 分鐘

· 失敗登陸嘗試 5 次

· 密碼鎖定時間 5 分鐘

· 密碼有效期 90 天

· 密碼寬限期 7 天

· 密碼重用間隔 180 天3. 對使用者應用 profile

· Alter user scott profile profile_limit;

校驗函數如下:

PROFILE 政策如下:

2.8 遠端登入安全

1. 關閉資料庫 sysdba、sysoper 角色的遠端登入 2. 防止惡意的遠端操作資料庫的潛在威脅

· Alter system set remote_login_passwordfile=NONE scope=both;

上述操作禁用了 oracle 的 sysdba、sysoper 角色的遠端登入。

2.9 監聽程式安全

2.10 使用者權限規範

資料庫應用對象級的資料庫使用者,指這些賬戶是和應用相關的,權限限制于資料庫對象級别。

第三章 系統配置安全

3.1 檔案及檔案許可

1.當給使用者賦權時要指定某個對象,而不能用 GRANT ALL,確定使用者被賦予所需的最小權限。

2.普通使用者沒有通路 Oracle 初始化參數的權限。

3.保護資料庫檔案,確定沒有未被授權的通路通道,為資料庫檔案設定所需的最小權限。

4.資料庫控制檔案的所有者必須是 Oracle,不能修改控制檔案的所有者和通路權限。

5.所有資料庫控制檔案必須受到嚴密的保護。

6.除了在資料庫安裝時設定的權限外,Oracle 使用者不能有更高的通路資料檔案的權限。

7.資料庫檔案的所有者必須是 Oracle。

8.應該隻有 Oracle 使用者才有通路初始化 init 檔案的權限,建議使用 spfile,但不要直接用編輯器編輯 spfile。

9.盡量禁用有外部存儲過程的服務。

10.應開啟資料庫的監聽器日志功能。

1. Oracle 提供了調用外部資料庫的存儲過程的方法。然而,如果沒有對這個通道進行正确的控制的話,外部的匿名使用者就很容易獲得作業系統的控制權。為了減少外部存儲過程監聽器暴露在網絡中所帶來的威脅,可采用以下方法:

通過配置 listener.ora 檔案使外部存儲過程服務的連接配接失效:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = dev01win2ksvr)(PORT = 1521))

通過配置檔案 protocol.ora 中的 validnode_checking 等參數,使 extproc 監聽器隻能接受指定位址的連接配接:

tcp.validnode_checking = YES

tcp.invited_nodes= (webserver.appsecinc.com, 192.168.1.110)

tcp.excluded_nodes= (attackers.com, 144.25.5.25, 234.12.3.12)

2. 以下兩種方法為監聽器設定密碼:

使用監聽器控制器,lsnrctl。

$ORACLE_HOME/bin/lsnrctl LSNRCTL>start

LSNRCTL>set password xxxxxx LSNRCTL>change_password

Old password:

New password: Reenter new password:

LSNRCTL>save_config

LSNRCTL> stop

直接在 listener.ora 檔案中修改。

PASSWORDS_listener_name=(password[,...password])

3. 通過設定參數 LOG_STATUS 來控制監聽器日志,方法如下:

首先用指令 lsnrctl 登入監聽器控制器

通過下面的指令來設定密碼:

LSNRCTL> SET PASSWORD [password]

通過下面的指令來設定日志的狀态:

LSNRCTL> SET LOG_STATUS on

應該取消檔案的 setUID 功能,并且修改 Oracle 跟蹤檔案的權限:

cd $ORACLE_HOME/bin

chmod -s otrcrep

3.2 管理

1.慎重考慮資料庫的空間配額,以限制人為的或意想不到的資料庫空間增長。

2.如果使用 Oracle 的企業管理器來管理資料庫,應該確定運作 OEM|EM|Grid Control 的機器不會受到攻擊,這台機器應該使用有密碼保護的屏保,在空閑時間應該鎖定作業系統。

3.在 Oracle 資料庫更新之後,要檢查使用者的權限是否因為角色權限的改變而改變了,檢查使用者的實際權限是否增加了。

4.當修改初始化參數檔案時,必須保留以下資訊:

對修改的注釋;

參數修改前和修改後的值;

修改的人名和時間。

3.3 備份

1.根據應用系統特點對 ORACLE 資料庫系統制定備份政策,并将備份政策文檔化。

2.必須對資料戶的備份政策定期進行測試。

第四章 網絡安全

本章節請參閱 UNIX 技術安全标準中“網絡安全”章節。

4.1 TCP/IP 服務

1. 對于 UNIX 系統平台:

檢查/etc/inetd.conf, /etc/rc.local, /etc/servers and /etc/rc.d/*檔案中哪些服務不需使用, 并屏蔽不需要的網絡服務。

UNIX 的更具體網絡安全配置要求請參照《UNIX 系統安全技術标準》。

1.在 UNIX 系統下,在/etc/inetd.conf 檔案中可以考慮關閉以下網絡服務和指令:

· 禁止以下網絡服務:

fingerd

rshd 或 remshd tftpd

rusersd rlogind rwhod whois rexec1

· 禁止以下指令的執行權限:

rlogin rcp

rsh 或 remsh

tftp trpt

2.至少每月一次檢查網絡服務配置,確定沒有未經認證的改動。

4.2 網絡連接配接資料庫

1. DBA 應該確定無 JDBC 連接配接時使用的資料沒有加密的儲存在 JDBC 的用戶端機器上。

2. 確定通過網絡或其它中間服務到資料庫的連接配接是加密的、通過有效認證的、且受到保護的。限制連接配接 IP,防止入侵者通過 TNS 監聽器得到作業系統的超級使用者權限或者修改資料庫中的資料。

3. 確定資料庫和網絡伺服器之間的共享連接配接支援對使用者的獨立的識别和認證。

4. DBA 應該為終端連接配接上來的帳号設定逾時設定:當帳号靜止 30 分鐘就會逾時。

5. DBA 應該拒絕所有沒有檔案記錄證明的登入帳号,及時 Disable 這些帳号。

1. 限制連接配接IP的方法是在$ORACLE_HOME\network\admin 目錄下修改SQLNET.ORA檔案, 增加如下内容:

tcp.validnode_checking = YES

tcp.invited_nodes = (192.168.0.1, test)

2. 可使用防火牆對連接配接IP進行限制。

4.3 資料庫複制

1.  DBA 應該確定資料庫複制使用獨立的帳号和密碼,這樣可以保護複制使用的存儲過程和工具。

2. 確定隻有指定的帳号和通過認證的 DBA 才有權使用複制的存儲過程和工具。

4.4 DB Links

1. DBA 應該確定通過 DB Link 連接配接到資料庫的使用者通過有效的身份認證,複制使用的配置除外。

2. DBA 應該確定應用沒有使用資料庫的公共 DB Link,除非安全管理者可以證明它是安全的。複制使用的配置除外。

4.5 網絡監控

1. 系統的網絡監控工具和軟體的安裝和使用必須嚴格控制

2. 網絡監控任務結束後,網絡監控軟體及一些應用代理小程式應當及時删除。

3. 所有使用的網絡監控軟體必須有明确的文擋記錄,并詳細說明用途。

4. 至少每月檢查一次網絡監控軟體的安裝和使用情況,杜絕非授權的安裝和使用。

4.6 網絡傳輸安全

1.修改監聽器的預設密碼。

2.監聽器的密碼應該受到保護。

3.隻有管理者才有通路 listener.ora 檔案的權限。

4.當敏感的應用系統從用戶端通路服務端時,應該使用進階網絡選項對傳輸的密碼進行加密。

5.Oracle 采用的是 TNS 協定傳輸資料,在傳輸過程中不能保證其中的資料被竊聽乃至修改, 是以必須對傳輸進行加密。

1. Oracle 在企業版中提供以下加密算法:DES, 3DES, AES, RC4, 3DES_2KEY

第五章 審計與監控

5.1 資料庫檢查審計

1. 安全管理者要確定所有重要系統都配置和使用了審計功能。

2. DBA 應該確定資料庫審計能捕獲資料庫内部和外部的操作。

3. 安全管理者應該確定捕獲到的審計資料儲存至規定時間。

4. DBA 確定隻有通過安全管理者認證的人員才有權通路審計資料。

5. 建立、修改和删除資料庫帳号等操作都應該被審計。

6. 建立、修改和删除資料庫的存儲結構等操作都應該被審計。

7. 建立、修改和删除資料庫對象等操作都應該被審計。

8. 建立、修改和删除表等操作都應該被審計。

9. 建立、修改和删除索引等操作都應該被審計。

10.Enabling 和Disabling 審計等操作應該被審計。

11.賦權和撤銷權限等操作應該被審計。

12.任何重命名資料庫對象的操作應該被審計。

13.給一個使用者或角色賦予或撤銷對象級權限的操作應該被審計。

14.所有修改資料庫字典或資料庫系統配置資訊的操作應該被審計。

15.所有失敗的連接配接操作應該被審計。如果可能的話,所有成功或失敗的試圖連接配接的操作都應該被審計。

16.DBA 應該確定以上提到的所有操作都被審計。

17.DBA 應該確定所有使用者的修改或删除審計資訊的操作被審計。

18.審計資料應該以可以被分析程式或腳本可以讀取的格式儲存。

19.所有删除審計資料的操作都應該産生一條審計追蹤的記錄。

20.安全管理者應該在一段時間内對審計資料進行有規律的檢查。

21.使使用者可以通過視圖檢視審計資訊,但 DBA 要確定這個操作受到 DBA 或審計員的控制。

22.DBA 應該確定對審計資訊進行 select、insert、delete 或 update 等操作都受到 DBA 或安全審計員的控制。

23. DBA 應該確定 Disable Auditing 權限受到 DBA 或審計員的控制。

5.2 實時事件報警

1.在系統資源 Profile 設定中,應該将密碼鎖定時間設定為 forever。

2.帳号在三次登入失敗後就應該被鎖定。

1. 在 Profile 設定中,将 password lock time 設定為 forever。

2. 在 Profile 設定中,将 lock out accounts 設定為 3。

5.3 事件審計

1.設計用來存放審計資訊的表。

2.設計一些 trigger,用來捕捉無法在表資訊中捕捉到的審計資訊。

3.對特定的 DDL 語句(alter user)設定 trigger,當使用者的密碼被修改時,記錄下替換的資訊。

4.修改初始化參數檔案(init.ora)檔案,啟動資料字典審計功能。

1. 在 Oracle 資料庫中使用審計功能需要執行以下幾步。

· 安裝 auditing schemas。這會在安裝過程中自動進行,是以這些表已經存在。

· 開通審計功能。将初始化參數 audit_trail 設為下列值之一來實作: NONE:預設值,不寫入審計資訊。

DB:表明審計資訊是記錄到 SYS.AUD$表中。

OS :表明審計資訊是記錄到 OS 檔案中,需要設定另一個初始化參數 AUDIT_FILE_DEST。

DB_EXTENDED:将 SQLBIND 及 SQLTEXT CLOB 的資訊也寫入 SYS.AUD$中。

2.審計 SYSDBA/SYSOPER 的操作,可以設定初始化參數 AUDIT_SYS_OPERATIONS = TRUE,審計記錄寫入 AUDIT_FILE_DEST 指定的位置。

3. 審計下面的事件:

· - Create Table

· - Create Index

· - Drop Index

· - Alter Index

· - Drop Table

· - Audit Object

· - Noaudit Object

· - Create Database

· - Alter Database

· - Create Tablespace

· - Alter Tablespace

· - Drop Tablespace

· - Alter Session

· - Alter User

· - Alter System

· - Create User

· - Create Role

· - Drop User

· - Drop Role

· - Set Role

· - Create Schema

· - Create Control File

· - Create Trigger

· - Alter Trigger

· - Drop Trigger

· - Create Profile

· - Drop Profile

· - Alter Profile

· - Drop Procedure

· - Alter Role

· - Logon

· - Logoff

· - Logoff by Cleanup

· - System Audit

· - System Noaudit

· - Audit default

· - Noaudit default

· - System Grant

· - System Revoke

· - Grant Role

· - Revoke Role

· - Enable Trigger

· - Disable Trigger

· - Enable all Triggers

· - Disable all Triggers

4. 對系統權限進行審計。

如:AUDIT select any table, create any trigger;

AUDIT select any table BY username BY SESSION|ACCESS;

對系統權限進行審計時,預設是按照 ACCESS 來記錄的。

5. 對使用者對象進行審計。

如:AUDIT ALL on hr.employees;

AUDIT UPDATE,DELETE on hr.employees BY SESSION|ACCESS;

對使用者對象權限進行審計時,預設是按照 SESSION 來記錄的。

第六章 資料庫變更安全

6.1 ddl 操作

· 變更釋出裡面不能有 drop、truncate 指令,如果出現這些語句需要嚴格進行評估

· 對象前面需要加上 owner 名稱

· 降高水位、move 表一定需要腳本,需要有測試報告

· 評估存儲過程中是否有 drop、truncate 操作