# sqlnet.ora
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.1.10, 192.168.1.20) # 白名單
tcp.excluded_nodes = (10.0.0.*) # 黑名單
舊版可用 protocol.ora 或登入觸發器實現。
# sqlnet.ora (Server)
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
TRACE_LEVEL_CLIENT = 16
# 註冊表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
USE_SHARED_SOCKET = TRUE
# listener.ora
(SID_DESC =
(GLOBAL_DBNAME = your_hostname)
(ORACLE_HOME = E:\oracle\ora92)
(SID_NAME = orcl)
)
# sqlnet.ora (Client)
NAMES.DIRECTORY_PATH = (HOSTNAME)
若 PUBLIC 或具 EXECUTE ANY PROCEDURE 權限的用戶取得執行權,可透過 GRANT_ADMIN_ANY_SCHEMA 昇級為 DBA 等效權限。對策:回收 PUBLIC 執行權、嚴控 ANY 權限、9i+ 採用顯式授權。
-- 1. 取得加密密碼
SELECT password FROM dba_users WHERE username = 'SCOTT'; -- F894844C34402B67
-- 2. 臨時修改密碼
ALTER USER scott IDENTIFIED BY lion;
-- 3. 執行業務操作
CONNECT scott/lion; -- do work
-- 4. 還原原密碼
CONNECT system/manager;
ALTER USER scott IDENTIFIED BY VALUES 'F894844C34402B67';
適用於排程作業、跨 Schema 維護,需 ALTER USER 權限。
REMOTE_OS_AUTHENT = FALSE 禁止遠端 OS 驗證O7_DICTIONARY_ACCESSIBILITY = FALSE 保護資料字典LSNRCTL 設定密碼防止關閉SELECT username "Default Password User"
FROM dba_users
WHERE password IN ('F894844C34402B67', ...); -- 含 SCOTT/TIGER 等常見雜湊值
DBMS_XDB.CFG_UPDATE 修改 HTTP/FTP 埠並 CFG_REFRESH| 觸發器類型 | 捕獲範圍 | 關鍵系統變數 |
|---|---|---|
| LOGON 觸發器 | 用戶登入(SID, IP, OS User, Machine, Program) | SYS_CONTEXT('USERENV','IP_ADDRESS'), USERENV('SESSIONID') |
| DDL 觸發器 | 全庫物件結構變更 | ORA_DICT_OBJ_OWNER, ORA_DICT_OBJ_NAME, ORA_SQL_TXT |
| DML 觸發器 | 指定表 INSERT/UPDATE/DELETE | :OLD/:NEW, ORA_SQL_TXT |
均需建立儲存表、授予 V$SESSION/V$MYSTAT 查詢權、替換 SP_WRITE_LOG 為實際日誌程序。
$(date +%Y%m%d) / Windows %date:~4,10%dd if=/dev/zero of=/test.dbf bs=1M count=1000 + iostat -x 2ssh-keygen + authorized_keys + ~/.ssh/config 別名ftp -n -i網路存取控制、最小權限原則、審計全覆蓋、定期掃描預設密碼,構建 Oracle 安全防禦纵深體系。將上述配置納入自動化佈署腳本,才能確保每個實例「生而安全」。