. Как узнать из-за кого блокируется пользователь при ошибочном вводе пароля?

В последнее время очень часто стал блокироваться пользователь. Подозреваю, это из-за ошибочного ввода логина и пароля, но не знаю как выяснить, с какого компютера это происходить.

Можно ли получить какую-либо информацию по этому поводу, например, IP или имя пользователя, из-за которого заблокировался пользователь?


PS Oracle Database 10g Release 10.2.0.3.0 - Production


Ответы (2 шт):

Автор решения: gregor

Мои действия:

  1. Выставил параметр audit_trail:

    alter system set audit_trail='DB' scope=spfile;`
    
  2. Перезапустил службу Oracle

  3. Выполнил:

    audit create session whenever not successful;
    
  4. Затем запросом:

    select * 
    from dba_audit_trail where returncode in (1017, 28000) 
    order by timestamp desc;
    

    получаю всю необходимую информацию по заблокированному пользователю.

→ Ссылка
Автор решения: 0xdb

Если аудит не настроен, то простое решение - создать системный триггер на ошибки БД:

create table failedlogons (
    dt date, dbuser varchar2 (32), osuser varchar2 (32), 
    host varchar2 (64), ip varchar2 (24), memo varchar2 (256))
/
create or replace trigger failedlogonstrig after servererror on database
begin
    if ora_is_servererror (1017) then
        insert into failedLogons values (
            sysdate,
            sys_context ('USERENV', 'AUTHENTICATED_IDENTITY'), 
            sys_context ('USERENV', 'OS_USER'), sys_context ('USERENV', 'HOST'), 
            sys_context ('USERENV', 'IP_ADDRESS'), 'failed logon');
    end if;
end;
/

Каждая попытка подключения с неверным паролем будет запротоколирована. Когда надобность в протоколировании этого события отпадёт, то можно просто удалить триггер и таблицу.

$ sqlplus -l me/xxx@dbsrv/pdb1
ERROR:
ORA-01017: invalid username/password; logon denied

$ sqlplus -l sys/Pass@dbsrv/pdb1

SQL> select * from failedlogons;

DT        DBUSER OSUSER HOST             IP               MEMO
--------- ------ ------ ---------------- ---------------- ----------------
01-DEC-20 ME     me     LOCAL\MYNAME     192.168.1.111    failed logon

SQL> drop table failedLogons purge;
SQL> drop trigger failedLogonsTrig;
→ Ссылка