數據庫安全問題一直是人們關注的焦點之一,我們知道一個企業或者機構的數據庫如果遭到黑客的攻擊,而這些數據庫又保存著非常重要的數據,象銀行、通信等數據庫,後果將不堪設想。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數據庫系統運行的絕對安全,強烈建議數據庫管理員修改該用戶的默認口令,不要為不懷好意的人留下“方便之門”。