当前位置:数据库 > Oracle >>

Oracle审计失败的用户登陆(Oracle audit)

Oracle审计失败的用户登陆(Oracle audit)
 
       对于在线交易系统,且Oracle用户在使用缺省的profile的情形下,多用户共享相同的数据库用户及密码,任意用户输入错误密码累计达到10次以上,其帐户会被自动锁定使得交易被迫临时终止将产生不小的损失。故有必要对那些失败的帐户登陆进行分析以预估是否存在恶意攻击等。Oracle提供了审计功能用于审计那些失败的Oracle用户登陆来进行风险评估。本文即是描述如何开启审计失败的用户登陆。本文不涉及审计的具体的描述信息,仅仅描述如何审计失败的用户登陆。详细完整的审计大家可以参考Oracle Database Security Guide。
 
1、帐户被锁定的情形
     通常情况下,帐户可以由DBA手动锁定,也可能是由于错误的密码输入次数超出了profile中failed_login_attempts 次数的限制而被锁定。
[sql] 
a、手动锁定的情形  
sys@SYBO2SZ> select username,account_status,lock_date from dba_users where username like 'USR%';  
  
USERNAME                       ACCOUNT_STATUS                   LOCK_DATE           
------------------------------ -------------------------------- -----------------   
USR2                           OPEN  
USR1                           OPEN  
  
sys@SYBO2SZ> alter user usr1 account lock;  
  
sys@SYBO2SZ> select username,account_status,lock_date from dba_users where username like 'USR%';  
  
USERNAME                       ACCOUNT_STATUS                   LOCK_DATE  
------------------------------ -------------------------------- -----------------  
USR2                           OPEN  
USR1                           LOCKED                           20131023 16:37:37  
  
b、登陆失败超出的情形  
sys@SYBO2SZ> select name,lcount from user$ where name='USR2';  
  
NAME                               LCOUNT  
------------------------------ ----------  
USR2                                   10  
  
sys@SYBO2SZ> select username,account_status,lock_date from dba_users where username like 'USR%';  
  
USERNAME       ACCOUNT_STATUS     LOCK_DATE  
-------------- ------------------ -----------------  
USR2           LOCKED(TIMED)      20131023 16:41:48   -->用户usr2登陆10次之后帐户被锁定,其状态不同于手动锁定的用户,为LOCKED(TIMED)  
USR1           LOCKED             20131023 16:37:37  
2、如何开启审计失败的用户登陆
     开启审计需要做如下设置
         a、设置参数         audit_trail = { none | os | db [, extended] | xml [, extended] }
         b、设置参数         audit_file_dest = '<os_dir>'
         c、开启登陆失败审计 audit session whenever not successful;
         d、执行下面的SQL来查看那些用户经历了登陆失败的情形
             select userid, userhost, terminal, clientid from aud$ where returncode=1017;
  
     关于参数audit_trail,
     当值为DB时,非sys帐户的审计信息都会被记录到表SYS.AUD$,会占用system表空间,存在资源占用问题,当然也可将其部署到非系统表空间。sys帐户登陆成功与失败都会生成审计文件。
     当值为OS时,所有的审计记录被写入到操作系统文件,对于高度安全的数据库,Oracle建议采用该设置,理由很简单,高度安全,写入DB的话,整个系统忙得不亦乐乎。
     如果数据库处于只读模式且该参数值为DB时,Oracle 内部设置audit_trail为OS,细节可查看alert log。其余的几个值可参考Oracle Database Reference。
 
3、演示配置审计登陆失败(oracle 10g)
[sql] 
goex_admin@SYBO2SZ> select * from v$version where rownum<2;  
  
BANNER  
----------------------------------------------------------------  
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  
--Oracle 10g下当前数据库的配置,如下,也是缺省配置  
goex_admin@SYBO2SZ> show parameter audit  
  
NAME                                 TYPE        VALUE  
------------------------------------ ----------- ------------------------------  
audit_file_dest                      string      /users/oracle/OraHome10g/rdbms  
                                                 /audit  
audit_sys_operations                 boolean     FALSE  
audit_syslog_level                   string  
audit_trail                          string      NONE  
  
--下面修改存储审计文件位置  
goex_admin@SYBO2SZ> ho mkdir -p /u02/database/SYBO2SZ/audit  
  
goex_admin@SYBO2SZ> alter system set audit_trail='DB' scope=spfile;  
  
goex_admin@SYBO2SZ> alter system set audit_file_dest='/u02/database/SYBO2SZ/audit' scope=spfile;  
  
goex_admin@SYBO2SZ> audit session whenever not successful;  
  
goex_admin@SYBO2SZ> conn / as sysdba  
  
sys@SYBO2SZ> shutdown immediate;  
  
sys@SYBO2SZ> startup  
  
sys@SYBO2SZ> ho ls /u02/database/SYBO2SZ/audit  
  
C:\Users\robinson.cheng>sqlplus scott/wrongpwd@sybo2sz   --尝试使用错误的密码从客户端来登陆  
  
sys@SYBO2SZ> select userid, userhost, terminal from aud$ where returncode=1017;  
  
USERID                         USERHOST                       TERMINAL                         
---------------
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,