首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle Listener 密碼保護與 ADMIN_RESTRICTIONS 硬化配置指南

     編輯:Oracle 資料庫相關知識

為什麼需要 Listener 密碼?

預設情況下,`lsnrctl` **無需任何認證**即可執行 `STOP`、`STATUS`、`SERVICES`、`SET` 等管理命令,導致:

  • 惡意/誤操作停止監聽 → 所有新連線失效(DoS)
  • 遠程未授權獲取服務註冊資訊(偵察攻擊面)
  • 動態修改監聽參數(如 `TRACE_LEVEL`、`LOG_FILE`)導致資訊洩露或磁碟填滿

密碼配置完整流程 (9i/10g/11g/12c/19c 通用)

1. 進入 lsnrctl 互動模式

$ lsnrctl
LSNRCTL> SET CURRENT_LISTENER listener_demo92   # 多監聽器環境指定目標
LSNRCTL> START                                   # 啟動無需密碼
LSNRCTL> CHANGE_PASSWORD
Old password:          # 首次直接 Enter
New password: ********
Reenter new password: ********
LSNRCTL> SET PASSWORD
Password: ********
LSNRCTL> SAVE_CONFIG   # 持久化至 listener.ora

2. 驗證密碼生效

$ lsnrctl STOP LISTENER
TNS-01169: The listener has not recognized the password
$ lsnrctl
LSNRCTL> SET PASSWORD
Password: ********
LSNRCTL> STOP LISTENER
The command completed successfully

3. listener.ora 變更確認

# ---- ADDED BY TNSLSNR 2024-01-15 10:30:00 ----
PASSWORDS_LISTENER = 6D7AA003392C436A  # 加密存儲
# ---------------------------------------------

版本差異關鍵點

版本SAVE_CONFIG 行為額外建議參數
9i/10gR1需先 `SET PASSWORD` 再 `SAVE_CONFIG`,否則 TNS-01169手動添加 `ADMIN_RESTRICTIONS_=ON`
10gR2+支援 OS 認證回退:dba 群組用戶免密管理**關閉 OS 回退** 增加 `LOCAL_OS_AUTHENTICATION_=OFF`
11g/12c/19c同上,預設安全同 10gR2,建議顯式關閉 OS 回退

進階硬化:ADMIN_RESTRICTIONS 參數

在 `listener.ora` 手動添加:

ADMIN_RESTRICTIONS_LISTENER = ON

效果:

  • 運行時**禁止所有管理命令**(`STOP`、`SET`、`SAVE_CONFIG`、`CHANGE_PASSWORD` 等)
  • 配置變更**唯一途徑**:手動編輯 `listener.ora` → `LSNRCTL RELOAD` 或 `STOP/START`
  • 適用於合規要求「運行時不可變」的環境

完整安全基線清單

  1. 設定強密碼(≥12 字符,含大小寫數字符號)
  2. 關閉 OS 認證回退:`LOCAL_OS_AUTHENTICATION_=OFF`
  3. 啟用管理限制:`ADMIN_RESTRICTIONS_=ON`
  4. 限制監聽端口僅綁定內網 IP(`HOST=192.168.x.x` 而非 `0.0.0.0`)
  5. 啟用 TCPS/SSL 加密傳輸(`PROTOCOL=TCPS` + Wallet)
  6. 定期審計 `listener.log` 異常 `TNS-01169`、`TNS-01194` 記錄
  7. 備份 `listener.ora` 至版本控制系統

常見問題排查

現象原因解決
SAVE_CONFIG 失敗 TNS-01169未先 SET PASSWORD (9i/10gR1)先 `SET PASSWORD` 再 `SAVE_CONFIG`
密碼遺失無備份刪除 `PASSWORDS_` 行 → 重啟監聽 → 重新 `CHANGE_PASSWORD`
EM/Grid Control 無法監控監控代理無密碼配置代理 `snmp_rw.ora` 或暫時放行管理 IP
RAC 環境密碼不同步各節點獨立配置使用 `srvctl config listener` 統一管理或集群文件系統共享 listener.ora

總結

Listener 密碼是**最低成本、最高收益**的資料庫邊界防護。**「設定密碼 + 關閉 OS 回退 + 啟用 ADMIN_RESTRICTIONS」**三步走,可將未授權管理風險降至最低。建議納入資料庫上架驗收清單,並定期滲透測試驗證有效性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved