設置oracle資料庫IP訪問限制 (IP白名單黑名單)

2013-09-14 15:16

可以通過修改sqlnet.ora檔來限制某些IP位址的訪問,修改完成後,可能需重啟監聽生效。(可以lsnrctl reload)
如果$ORACLE_HOME/network/admin/目錄下沒有sqlnet.ora檔,可以從samples目錄下拷貝個sqlnet.ora或者直接vi


###########二選一##############
#允許訪問的IP
TCP.INVITED_NODES=(192.168.1.103,ip2,ip3,..,..本地IP..)若使用白名單,必須本地IP,否則監聽會起不來
#不允許訪問的IP
TCP.EXCLUDED_NODES=(192.168.1.102)
#檢測上述參數的設置
TCP.VALIDNODE_CHECKING=yes (這個參數是必須的)

#允許訪問的ip tcp.invited_nodes =(ip1,ip2,……) #不允許訪問的ip tcp.excluded_nodes=(ip1,ip2,……)
TCP.INVITED_NODES:設置允許訪問資料庫的IP地址清單,當這個參數和TCP.EXCLUDED_NODES設置的位址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。

當不允許訪問的用戶端連入時,會出現下列錯誤
sys/oracle@approd.testas sysdba
ERROR:
ORA-12537: TNS:connection closed


Warning: You are no longer connected to ORACLE.

 


需要注意的問題:
1、 需要設置參數為YES,這樣才能啟動。
2、 建議設置允許訪問的IP,因為IP位址有可能被隨意修改,就不能起到自己的目的。
3、 TCP當參數TCP.INVITED_NODES和TCP.EXCLUDED_NODES設置的位址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。
4、 需要重啟監聽器才能生效。
5、 這個方式只是適合TCP協定。
6、 這個配置適用於9i以上版本。在9i之前的版本使用檔protocol.ora。
7、 在伺服器上直接連接資料庫不受影響。
8、 這種限制方式事通過監聽器來限制的。
 9、 這個限制只是針對IP檢測,對於用戶名檢測事不支持的。
10、使用觸發器(通過監聽器的限制,通常屬於羽量級的,比在資料庫內部通過觸發器進行限制效率要高)