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

Oracle 9i 限制特定 IP 訪問:sqlnet.ora 白名單/黑名單實戰配置

     編輯:Oracle 資料庫基礎

前言:網路層存取控制最簡單有效

Oracle 9i 真正生效的網路存取控制文件是 $ORACLE_HOME/network/admin/sqlnet.ora(非舊版 protocol.ora)。透過 TCP/IP 協議的「有效節點檢查」功能,可在監聽器層面直接攔截非授權 IP,零代碼改動、效能影響極小。

配置步驟

1. 編輯 sqlnet.ora

# 啟用節點檢查
TCP.VALIDNODE_CHECKING = YES

# 白名單:僅允許列表內 IP 連接(優先級高於黑名單)
TCP.INVITED_NODES = (192.168.1.10, 192.168.1.20, 10.0.0.0/24)

# 黑名單:明確拒絕列表內 IP(白名單存在時忽略)
TCP.EXCLUDED_NODES = (192.168.1.100, 172.16.0.0/16)
  • 支援單一 IP、CIDR 網段(10.0.0.0/24)、主機名(解析後生效)。
  • 白名單與黑名單同時存在時,以白名單為準。

2. 重新載入監聽器(無需重啟資料庫)

lsnrctl reload

或

lsnrctl stop
lsnrctl start

四大必避坑指南

坑點後果正確做法
未將資料庫服務器自身 IP 加入白名單lsnrctl start/stop/status 全部失敗(本機連接被攔截)白名單必含 127.0.0.1、本機真實 IP、VIP、SCAN IP
修改後未 reload 監聽器配置不生效執行 lsnrctl reload 即時生效
混用舊版 protocol.ora9i/10g/11g/12c/19c 均不讀取 protocol.ora只改 sqlnet.ora
非 TCP/IP 協議(IPC, SDP, InfiniBand)本機制僅對 TCP/IP 生效確認 listener.ora 使用 PROTOCOL=TCP

驗證測試

# 允許的 IP
tnsping ORCL
sqlplus scott/tiger@ORCL

# 被拒絕的 IP
tnsping ORCL
# TNS-12537: TNS:connection closed
# 或 ORA-12537: Network Session: End of file

進階:結合防火牆雙重防護

sqlnet.ora 屬於「應用層攔截」,建議同時在 OS 防火牆(iptables/firewalld/Windows 防火牆)部署「網路層攔截」:

  • 僅開放 1521/TCP 給應用服務器 IP 段。
  • 資料庫服務器禁止對外暴露 1521。
  • 雙層防護:防火牆擋大流量掃描,sqlnet.ora 精細控制業務 IP。

版本演進提示

  • 11g+:支援 TCP.INVITED_NODES 使用主機名、通配符、CIDR。
  • 12c/18c/19c:引入 SECURE_CONTROL_ 參數加強安全,配合 CLASS_OF_SECURE_CONNECTION 實現更細粒度控制。
  • RAC 環境:每個節點的 sqlnet.ora 需同步配置,SCAN Listener 同樣受控。

總結

修改 sqlnet.ora 啟用 TCP.VALIDNODE_CHECKING,配合 INVITED_NODES/EXCLUDED_NODES,是 Oracle 資料庫「最快、最省、最透明」的 IP 存取控制手段。牢記白名單含本機 IP、改完必 reload、僅限 TCP/IP三鐵律,即可安心上線。

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