Oracle Listener 預設未設定密碼,攻擊者可透過 lsnrctl 遠程連線執行下列惡意操作:
STOP),導致拒絕服務$ $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
關鍵:SAVE_CONFIG會將密碼寫入listener.ora,否則重啟後失效。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db-server)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
# 密碼雜湊值由 SAVE_CONFIG 自動產生
PASSWORDS_LISTENER = 12A3F8C9E4B2D6F7
ADR_BASE_LISTENER = /u01/app/oracle
LOCAL_OS_AUTHENTICATION_LISTENER=ON(預設),限制本機 OS 認證用戶管理listener.ora 設定 ADMIN_RESTRICTIONS_LISTENER=ON,禁止遠程 STATUS、STOP 等指令TCPS 協定,防止密碼明文傳輸listener.log 中的異常連線嘗試# 未輸入密碼嘗試停止
$ lsnrctl stop
Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=db-server)(PORT=1521))
TNS-01169: The listener has not recognized the password
TNS-01189: The listener could not authenticate the user
# 輸入正確密碼
$ lsnrctl set password
Password: ********
$ lsnrctl stop
The command completed successfully
Listener 密碼設定是資料庫基礎安全設定的第一道防線。結合 ADMIN_RESTRICTIONS、網路隔離與加密傳輸,可大幅降低未授權管理操作風險。請立即檢查生產環境所有 Listener 是否已啟用密碼保護。