首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle DBSNMP 預設密碼:常被忽視的安全隱患

     編輯:Oracle 資料庫基礎

風險描述

典型安裝會自動建立 DBSNMP 使用者,預設密碼同名,擁有 UNLIMITED TABLESPACE 與 CREATE PUBLIC SYNONYM 系統權限。攻擊者可利用此帳號惡意填滿表空間導致資料庫癱瘓。

權限檢視

SQL> CONNECT DBSNMP/DBSNMP
SQL> SELECT * FROM SESSION_PRIVS;

CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE   -- 危險:可無限擴展表空間
CREATE TABLE
CREATE PUBLIC SYNONYM  -- 危險:可建立公用同義詞干擾名稱解析
...

攻擊場景

-- 惡意腳本:無限迴圈建表塞滿表空間
BEGIN
  LOOP
    EXECUTE IMMEDIATE 'CREATE TABLE DBSNMP.TMP_' || ROWNUM || ' AS SELECT * FROM ALL_OBJECTS';
  END LOOP;
END;
/
-- 導致 ORA-01653/ORA-01654,資料庫無法寫入,業務中斷

修復措施

  1. 立即修改密碼:
    ALTER USER DBSNMP IDENTIFIED BY "ComplexP@ssw0rd!";
  2. 鎖定帳號(若不使用 Intelligent Agent):
    ALTER USER DBSNMP ACCOUNT LOCK;
  3. 回收不必要權限:
    REVOKE UNLIMITED TABLESPACE FROM DBSNMP;
    REVOKE CREATE PUBLIC SYNONYM FROM DBSNMP;
    -- 僅保留 CREATE SESSION 等基本權限
  4. 審計追蹤:
    AUDIT CREATE TABLE, CREATE SYNONYM BY DBSNMP BY ACCESS;

自動化檢查腳本

-- 檢查預設密碼帳號
SELECT USERNAME FROM DBA_USERS_WITH_DEFPWD;

-- 檢查 DBSNMP 狀態
SELECT USERNAME, ACCOUNT_STATUS, PROFILE
FROM   DBA_USERS
WHERE  USERNAME = 'DBSNMP';

最佳實務

  • 安裝後立即執行 SECURE_DBA 腳本或手動修改所有預設帳號密碼。
  • 啟用密碼驗證函數(VERIFY_FUNCTION)強制複雜度。
  • 定期審計 DBA_USERS_WITH_DEFPWD。
  • 12c+ 使用 ORACLE_SUPPLIED 欄位識別內建帳號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved