ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 7587|回复: 14

[笔记] 【方法】如何限定IP访问Oracle数据库

[复制链接]
认证徽章
论坛徽章:
12
青年奥林匹克运动会-高尔夫
日期:2014-09-10 14:54:51火眼金睛
日期:2017-09-01 17:00:07火眼金睛
日期:2017-02-28 22:00:00火眼金睛
日期:2017-02-06 01:02:33人气徽章
日期:2016-11-09 15:56:29目光如炬
日期:2016-10-30 22:00:00罗罗诺亚·索隆
日期:2016-10-17 12:26:14目光如炬
日期:2016-10-16 22:00:00火眼金睛
日期:2016-11-30 22:00:00目光如炬
日期:2017-01-22 22:00:00
发表于 2017-3-18 21:22 | 显示全部楼层 |阅读模式
在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协议。
⑥ 这个配置适用于Oracle 9i以上版本。在Oracle 9i之前的版本使用文件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”的错误。

非常感谢各位朋友支持小麦苗。
论坛徽章:
22
生肖徽章2007版:猴
日期:2016-05-19 15:26:34生肖徽章2007版:猪
日期:2016-05-19 15:26:34生肖徽章2007版:龙
日期:2016-05-19 15:26:34生肖徽章2007版:兔
日期:2016-05-19 15:26:34ITPUB9周年纪念徽章
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:板球
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:举重
日期:2016-05-19 15:26:342014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02优秀写手
日期:2014-04-09 06:00:22
发表于 2017-3-18 21:40 来自手机 | 显示全部楼层
对dba权限的用户是没办法,不过可以用循环sleep阻止他

使用道具 举报

回复
认证徽章
论坛徽章:
12
青年奥林匹克运动会-高尔夫
日期:2014-09-10 14:54:51火眼金睛
日期:2017-09-01 17:00:07火眼金睛
日期:2017-02-28 22:00:00火眼金睛
日期:2017-02-06 01:02:33人气徽章
日期:2016-11-09 15:56:29目光如炬
日期:2016-10-30 22:00:00罗罗诺亚·索隆
日期:2016-10-17 12:26:14目光如炬
日期:2016-10-16 22:00:00火眼金睛
日期:2016-11-30 22:00:00目光如炬
日期:2017-01-22 22:00:00
发表于 2017-3-18 22:23 | 显示全部楼层
jiaxu2000 发表于 2017-3-18 21:40
对dba权限的用户是没办法,不过可以用循环sleep阻止他

可以测试的试试,我当时想着是否可以直接杀掉相应的会话,待会测测

使用道具 举报

回复
论坛徽章:
22
生肖徽章2007版:猴
日期:2016-05-19 15:26:34生肖徽章2007版:猪
日期:2016-05-19 15:26:34生肖徽章2007版:龙
日期:2016-05-19 15:26:34生肖徽章2007版:兔
日期:2016-05-19 15:26:34ITPUB9周年纪念徽章
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:板球
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:举重
日期:2016-05-19 15:26:342014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02优秀写手
日期:2014-04-09 06:00:22
发表于 2017-3-18 22:26 来自手机 | 显示全部楼层
kill,我试过没成功,你再试试吧

使用道具 举报

回复
论坛徽章:
2
灰彻蛋
日期:2012-02-03 17:26:27弗兰奇
日期:2016-11-18 15:15:18
发表于 2017-3-20 11:07 | 显示全部楼层
我觉得限定IP访问 应该作在网络层把

使用道具 举报

回复
认证徽章
论坛徽章:
1
ITPUB15周年纪念
日期:2017-03-16 09:14:40
发表于 2017-3-20 11:29 | 显示全部楼层
jiaxu2000 发表于 2017-3-18 21:40
对dba权限的用户是没办法,不过可以用循环sleep阻止他

对sys用户都是有用的,限制IP的话

使用道具 举报

回复
论坛徽章:
8
2012新春纪念徽章
日期:2012-01-04 11:56:19ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51现代
日期:2013-11-28 11:01:14马上加薪
日期:2014-03-31 10:53:18马上有钱
日期:2014-03-31 15:05:51优秀写手
日期:2014-04-26 05:59:55暖羊羊
日期:2015-03-04 14:53:002015年新春福章
日期:2015-03-06 11:58:18
发表于 2017-3-24 12:29 | 显示全部楼层
限制是在创建连接里, 和数据库内角色有什么关系? 白名单那是listener 层过滤, 还有AVDF

使用道具 举报

回复
论坛徽章:
0
发表于 2017-3-24 14:36 | 显示全部楼层

使用道具 举报

回复
论坛徽章:
73
2010新春纪念徽章
日期:2010-03-01 11:06:132011新春纪念徽章
日期:2011-02-18 11:43:332012新春纪念徽章
日期:2012-01-04 11:55:422013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有车
日期:2015-01-19 09:45:33最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-11-27 10:16:10问答徽章
日期:2013-10-23 15:13:22林肯
日期:2013-11-02 08:34:46
发表于 2017-3-24 14:37 | 显示全部楼层
不错,收藏。

使用道具 举报

回复
论坛徽章:
22
生肖徽章2007版:猴
日期:2016-05-19 15:26:34生肖徽章2007版:猪
日期:2016-05-19 15:26:34生肖徽章2007版:龙
日期:2016-05-19 15:26:34生肖徽章2007版:兔
日期:2016-05-19 15:26:34ITPUB9周年纪念徽章
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:板球
日期:2016-05-19 15:26:342010广州亚运会纪念徽章:举重
日期:2016-05-19 15:26:342014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02优秀写手
日期:2014-04-09 06:00:22
发表于 2017-3-24 21:42 来自手机 | 显示全部楼层
我说的对dba用户无效,指的是触发器,不要误解了,你要是把网线或电源线拔了,别说dba了,神仙也登不上

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月30日前

活动链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表