为防止恶意用户对系统进行攻击,我们可以监控系统的连接情况。与此同时结合定期检查和分析,便可以迅速的发现那些异常和非法的数据库连接。实现对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;
/
3.测试效果
1)客户端测试连接数据库
SQL> conn secooler/secooler@172.17.193.211ora10g
已连接。
SQL> conn sec/sec@172.17.193.211ora10g
已连接。
2)查看审计信息
sec@ora10g> select * from audit_user_connect;
USER_ID SESSION_ID HOST CONNECTION_IP LOGON_DAY LOGON_TIME
---------- ---------- -------------------- --------------- ------------------- ----------
SECOOLER 2510618 BJSSECO\HOUSW-LT 10.142.8.199 2010-12-16 21:10:48 21:10:48
SEC 2510619 BJSSECO\HOUSW-LT 10.142.8.199 2010-12-16 21:11:06 21:11:06
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.
--转自