oracle 11g限制IP访问

时间:2020-12-14 20:23:42

        因公司数据库密码泄露,其他部门不想关的人员也有了可以访问数据库的账户密码,虽然修改了密码,但为防止密码再次泄露保证数据库的安全,领导决定要对不想关人员的IP进行限定。

平台为linux redhat5.6,数据库版本为11203

限定特定IP访问数据库可编辑sqlnet.ora文件


sqlnet.ora文件路径在$OREACLE_HOME/network/admin/samples下有模板,可以copy到$OREACLE_HOME/network/admin路径下修改增加如下内容:
tcp.validnode_checking=yes
#允许访问的ip
tcp.invited_nodes=(ip1,ip2,……)
#不允许访问的ip
tcp.excluded_nodes=(ip1,ip2,……)
tcp.invited_nodes和tcp.excluded_nodes只用一个,要么设置允许的IP,要么设置不允许的IP,与tcp.validnode_checking配合使用。

修改sqlnet.ora后,重新启动listener服务,修改就可以生效了。


注:经笔者先实验后在生产系统上操作,11gR2 用lsnrctl reload命令重载监听不能生效,需用lsnrctl stop停掉监听,再用lsnrctl start启动监听才行(为了让启动的监听立即生效执行alter system register;),不知道用lsnrctl reload命令重载监听是不是针对9i和10g的,这个笔者没有实验过;


如果不允许的IP客户端连接过来,会出现以下错误:

ERROR: ORA-12537: TNS: 连接已关闭

或者是

oracle 11g限制IP访问oracle 11g限制IP访问

oracle 11g限制IP访问

这就是在oracle服务端设置了IP限制后的效果。



在mos上查到sqlnet.ora文件的功能:



1. Specify the client domain to append to unqualified names


2. Prioritize naming methods


3. Enable logging and tracing features


4. Route connections through specific processes


5. Configure parameters for external naming


6. Configure Oracle Advanced Security


7. Use protocol-specific parameters to restrict access to the database


这里使用的就是sqlnet.ora文件的第七项功能限制访问数据库的连接。


适用版本:oracle 9i以上版本
在9i提供了几个参数:
TCP.EXCLUDED_NODES
设置禁止访问数据库的IP地址列表。
TCP.INVITED_NODES
设置允许访问数据库的IP地址列表,当这个参数和TCP.EXCLUDED_NODES设置的地址相同的时候将覆盖TCP.EXCLUDED_NODES设置。
TCP.VALIDNODE_CHECKING
检测上述参数的设置。