您好,欢迎访问一九零五行业门户网

在Oracle数据库上设置限制ip地址访问以及需要注意的事项

近期应客户要求,需要对访问生产环境的oracle数据库的ip做一些限制,即:只有通过审核的ip才能访问数据库,其他ip一律禁止访问数据库。 在oracle中可以通过sqlnet.ora文件的设置或者通过触发器可以实现对特定ip的限制访问。 1、修改sqlnet.ora文件: 步骤: a
近期应客户要求,需要对访问生产环境的oracle数据库的ip做一些限制,即:只有通过审核的ip才能访问数据库,其他ip一律禁止访问数据库。
在oracle中可以通过sqlnet.ora文件的设置或者通过触发器可以实现对特定ip的限制访问。
1、修改sqlnet.ora文件:
步骤:
a)测试在未设置前某一客户端的登录数据库情况:
c:\documents and settings\thinkpad>sqlplusapp/app@uat17
sql*plus: release 9.2.0.1.0 - production on thu aug 30 11:02:21 2012
copyright (c) 1982, 2002, oracle corporation.  all rights reserved.
connected to:
oracle database 10g enterprise edition release 10.2.0.4.0 - 64bit production
with the partitioning, olap, data mining and real application testing options
sql> select name from v$database;
name
---------
prod
sql>
--说明连接成功
b)通过对文件:$oracle_home/network/admin/sqlnet.ora文件添加:
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.1.61)
tcp.excluded_nodes=(192.168.1.90)
说明:
第一行的含义:开启ip限制功能;
第二行的含义:允许访问数据库的ip地址列表,多个ip地址使用逗号分开,此例中我们写入数据库服务器的ip地址;
第三行的含义:禁止访问数据库的ip地址列表,多个ip地址使用逗号分开,此处我们写入欲限制的ip地址192.168.1.90。
c)重新启服务器端listener,或者lsnrctl reload方式使刚才的修改在监听中生效。
[oracle@appdb-prod admin]$ lsnrctl reload
lsnrctl for linux: version 10.2.0.4.0 - production on 30-aug-2012 10:17:43
copyright (c) 1991, 2007, oracle.  all rights reserved.
connecting to (address=(protocol=tcp)(host=)(port=1521))
the command completed successfully
d)验证客户端(192.168.1.90)登录情况:
c:\documents and settings\thinkpad>sqlplusapp/app@uat17
sql*plus: release 9.2.0.1.0 - production on thu aug 30 11:12:46 2012
copyright (c) 1982, 2002, oracle corporation.  all rights reserved.
error:
ora-12537: tns:connection closed
enter user-name:
报:ora-12537: tns:connection closed错误,说明限制成功。
注意事项:
1).上文中添加的第一项必须要写,任何平台都可以,但是只适用于tcp/ip协议。
2).第二行和第三行可以任意写一行,如果tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主.
3).一定要许可或不要禁止服务器本机的ip地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的ip访问监听器,而该ip被禁止了,但是通过服务启动或关闭则不影响,如果是rac最好将物理ip和虚拟ip都需要准许访问。
2.通过触发器实现:
conn /as sysdba
create or replace trigger  check_ip
after logon on app.schema
declare
ipaddr varchar2(30);
begin
select sys_context('userenv', 'ip_address') into ipaddr from dual;
if ipaddr like ('192.168.1.90') then
raise_application_error('-20001', 'you can not logon by app');
end if;
end ;
/
但是这个只能是针对某一用户做限制的。
其它类似信息

推荐信息