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

Oracle 監聽器密碼設定與 ADMIN_RESTRICTIONS 強化安全實戰

     編輯:Oracle 資料庫相關知識

預設情況下 Oracle 監聽器無密碼保護,任何能連線到監聽器埠(預設 1521)的用戶均可遠端執行 lsnrctl stop 關閉監聽器,造成服務中斷。本文示範設定密碼與啟用 ADMIN_RESTRICTIONS 兩大防護措施。

風險實測:無密碼時可遠端停止監聽器

C:\> lsnrctl stop LISTENER
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)))
The command completed successfully

監聽器日誌僅記錄 COMMAND=stop,無來源 IP,事後難以追蹤。

設定監聽器密碼(互動模式)

[oracle@host ~]$ lsnrctl
LSNRCTL> set current_listener LISTENER
LSNRCTL> change_password
Old password:          # 首次直接 Enter
New password: ********
Reenter new password: ********
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)))
Password changed for LISTENER
The command completed successfully

LSNRCTL> set password
Password: ********
The command completed successfully

LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)))
Saved LISTENER configuration parameters.
Listener Parameter File /opt/oracle/product/19c/network/admin/listener.ora
Old Parameter File /opt/oracle/product/19c/network/admin/listener.bak
The command completed successfully

驗證:設定密碼後遠端操作需輸入密碼

C:\> lsnrctl stop LISTENER
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)))
TNS-01169: The listener has not recognized the password

# 正確操作:先輸入密碼
LSNRCTL> set password
Password: ********
LSNRCTL> stop
The command completed successfully

注意:設定密碼後,伺服器端本機與遠端客戶端 皆需輸入密碼才能管理監聽器。

啟用 ADMIN_RESTRICTIONS 防止執行期修改

編輯 $ORACLE_HOME/network/admin/listener.ora,在 LISTENER 區段加入:

ADMIN_RESTRICTIONS_LISTENER = ON

效果:

  • 所有 lsnrctl 執行期修改指令(set、change_password、start/stop 等)被拒絕。
  • 任何配置變更必須手動編輯 listener.ora 並 lsnrctl reload 或重啟生效。
  • 大幅降低誤操作與惡意變更風險。

完整 listener.ora 範例

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host.example.com)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19c)
      (SID_NAME = orcl)
    )
  )

ADMIN_RESTRICTIONS_LISTENER = ON

最佳實踐清單

  • [ ] 設定強式監聽器密碼(長度 ≥ 12、含大小寫數字符號)。
  • [ ] 啟用 ADMIN_RESTRICTIONS_LISTENER = ON。
  • [ ] 限制網路層存取:防火牆僅開放應用伺服器 IP 至 1521 埠。
  • [ ] 定期審閱 listener.log 異常連線嘗試。
  • [ ] 將密碼變更納入變更管理流程,避免單點失效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved