通过SQLNET.ora文件限制Ip地址访问

为了数据库的安全,我们允许某些ip地址的主机来访问我们数据库,也要防止其他用户来连接数据库,为了数据库的安全,我们可以使用下列参数来控制用户的访问。

在SQLNET.ora文件中设置以下参数可以实现IP访问限制:

tcp.validnode_checking=yes  
tcp.invited_nodes=(ip1,ip2......)  
tcp.excluded_nodes=(ip1,ip2......) 

第一行的含义:开启IP限制功能;
第二行的含义:允许访问数据库的IP地址列表,多个IP地址使用逗号分开,此例中我们写入数据库服务器的IP地址,如果不在此列表中的ip地址是不能访问这个数据库的;
第三行的含义:禁止访问数据库的IP地址列表,多个IP地址使用逗号分开,此处我们写入欲限制的IP地址10.10.128.200。


注意事项:

1).上文中添加的第一项必须要写,任何平台都可以,但是只适用于TCP/IP协议。

2).第二行和第三行可以任意写一行,如果tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主.

3).一定要许可或不要禁止服务器本机的IP地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的IP访问监听器,而该IP被禁止了,但是通过服务启动或关闭则不影响,如果是rac最好将物理ip和虚拟ip都需要准许访问。


此实验我是在一台rac上单其中一个节点测试的:

[root@rac1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       loopback localhost
10.10.6.80     rac1
10.10.6.81     rac1-vip 
1.1.1.100      rac1-priv
10.10.6.82     rac2
10.10.6.83     rac2-vip 
1.1.1.101      rac2-priv
10.10.6.86     racscan


配置sqlnet.ora:

grid@rac1 admin]$ cat sqlnet.ora 
# sqlnet.ora.rac1 Network Configuration File: /u01/app/11.2/grid/network/admin/sqlnet.ora.rac1
# Generated by Oracle configuration tools.


NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


ADR_BASE = /u01/app/grid
tcp.validnode_checking=yes
tcp.invited_nodes=(10.10.6.80,10.10.6.81,10.10.6.82,10.10.6.83,1.1.1.100,1.1.1.101,10.10.8.54,127.0.0.1,10.10.6.86 )
tcp.excluded_nodes=(10.10.128.200)


我们再次配置一台主机10.10.8.54 允许他来访问我们的数据库,其他主机我们都不允许访问,在rac上要记得让两个节点的ip地址都包含在invited_nodes ,否则的话监听启动不了,在此,我们配置excluded_nodes ,这个地址可以配置也可以不用配置,因为除了允许,其他地址都是不允许的。


配置完了rac的sqlnet配置文件,我们需要重启动监听

[grid@rac1 admin]$ srvctl stop listener -n rac1
[grid@rac1 admin]$ srvctl start listener -n rac1


[grid@rac1 admin]$ lsnrctl status


LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-JUN-2014 16:51:02


Copyright (c) 1991, 2009, Oracle.  All rights reserved.


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                12-JUN-2014 16:50:43
Uptime                    0 days 0 hr. 0 min. 18 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.6.80)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.6.81)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "testdb" has 1 instance(s).
  Instance "testdb1", status READY, has 1 handler(s) for this service...
Service "testdbXDB" has 1 instance(s).
  Instance "testdb1", status READY, has 1 handler(s) for this service...
The command completed successfully


测试配置结果:

SQL> conn boswll/boswll@10.10.6.81/testdb
已连接。
SQL> conn boswll/boswll@10.10.6.82/testdb
已连接。
SQL>

下面测试在10.10.128.200地址测试,被拒绝了

SQL>  conn boswll/boswll@10.10.6.81/testdb
ERROR:
ORA-12547: TNS: 丢失连接





.通过触发器实现:

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 ;
/

但是这个只能是针对某一用户做限制的。




参考:http://www.eygle.com/archives/2008/01/sqlnetora_ip_limit.html

http://www.linuxidc.com/Linux/2012-09/69541.htm



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值