为防止恶意用户对系统进行攻击,我们可以监控系统的连接情况。与此同时结合定期检查和分析,便可以迅速的发现那些异常和非法的数据库连接。
实现对Oracle系统登录的审计的方法不是唯一的,这里给出使用触发器记录用户登录信息。希望能起到抛砖引玉的目的。
1.创建记录审计信息的表
conn sec/sec
create table audit_user_connect
(
user_id varchar2 (32),
session_id number (8),
host varchar2 (32),
connection_ip varchar2 (32),
logon_day date,
logon_time varchar2 (10)
);
2.创建审计连接信息的触发器
create or replace trigger user_connect_audit_trigger
after logon
on database
declare
v_connection_ip varchar2 (20);
v_host varchar2 (20);
begin
select sys_context ('userenv', 'ip_address') into v_connection_ip from dual;
select sys_context ('userenv', 'host') into v_host from dual;
insert into audit_user_connect
values (user,
sys_context ('userenv', 'sessionid'),
v_host,
v_connection_ip,
sysdate,
to_char (sysdate, 'hh24:mi:ss'));
commit;
end;
/
4.注意事项
因为是使用触发器实现的审计,因此如果trigger本身出现问题的话,会导致用户无法访问。因此在使用该方法进行审计时,一定要确保trigger的有效性和可用性。
具体的报错信息如下:
sys@ora10g> conn sec/sec
ERROR:
ORA-04098: trigger 'SEC.USER_DISCONNECT_AUDIT_TRIGGER' is invalid and failed re-validation
ERROR:
ORA-24315: illegal attribute type
Warning: You are no longer connected to ORACLE.
5.小结
本文给出的是通过触发器实现用户登录审计的需求。可以在此基础上进行丰富和定制来满足具体的审计需求。
欢迎大家提出自己的宝贵意见。