暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle 中,如何限定特定IP 访问数据库?

原创 曹展羽 2019-07-25
556

问题描述

在Oracle 中,如何限定特定IP 访问数据库?

专家解答

总体来说有3 种办法可以限定特定IP 访问数据库,第一种是利用登录触发器,如下:

CREATE OR REPLACE TRIGGER CHK_IP_LHR
AFTER LOGON ON DATABASE
DECLARE
V_IPADDR VARCHAR2(30);
V_LOGONUSER VARCHAR2(60);
BEGIN
SELECT SYS_CONTEXT('USERENV', 'IP_ADDRESS'),
SYS_CONTEXT('USERENV', 'SESSION_USER')
INTO V_IPADDR, V_LOGONUSER
FROM DUAL;
IF V_IPADDR LIKE ('192.168.59.%') THEN
RAISE_APPLICATION_ERROR('-20001', 'User '||V_LOGONUSER||' is not allowed to connect from
'||V_IPADDR);
END IF;
END;
/

需要注意的问题:

1 触发的对象类型可以为DATABASE,也可以为“用户名.SCHEMA”,如:

AFTER LOGON ON DATABASE
AFTER LOGON ON SCOTT.SCHEMA

2 当触发的对象类型为DATABASE 的时候,登录用户不能拥有“ADMINISTER DATABASE TRIGGER”的系统权限;当触发的对象类型为“用户名.SCHEMA”的时候,登录用户不能拥有“ALTER ANY TIGGER”的系统权限。否则,这些用户还是会正常登录到数据库,只是将相应的报错信息写入到告警日志中。所以,拥有IMP_FULL_DATABASE 和DBA 角色的用户以及SYS 和EXFSYS 用户将不能通过这种方式限制登录。

3 隐含参数“_SYSTEM_TRIG_ENABLED”的默认值是TRUE,即允许DDL 和系统触发器。当设置该隐含参数为FALSE 的时候,将禁用DDL 和系统触发器。所以,当该值设置为FALSE 的时候将不能通过这种方式限制登录。


第二种是修改$ORACLE_HOME/network/admin/sqlnet.ora 文件,增加如下内容:

TCP.VALIDNODE_CHECKING=YES #开启IP 限制功能
TCP.INVITED_NODES=(127.0.0.1,IP1,IP2,……) #允许访问数据库
TCP.EXCLUDED_NODES=(IP1,IP2,……) #禁止访问数据库的IP 地址列表,多个IP 地址使用逗号分开

之后重新启动监听器即可,若禁止访问的IP 尝试登录的时候会报“ORA-12537: TNS:connection

closed”的错误,从而达到禁止某些IP 地址登录数据库的

需要注意的问题:

1 需要设置参数TCP.VALIDNODE_CHECKING 为YES 才能激活该特性。

2 一定要许可或不要禁止数据库服务器本机的IP 地址,否则通过lsnrctl 将不能启动或停止监听,因为该过程监听程序会通过本机的IP 访问监听器,而该IP 被禁止了,但是通过服务启动或关闭则不影响。

3 当参数TCP.INVITED_NODES 和TCP.EXCLUDED_NODES 设置的地址相同的时候以TCP.INVITED_NODES 的配置为主。

4 修改之后,一定要重起监听才能生效,而不需要重新启动数据库。

5 这种方式只是适合TCP/IP 协议。

6 这个配置适用于Oracle 9i 及其以上版本,在Oracle 9i 之前的版本使用文件protocol.ora。

7 在服务器上直接连接数据库不受影响。

8 这种限制方式是通过监听器来限制的。

9 这个限制只是针对IP 检测,对于用户名检测是不支持的。

第3 种是修改数据库服务器的IPTABLES(配置文件:/etc/sysconfig/iptables)来限制某些IP登录数据库服务器。配置命令如下所示:

iptables -A INPUT -s 192.168.59.1/32 -i eth0 -p tcp --dport 1521 -j DROP
service iptables save #保存防火墙配置

若以上配置,则192.168.59.1 这台主机将不能通过1521 端口连接到数据库服务器了,会报“ORA-12170: TNS:Connect timeout occurred”的错误。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论