oracle配置訪問白名單教程
出於提高數據安全性等目地,我們可能想要對oracle的訪問進行限制,允許一些IP連接數據庫或拒絕一些IP訪問數據庫。
當然使用iptables也能達到限制的目地,但是從監聽端口變更限制扔可生效、只針對oracle自己不和其他端口的限制相混雜和不需要root賬號這幾方面來說,通過配置sqlnet.ora文件來進行訪問限制可能是一種更好的選擇。
1.配置sqlnet.ora文件
進入$TNS_ADMIN(一般對應的真實路徑形如/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin)查看是否存在sqlnet.ora文件及是否已配置tcp.validnode_checking、tcp.invited_nodes、tcp.excluded_nodes項。
如果文件存在且已有這幾項,則在此基礎上修改這幾項;如果文件存在但這幾項不存在,則在最後追加;如果文件不存在則直接新建。
oracle默認是沒有的,我們以沒有為例新建該文件,並寫入以下內容:
tcp.validnode_checking=yes tcp.invited_nodes=(192.168.220.128,127.0.0.1) tcp.excluded_nodes=(192.168.220.1)
tcp.validnode_checking--此項是啟用IP合法檢查,此項是必須配置的,如果不啟用其他兩項配了也沒用
tcp.invited_nodes--此項是允許連接數據庫的IP地址,多個地址用逗號(半角)隔開;如果啟用此項,一定要配上本地地址不然監聽無法啟動。
tcp.excluded_nodes--此項是不允許連接數據庫的IP地址,多個地址用逗號(半角)隔開;如果與tcp.invited_nodes有相同IP,則還是允許該IP訪問數據庫
tcp.invited_nodes和tcp.excluded_nodes其實可以只配置一項,當只配tcp.invited_nodes時就是白名單,在此項列表中的所有IP允許訪問數據庫,所有不在此項列表中的所有IP拒絕訪問數據庫;
當只配置tcp.excluded_nodes時,在此項列表中的所有IP拒絕訪問數據庫,所有不在此項列表中的所有IP允許訪問數據庫。
2.重新加載使配置生效
如果之前不存在sqlnet.ora則需要重啟監聽
lsnrctl stop
lsnrctl start
如果之前存在sqlnet.ora則只需要重新加載配置即可
lsnrctl reload
關於重啟和reload的區別,應該是監聽完全停上和不完全停止的區別;使用stop/start當前所有已連接的會話會強制斷開,reload不會斷開已有會話。
參考:
http://www.linuxidc.com/Linux/2014-10/108650.htm
http://blog.itpub.net/22664653/viewspace-707358/
oracle配置訪問白名單教程