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

Oracle 監聽器安全加固 11 條鐵律:密碼、日誌、ADMIN_RESTRICTIONS、補丁、防火牆、節點驗證、審計

     編輯:Oracle 資料庫基礎

Listener 是 Oracle 對外服務的大門,亦是攻擊面最集中的組件。RHEL4/Oracle 10g 環境下,本文提出 11 條從配置、網路、OS、審計全維度的加固鐵律,構建纵深防禦體系。

1. 設置監聽器密碼 (強制)

LSNRCTL> SET CURRENT_LISTENER LISTENER
LSNRCTL> CHANGE_PASSWORD
Old password: <Enter 若無>
New password: ********
Reenter: ********
LSNRCTL> SET PASSWORD ********
LSNRCTL> SAVE_CONFIG

listener.ora 將存儲加密雜湊 (PASSWORDS_LISTENER = ),拒絕未授權 LSNRCTL 控制命令。

2. 啟用監聽器日誌

LSNRCTL> SET LOG_DIRECTORY /network/admin
LSNRCTL> SET LOG_FILE listener.log
LSNRCTL> SET LOG_STATUS ON
LSNRCTL> SAVE_CONFIG

記錄所有連線嘗試、命令執行、錯誤 (如 TNS-01169 密碼錯誤、TNS-01189/90 非法命令),支援事後審計與 SIEM 聯動。

3. 啟用 ADMIN_RESTRICTIONS

在 listener.ora 手工添加:

ADMIN_RESTRICTIONS_LISTENER = ON

運行時禁止所有 SET 動態修改 (本地/遠程皆禁),配置變更僅能編輯 listener.ora 後 RELOAD/RESTART,杜絕運行時被惡意篡改。

4. 應用最新 Critical Patch Update (CPU)

  • 訂閱 Oracle Security Alert,評估後優先部署 CPU (累積補丁)。
  • 生產環境必先在測試環境驗證業務無回歸。
  • 僅正規授權可下載官方補丁,第三方來源完整性不可信。

5. 防火牆限制 SQL*Net 存取

  • 原則:僅允許應用伺服器 (Web/App Tier) 經防火牆訪問 DB Listener 端口。
  • DMZ 應用伺服器 → DB 專用規則 (來源 IP、目的 IP、端口 1521/自定義)。
  • 嚴禁 Internet 直通資料庫端口。

6. 保護 $TNS_ADMIN 目錄權限

$ORACLE_HOME/network/admin 下關鍵檔案權限:

  • listener.ora、sqlnet.ora、protocol.ora:僅 Oracle 安裝擁有者 (如 oracle) 可讀寫 (Linux 600/640)。
  • tnsnames.ora:客戶端需讀取,Linux 644、Windows「讀取/執行」。

7. 保護 TNSLSNR 與 LSNRCTL 執行檔

$ORACLE_HOME/bin/tnslsnr、lsnrctl:

  • Linux:chmod 750 (組執行) 或 700 (僅擁有者)。
  • 防止惡意替換/注入代碼導致啟動失敗或執行後門。

8. 移除不必要的服務 (SID_LIST)

  • 預設安裝常含 EXTPROC / PLSExtProc (外部程序),歷史漏洞多,**若不用請刪除**。
  • 多實例複製 listener.ora 時,檢查殘留無效 SID_DESC,保持最小服務集。

9. 修改預設端口 1521

  • 編輯 listener.ora PORT = 或用 NETCA。
  • 避開 1521-1550、1600-1699 (Oracle 保留範圍)。
  • 客戶端 tnsnames.ora、LOCAL_LISTENER 參數同步修改,支援自動註冊。
  • 非銀彈,但可阻擋自動掃描腳本、增加偵察成本。

10. 節點驗證 (Valid Node Checking)

在 sqlnet.ora (9i/10g+) 或 protocol.ora (8/8i) 添加:

TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES = (192.168.1.10, appserver01, 10.0.0.0/24)  -- 僅允許 (白名單)
-- 或
TCP.EXCLUDED_NODES = (192.168.1.100, badhost)  -- 僅拒絕 (黑名單)
-- 兩擇一,不可並用,不支援萬用字元

重啟 Listener 生效。 適合客戶端固定、數量可控場景。大量動態客戶端改用 Oracle Connection Manager (CMAN) 代理驗證。

11. 持續監控日誌與告警

  • 定期 (每小時/每日) 掃描 listener.log 關鍵錯誤:TNS-01169 (密碼錯)、TNS-01189 (未授權命令)、TNS-01190 (權限不足)、TNS-12508 (連線被拒)。
  • Shell/Python 腳本提取異常 → 郵件/企業微信/Slack 告警 DBA。
  • 納入 SIEM (Splunk/ELK) 關聯分析。

加固清單速查表

#項目驗證命令風險等級
1密碼LSNRCTL> STATUS (顯示 Password: ON)Critical
2日誌ls $ORACLE_HOME/network/admin/listener.logHigh
3ADMIN_RESTRICTIONSgrep ADMIN_RESTRICTIONS listener.oraHigh
4CPU 補丁opatch lsinventory | grep CPUCritical
5防火牆規則iptables -L -n | grep 1521Critical
6TNS_ADMIN 權限ls -l $ORACLE_HOME/network/admin/High
7執行檔權限ls -l $ORACLE_HOME/bin/tnslsnrMedium
8移除 EXTPROCgrep -i extproc listener.oraMedium
9非預設端口grep PORT listener.oraLow
10節點驗證grep VALIDNODE sqlnet.oraHigh
11日誌告警crontab -l | grep listener_monitorHigh

結語

Listener 安全非單一設定,而是認證、授權、審計、網路、補丁、監控六大支柱的系統工程。逐條落地 11 條鐵律,再配合定期滲透測試、紅藍對抗、應急演練,才能將 Oracle 服務大門鎖緊,守住企業核心資產最後一道防線。

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