业务需求:限制连接Oracle的IP,检查非法连接,降低数据库安全风险。
业务实施:修改oracle安装目录下的配置文件sqlnet.ora来限制能够连接数据库的IP。
下面以RHL6.4上安装的Oracle 11g R2为例,修改sqlnet.ora配置文件来限制访问IP。
RHL6.4 IP:192.168.40.129;访问PC IP:192.168.40.1。
1.Linux安装Oracle后,发现/XXX/network/admin 没有sqlnet.ora这个配置文件,可以在
/XXX/network/admin/samples找到同名的配置文件说明,并复制到/XXX/network/admin。
2.在/XXX/network/admin下修改配置文件sqlnet.ora。
visqlnet.ora
添加
#需要设置参数为YES才能激活
tcp.validnode_checking=yes
#允许访问IP,建议设置允许访问IP,因为IP地址被随意修改后,excluded_nodes设置#就不起作用了。
tcp.invited_nodes=(192.168.40.1)
#不允许访问IP,当参数TCP.INVITED_NODES和TCP.EXCLUDED_NODES设置的地址相#同的时候将覆盖TCP.EXCLUDED_NODES设置。
tcp.excluded_nodes=(192.168.40.2)
3.修改完成后重启监听器生效配置。
这种限制方式是通过监听器来限制的,在服务器上直接连接数据库不受影响。
[oracle@localhost admin]$ lsnrctl reload
验证:
①不允许192.168.40.1
在192.168.40.1登录PL./SQL报错:
②当允许和不允许同时存在IP 192.168.40.1时,IP 192.168.40.1能登录PL/SQL
另附通过建触发器来限制IP用户名及IP段方法:
①限制单用户从单IP登录,下面限制scott用户从客户端的登录
create or replace triggerdisablelogin
after logon on scott.schema
declare
ipaddr VARCHAR2(30);
begin
selectsys_context('userenv', 'ip_address')
intoipaddr
from dual;
ifipaddr = '192.168.40.1' then
raise_application_error('-20001',
'You can notlogin,Please contact administrator'); end if;
enddisablelogin;
②限制IP段登录
create or replace trigger chk_ip_range
after logon on scott.schema
declare
ipaddr VARCHAR2(30);
begin
selectsys_context('userenv', 'ip_address')
intoipaddr
from dual;
ifipaddr like ('192.168.40.%') then
raise_application_error('-20001',
'You can notlogin,Please contact administrator'); end if;
endchk_ip_range;。