遠端 Listener 未設密碼,攻擊者可任意:
LSNRCTL STOP)預設安裝 不設密碼,必須主動配置。
$ $ORACLE_HOME/bin/lsnrctl
LSNRCTL> CHANGE_PASSWORD
Old password: <直接 Enter,若原有密碼則輸入>
New password: <輸入新強密碼>
Reenter new password: <再次確認>
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
Password changed for LISTENER
The command completed successfully
LSNRCTL> SET PASSWORD
Password: <輸入新密碼>
LSNRCTL> SAVE_CONFIG
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
Saved LISTENER configuration parameters.
Listener Parameter File /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
Old Parameter File /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora.bak
The command completed successfully
PASSWORDS_LISTENER = 8F3A... (加密雜湊值)
ADMIN_RESTRICTIONS_LISTENER = ON -- 建議啟用,限制遠端管理指令
LSNRCTL> STATUS
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
TNS-01169: The listener has not recognized the password
LSNRCTL> SET PASSWORD
Password: <輸入密碼>
LSNRCTL> STATUS
... 正常顯示狀態 ...
ADMIN_RESTRICTIONS_LISTENER=ON,禁止遠端 STOP、SET、SAVE_CONFIG 等管理指令,僅允許本機 OS 認證用戶執行。PROTOCOL=TCPS,加密傳輸、雙向認證,防竊聽/中間人。DIAG_ADR_ENABLED=ON,LOG_DIRECTORY、LOG_FILE 定期審計異常連線嘗試。| 現象 | 原因 | 解決 |
|---|---|---|
| TNS-01169: listener has not recognized the password | 未執行 SET PASSWORD 或密碼錯誤 | LSNRCTL> SET PASSWORD → 輸入正確密碼 |
| SAVE_CONFIG 失敗 | listener.ora 唯讀 / 權限不足 | 確保 $ORACLE_HOME/network/admin 可寫、擁有者 oracle:oinstall |
| 應用連線失敗 | 密碼設定不影響 Client 連線,僅影響 LSNRCTL 管理 | 檢查 tnsnames.ora、防火牆、Listener.ora SID_LIST |
#!/bin/bash
# set_listener_password.sh
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
NEW_PASS="StrongPass#2024"
$ORACLE_HOME/bin/lsnrctl <
適合自動化部署 (Ansible/Terraform) 批量配置。