oracle11g數據庫安全加固須謹慎

oracle11g數據庫安全加固須謹慎

數據庫安全配置中,需要做相關的安全加固工作。以確認數據庫的安全,但是,有些時候,操作不當或者數據庫業務賬號修改密碼後,而程序的連接數據庫的配置封裝在jar裏,如果jar內的連接數據庫的配置信息沒有做相應的修改的話。就會對數據庫的此業務賬號造成嚴重的後果。

因此,真正瞭解Oracle安全數據庫用戶的狀態,就顯得尤爲重要了。下面我們就看一下oracle數據庫中的多種用戶狀態。

ORACLE數據庫用戶有多種狀態,可查看視圖USER_ASTATUS_MAP。

SQL> col status for a30
SQL> select * from user_astatus_map;

   STATUS#  STATUS
----------  ------------------------------
         0   OPEN
         1   EXPIRED
         2   EXPIRED(GRACE)
         4   LOCKED(TIMED)
         8   LOCKED
         5   EXPIRED & LOCKED(TIMED)
         6   EXPIRED(GRACE) & LOCKED(TIMED)
         9   EXPIRED & LOCKED
        10   EXPIRED(GRACE) & LOCKED

9 rows selected.

通過上面的查詢我們可以看到在Oracle中account總共有9種不同的狀態,對應dba_users視圖中的account_status字段。
下面我分別就每種狀態的含義和出現的情況做個簡單的說明,以便於今後的系統管理和維護。

分析上面的9種狀態不難看出,其實獨立的狀態只有OPEN、EXPIRED、LOCKED、EXPIRED(GRACE)、LOCKED(TIMED) 5種形式。其他4種不過是前面幾種形式的組合而已。
或者也可以這樣理解:
以上的9種狀態可以分爲兩大類:
1、基本狀態(前五種爲基本狀態:0 OPEN、1 EXPIRED、2 EXPIRED(GRACE)、4 LOCKED(TIMED)、8 LOCKED);
2、組合狀態(後四種爲組合狀態:5 EXPIRED & LOCKED(TIMED)、6 EXPIRED(GRACE) & LOCKED(TIMED)、9 EXPIRED & LOCKED、10 EXPIRED(GRACE) & LOCKED);
後四種的組合狀態可通過狀態號STATUS#獲得其狀態的兩個組合。掌握前五種即可。

具體詳細解釋請參考如下:
OPEN:   這個是大家最常見的,就是表示這個是可用的,沒有任何限制的帳戶
LOCKED:  表示這個帳戶被DBA鎖定. 一般通過alter user username account lock(unlock);
EXPIRED:  表示該帳戶被設置爲口令到期,要求用戶在下次logon的時候修改口令(系統會在該account被設置爲expire後的第一次登陸是提示你修改密碼)
EXPIRED(GRACE): 當設置了grace以後(第一次成功登錄後到口令到期後有多少天時間可改變口令,在這段時間內,帳戶被提醒修改口令並可以正常登陸,
    account_status顯示爲EXPIRED(GRACE).
LOCKED(TIMED): 這種狀態表示失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定,需要注意的是,在Oracle 10g中,默認的DEFAULT值是10次.

EXPIRED & LOCKED:    表示此賬戶被設置爲口令到期且被鎖定。
EXPIRED(GRACE) & LOCKED(TIMED): 當account_stutus爲EXPIRED(GRACE)的時候,用戶又嘗試失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定
EXPIRED & LOCKED(TIMED):  當設置了account expire後,用戶又失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定
EXPIRED(GRACE) & LOCKED:  用戶account_status爲EXPIRED(GRACE)後,又被DBA 手工鎖定帳戶後的狀態

下面通過實例操作來說明:

本人對oracle數據庫的profile文件進行如下安全設置:(其中的FAILED_LOGIN_ATTEMPTS 6是對用戶嘗試失敗的登錄最大次數的限制,這裏只允許最多嘗試失敗6次)
SQL>ALTER PROFILE DEFAULT LIMIT
 FAILED_LOGIN_ATTEMPTS 6
 PASSWORD_LIFE_TIME 60
 PASSWORD_REUSE_TIME 60
 PASSWORD_REUSE_MAX 5
 PASSWORD_VERIFY_FUNCTION verify_function_11g
 PASSWORD_LOCK_TIME 1/24
 PASSWORD_GRACE_TIME 90;
 
通過以下語句查詢當前用戶的狀態:

SQL> select username,account_status from dba_users;

USERNAME                        ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER                         OPEN
DBSNMP                           OPEN
SYSMAN                           OPEN
SCOTT                             OPEN
FLOWS_FILES                     EXPIRED & LOCKED
MDSYS                            EXPIRED & LOCKED
WMSYS                            EXPIRED & LOCKED
ORDDATA                         EXPIRED & LOCKED
CTXSYS                           EXPIRED & LOCKED
ANONYMOUS                       EXPIRED & LOCKED

接下來使用賬號dba_user和scott,以錯誤的密碼嘗試連接數庫6次以上後,再查看數據庫用戶狀態:

SQL> select username,account_status from dba_users;

USERNAME                        ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER                         EXPIRED(GRACE) & LOCKED(TIMED)
DBSNMP                           OPEN
SYSMAN                           OPEN
SCOTT                             EXPIRED(GRACE) & LOCKED(TIMED)
FLOWS_FILES                     EXPIRED & LOCKED
MDSYS                            EXPIRED & LOCKED
WMSYS                            EXPIRED & LOCKED
ORDDATA                         EXPIRED & LOCKED
CTXSYS                           EXPIRED & LOCKED
ANONYMOUS                       EXPIRED & LOCKED

事實證明,當用戶DBA_USER和SCOTT爲EXPIRED(GRACE)的時候,用戶又嘗試失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定.
如果這兩個用戶爲生產現網的業務賬戶的話,管理員不能及時發現問題或報警的話,將會造成業務中斷等嚴重的後果。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章