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

Oracle Listener (tnslsnr) 設定密碼防護:防止未授權關閉與竄改

     編輯:Oracle 資料庫基礎

Oracle Listener (tnslsnr) 預設無密碼保護,任何人只要有網路存取權,即可透過 lsnrctl 關閉 Listener、修改參數、甚至竊取資料庫版本、服務名稱等敏感資訊。本文提供標準設定密碼流程,含互動式指令與 save_config 持久化步驟。

風險說明

  • 駭客可執行 lsnrctl stop 癱瘓資料庫服務。
  • 可修改 LOG_DIRECTORY、TRACE_LEVEL 等參數,導致磁碟寫滿或效能下降。
  • 可查詢 services、status 取得 SID、版本、OS 資訊,作為後續攻擊情報。
  • 結合其他漏洞(如 TNS Poison),甚至可能寫入檔案、提權。

設定密碼標準流程

$ORACLE_HOME/bin/lsnrctl
LSNRCTL> change_password
Old password: <直接 Enter,若原無密碼>
New password: <輸入新密碼>
Reenter new password: <再次輸入>

Connecting to (ADDRESS=(PROTOCOL=ipc)(KEY=XXX))
Password changed for LISTENER
The command completed successfully

LSNRCTL> set password
Password: <輸入新密碼>

LSNRCTL> save_config
The command completed successfully
[NSFOCUS AURORA]

關鍵步驟解析

  1. change_password:互動式修改,舊密碼若無則直接 Enter。
  2. set password:讓目前 lsnrctl session 帶入密碼,後續指令才能生效。
  3. save_config:關鍵,將密碼寫入 listener.ora(加密儲存),重啟 Listener 後依然有效。若略過此步,重啟後密碼失效。

驗證密碼生效

lsnrctl status
-- 未輸入密碼會報錯:TNS-01169: The listener has not recognized the password

lsnrctl set password
Password: <輸入密碼>
lsnrctl status
-- 正常顯示服務狀態

進階防護建議

  • 限制網路存取:防火牆只開放應用伺服器 IP 連 1521,封鎖其他來源。
  • 啟用 Class of Secure Transport (COST):listener.ora 加入 SECURE_REGISTER_LISTENER = (IPC, TCPS),強制本地 IPC 或加密 TCPS 註冊。
  • 定期輪換密碼:納入密碼管理政策,每 90 天變更。
  • 稽核登入:啟用 ADMIN_RESTRICTIONS_LISTENER = ON,限制遠端管理指令。

常見問題

忘記密碼怎麼辦?
停止 Listener,備份 listener.ora,刪除 PASSWORDS_LISTENER 那一行,重啟 Listener 即恢復無密碼狀態,再重新設定。
Data Guard / RAC 環境注意?
所有節點的 Listener 必須設定相同密碼,且 save_config 需在各節點執行。

花 3 分鐘設定 Listener 密碼,即可封鎖一大類未授權管理操作,是資料庫基礎防護的必做項目。

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