美文网首页oracle的基本sql介绍DBA修炼之道DBA深海
【方法】如何限定IP访问Oracle数据库

【方法】如何限定IP访问Oracle数据库

作者: 小麦苗DB宝 | 来源:发表于2017-03-22 12:07 被阅读78次

    在Oracle中,有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;

    /

    需要注意的问题:

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

    AFTER LOGON ON DATABASE

    AFTER LOGON ON SCOTT.SCHEMA

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

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

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

    TCP.VALIDNODE_CHECKING=YES#开启IP限制功能

    TCP.INVITED_NODES=(127.0.0.1,IP1,IP2,……)#允许访问数据库的IP地址列表,多个IP地址使用逗号分开

    TCP.EXCLUDED_NODES=(IP1,IP2,……)#禁止访问数据库的IP地址列表,多个IP地址使用逗号分开

    之后重新启动监听器即可。这样客户端在登录的时候会报“ORA-12537: TNS:connection closed”的错误。

    需要注意的问题:

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

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

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

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

    ⑤这个方式只是适合TCP/IP协议。

    ⑥这个配置适用于Oracle9i以上版本。在Oracle9i之前的版本使用文件protocol.ora。

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

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

    ⑨这个限制只是针对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”的错误。

    全文连接参考:

    http://blog.itpub.net/26736162/viewspace-2135609/

    相关文章

      网友评论

        本文标题:【方法】如何限定IP访问Oracle数据库

        本文链接:https://www.haomeiwen.com/subject/oahonttx.html