暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

触发器捕捉登陆失败的用户信息

小柠檬 2024-12-27
40

问题:

生产环境出现过由于WEBSPHERE APP SERVER配置数据库密码错误,导致不断尝试并将账户锁定的情况。

方案:

当时考虑logon触发器只能用于登陆成功的情况,就简单认为没有办法使用触发器找到哪台服务器密码配置错误。

后来考虑使用listener跟踪文件分析,也没能如愿。

今天看到aiiriigz使用基于错误的触发器解决该问题,感觉很有用,随摘录于此。下面代码测试通过。

类似的办法,可以针对ORACLE特定错误生成dump文件,可能有助于分析登陆失败问题。

相关内容:

SERVERERROR不支持如下错误:

ORA-01403: no data found

ORA-01422: exact fetch returns more than requested number of rows

ORA-01423: error encountered while checking for extra rows in exact fetch

ORA-01034: ORACLE not available

ORA-04030: out of process memory when trying to allocate string bytes (string, string)

本文捕获错误码:

ORA-01017: invalid username/password; logon denied

来源:

http://aiiriigz.wordpress.com/

捕捉尝试登陆失败的用户信息

Posted on November 23, 2010 by aiiriigz

 参考oracle support的Finding the source of failed login attempts. [ID 352389.1]修改而成:

触发器:

CREATE OR REPLACE TRIGGER logon_denied_to_alert

  AFTER servererror ON DATABASE

DECLARE

  message   VARCHAR2(168);

  ip        VARCHAR2(15);

  v_os_user VARCHAR2(80);

  v_module  VARCHAR2(50);

  v_action  VARCHAR2(50);

  v_pid     VARCHAR2(10);

  v_sid     NUMBER;

  v_program VARCHAR2(48);

BEGIN

  IF (ora_is_servererror(1017)) THEN

    -- get ip FOR remote connections :

    IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN

      ip := sys_context('userenv', 'ip_address');

    END IF;

    SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;

    SELECT p.spid, v.program

      INTO v_pid, v_program

      FROM v$process p, v$session v

     WHERE p.addr = v.paddr

       AND v.sid = v_sid;

    v_os_user := sys_context('userenv', 'os_user');

    dbms_application_info.read_module(v_module, v_action);

    message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||

               ' logon denied from ' || nvl(ip, 'localhost') || ' ' ||

               v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||

               v_module || ' ' || v_action;

    sys.dbms_system.ksdwrt(2, message);

  END IF;

END;

/

测试:

尝试用错误密码登录,在alert得到的信息如下:

Sun Jul 29 13:34:38 2018

20180729 133438 logon denied from 22.11.99.99 30073 mah with sqlplus.exe - sqlplus.exe

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论