資料庫安全問題一直是人們關注的焦點之一,我們知道一個企業或者機構的資料庫如果遭到駭客的攻擊,而這些資料庫又儲存著非常重要的資料,象銀行、通訊等資料庫,後果將不堪設想。Oracle資料庫使用了多種手段來保證資料庫的安全性,如密碼,角色,許可權等等。
作為Oracle的資料庫管理員都知道,資料庫系統典型安裝後,一般sys和system以及internal這三個使用者具有預設的口令,資料庫安裝成功後,系統管理員作的第一件工作就是修改這些使用者的口令,保證資料庫的安全性。然而,眾多管理員往往忽視了其中的一個安全問題,下面我們就將詳細討論這個問題。
Oracle資料庫系統如果採用典型安裝後,除了建立前面介紹的幾個使用者外,另外還自動建立了一個叫做DBSNMP的使用者,該使用者負責運行Oracle系統的智能代理(Intelligent Agent),該使用者的預設密碼也是“DBSNMP”。如果忘記修改該使用者的口令,任何人都可以通過該使用者存取資料庫系統。現在我們來看一下該使用者具有哪些許可權和角色,然後來分析一下該使用者對資料庫系統可能造成的損失。
啟動SQL/PLUS程式,使用該使用者登入進入:
.
SQL> select * from session_privs;
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
ANALYZE ANY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
可以看到該使用者不是SYS或SYSTEM系統管理使用者,然而,它卻具有兩個系統級許可權:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM。
看到這兩個許可權你應該馬上想到,這些都是安全隱患,尤其是UNLIMITED TABLESPACE,它是破壞資料庫系統的攻擊點之一。如果這時候你還依然認為,即使有人利用這個沒有修改的口令登入進資料庫也造成不了什麼損失的話,我就不得不提醒你:該使用者具有UNLIMITED TABLESPACE的系統許可權,它可以寫一個小的指令碼,然後惡意將系統用垃圾資料填滿,這樣資料庫系統也就無法運行,並將直接導致最終的癱瘓。目前很多資料庫系統都要求7X24的工作,如果出現了系統用垃圾資料填滿的情況,那麼,等資料庫系統復原時,恐怕不可挽回的損失已經造成了。
為了保證Oracle資料庫系統啟動並執行絕對安全,強烈建議資料庫管理員修改該使用者的預設口令,不要為不懷好意的人留下“方便之門”。