`
sjk2013
  • 浏览: 2182463 次
文章分类
社区版块
存档分类
最新评论

触发器限制指定IP访问oracle数据库

 
阅读更多

---------------------来自德哥的BLOG,觉着很有用,记录一下-------------------<wbr style="line-height:25px"></wbr>

最近有个项目需要限制某些数据库用户的访问来源IP,在PG中比较好实现,但是ORACLE没有比较简便的操作。
如果不管用户的话,仅仅限制来源IP对监听的访问是比较容易实现的,通过配置数据库服务器的sqlnet.ora文件或者修改数据库服务器的IPTABLES等手段实现。
sqlnet.ora范例:
tcp.validnode_checking=yes
tcp.invited_nodes=(172.16.33.11,172.16.34.89)

iptables范例:
[root@kefu ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
# 允许访问1521的服务器
-A RH-Firewall-1-INPUT -s 172.16.3.68/32 -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

下面来看看如何限制特定用户和特定IP:

1. 创建ACL表 (本例将ACL表建立在dsm用户下,随便建哪里都可以)
create table dsm.tbl_iplimit (logonuser varchar2(32),ip_address varchar2(15),remark varchar2(64),create_time date default sysdate);
insert into dsm.tbl_iplimit values ('DSM','172.16.18.81','digoal''s host.',sysdate);
insert into dsm.tbl_iplimit values ('DSM','local','本地',sysdate);
commit;
这里限制了DSM用户只能从172.16.18.81和ORACLE所在服务器登录.其他用户不受限制.

2. 创建触发器
conn / as sysdba
create or replace trigger "logon_audit" after
logon on database
declare
record_num number;
userip varchar2(15);
isforbidden boolean:=true;
begin
userip:=nvl(sys_context ('userenv','ip_address'),'local');
select count(*) into record_num from dsm.tbl_iplimit where logonuser=user;
if (record_num>0) then
select count(*) into record_num from dsm.tbl_iplimit where logonuser=user and ip_address=userip;
if (record_num=0) then
raise_application_error(-20003,'ip :'||userip||' is forbided');
end if;
end if;
exception
when value_error then
sys.dbms_output.put_line('exception handed');
when others then
raise;
end logon_audit;
/

3. 测试
在本地登录
SQL> conn dsm/pwd
正常
delete from tbl_iplimit where ip_address='local';
commit;
exit;
再在本地登录,已经受阻了.
SQL> conn dsm/pwd
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20003: ip :local is forbided
ORA-06512: at line 18

换台机器(172.16.3.67)登录:
SQL> conn dsm/pwd@//172.16.3.13:1521/sid
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20003: ip :local is forbided
ORA-06512: at line 18
受阻

换台机器(172.16.3.81)登录:
SQL> conn dsm/pwd@//172.16.3.13:1521/sid
正常

如果IP范围比较宽,可以写一个IP比较的函数加入到上面的判断中,避免写很多条记录

分享到:
评论

相关推荐

    oracle安全审计之登录登出、ddl操作记录触发器

    oracle的登录、登出触发器(时间、来访ip、用户信息、sid等等),ddl操作记录触发器(含create、drop、alter、truncate等),都属于事后触发,不影响业务操作

    管理信息系统数据库安全体系设计(1).doc

    为了方便对数据库和服务器的管理,需要打开操作系统和Oracle数据库的远程访问端 口。但必须限制远程访问端口的可信任区域。为了减少这类端口被利用和被攻击的可能 性,可更改此类端口为数据库服务器上尚未被使用的...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     《Oracle11g宝典》是Oracle数据库管理员、安全管理员、网络管理员、应用开发人员的参考指南,还是Oracle技术支持和培训机构、Oracle学习班、高等院校计算机专业数据库课程的参考教材和上机指导教材。每类人员都...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 91 3.5 临时文件 93 3.6 控制文件 95 3.7 重做日志文件 95 3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例259 限制用户访问网站的时间 340 实例260 用户来访时客户端创建COOKIE 341 实例261 删除客户端的COOKIE 343 实例262 使客户端浏览器支持COOKIE 344 5.2 SESSION 345 实例263 掌控登录用户的权限 346 实例264 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例259 限制用户访问网站的时间 340 实例260 用户来访时客户端创建COOKIE 341 实例261 删除客户端的COOKIE 343 实例262 使客户端浏览器支持COOKIE 344 5.2 SESSION 345 实例263 掌控登录用户的权限 346 实例264 ...

    PostgreSQL数据库管理(二)

    事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;...

    C#开发经验技巧宝典

    0968 建立Oracle数据库连接 566 0969 如何在数据表中设置主键 566 0970 DataSet读取XML文件中数据作为数据源 567 0971 如何读取Fox的DBF文件 567 0972 通用方法实现数据增、删、改功能 567 0973 通用方法...

    Oracle编程艺术

    3.4.2 Oracle数据库中的存储层次体系..............................................181 3.4.3 字典管理和本地管理的表空间..................................................186 3.5 临时文件..........

    PostgreSQL数据库管理(三)

    事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;...

    PostgreSQL数据库管理(一)

    事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。...实例269 文件选择对话框指定数据库备份文件 342 实例270 指定打开对话框的文件类型 343 ...

Global site tag (gtag.js) - Google Analytics