oracle开源审计,Oracle审计功能

设置审计的实例:对试图尝试口令的访问的审计

本节讨论的是一个审计的实例,用于记录尝试通过野蛮尝试法破译ORACLE帐号口令的例子:

1.修改审计相关参数(参照上一节介绍的方法)

2.重启数据库

3.设置审计信息

SQL>AUDIT ALL BY ACCESS WHENEVER NOT SUCCESSFUL

4.查询AUD$

SQL> select returncode, action#, userid, userhost, terminal,timestamp

from aud$

RETURNCODE    ACTION# USERID   USERHOST  TERMINAL

---------- ---------- -------- -------------------- --------------------

1017        100      SCOTT    WPRATA-BR

1017        100      SCOTT    WPRATA-BR

1017        100      SCOTT    WPRATA-BR

ORA-1017的含义为错误的用户名口令。通过查看AUD$表可以清楚地看到WPRATA-BR尝试破译SCOTT的口令。可以通过下面一个存储过程来分析AUD$表,找出可疑的信息:

create or replace procedure AuditLogin(Since Varchar2,Times PLS_Integer)

is

USER_ID VARCHAR2(20);

cursor c1 is select userid,count(*) from sys.aud$ where returncode='1017' and timestamp#>=to_date(Since,'yyyy-mm-dd')

group by userid;

cursor C2 IS Select userhost, terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')

from sys.aud$ WHERE returncode='1017' and timestamp#>=to_date(Since,'yyyy-mm-dd') AND USERID=USER_ID;

ct PLS_INTEGER;

V_USERHOST VARCHAR2(40);

V_TERMINAL VARCHAR(40);

V_DATE VARCHAR2(40);

BEGIN

OPEN C1;

dbms_output.enable(1024000);

LOOP

FETCH C1 INTO USER_ID,CT;

EXIT WHEN C1%NOTFOUND;

IF(CT>=TIMES) THEN

DBMS_OUTPUT.PUT_LINE('USER BROKEN ALARM:'||USER_ID);

OPEN C2;

LOOP

FETCH C2 INTO V_USERhOST,V_TERMINAL,V_DATE;

DBMS_OUTPUT.PUT_LINE(CHR(9)||'HOST:'||V_USERHOST||',TERM:'||V_TERMINAL||',TIME:'||V_DATE);

EXIT WHEN C2%NOTFOUND;

END LOOP;

close c2;

END IF;

END LOOP;

close c1;

END;

/

一下是执行结果:

SQL>set serveroutput on;

SQL> execute auditlogin('2004-01-01',2);

USER BROKEN ALARM:SYS

HOST:,TERM:XUJI,TIME:2004-09-22:11:08:00

HOST:,TERM:XUJI,TIME:2004-09-22:11:08:01

HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29

HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29

PL/SQL过程已成功完成。 将审计相关的表移动到其他表空间

由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:

sql>connect / as sysdba;

sql>alter table aud$ move tablespace ;

sql>alter index I_aud1 rebuild online tablespace ;

SQL> alter table audit$ move tablespace ;

SQL> alter index i_audit rebuild online tablespace ;

SQL> alter table audit_actions move tablespace ;

SQL> alter index i_audit_actions rebuild online tablespace ;

你可能感兴趣的:(oracle开源审计)