audit_trail = db
这是一个静态参数;您必须重新利用数据库才能使其生效。 执行此操作后,发出以下命令以执行审计。 AUDIT SESSION;
该命令将在用户登录或注销时创建一个记录。 即使登录失败也将创建登录跟踪。 在数据库运行一段时间后,可以在审计跟踪中搜索模式。 列 RETURNCODE 记录用户在执行该操作时收到的 Oracle 错误代码。 SQL> select returncode, count(1)
2 from dba_audit_trail
3 group by returncode
4 /
RETURNCODE COUNT(1)
---------- ----------
0 1710880
604 3
955 17
987 2
1013 2
1017 1428
1045 1
1555 4
1652 4
1950 1
2002 1
2004 4
28000 4
28009 3
以上代码显示了错误模式;大多数操作均成功(其中的返回代码为 0)。 对于剩余代码,您可以通过从 *nix 提示符中发出以下命令获得描述 oerr ora <errorno>
。 例如,要查明错误代码 1017 的含义,请发出 oerr ora 1017
这将返回 01017, 00000, "invalid username/password; logon denied"
// *Cause:
// *Action:
这个最常见的错误是分析的目标,因为它将最有效地显示攻击模式。 无效/口令组合的偶然性如果很高,则可能指示尝试的意外入侵。
现在,您将看到这些会话的来源。 特定用户 ID 的口令无效可能指示对该用户 ID 的攻击。 可以通过以下代码查看用户 ID: select username, count(1)
from dba_audit_trail
where returncode = 1017
group by username
order by 2 desc;
该输出如下所示: USERNAME COUNT(1)
------------------------------ ----------
ARAO 569
DBSNMP 381
DW_DQS 181
此处,我们看到用户 ARAO(表面看来是一个实际用户)已经尝试使用无效口令 569 次。 下一个用户 ID DBSNMP(381 次无效的口令尝试)不是一个实际用户;它的用户 ID 为 Enterprise Manager。 这应立即引发警报信号 - —DBSNMP 是一个首选的攻击目标。
为进一步检查它,我们将查看这些攻击的来源: select userhost, terminal, os_username, count(1)
from dba_audit_trail
where returncode = 1017
and username = 'DBSNMP'
group by userhost, terminal, os_username;
输出如下: USERHOST TERMINAL OS_USERNAM COUNT(1)
------------------------- --------------- ---------- ----------
prlpdb01 oraprlp 199
prlpdb01 pts/2 oraprlp 4
prlpdb01 pts/7 oraprlp 9
prlpdb02 oraprlp 130
PRONT\PRANANDAT42 PRANANDAT42 ananda 3
progcpdb unknown oracle 34
(编辑:aniston)
|