標籤:必須 ip地址 限制 相同 完全 linux app code logs
出於提高資料安全性等目地,我們可能想要對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=yestcp.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 stoplsnrctl 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配置訪問白名單教程