. Как узнать из-за кого блокируется пользователь при ошибочном вводе пароля?
В последнее время очень часто стал блокироваться пользователь. Подозреваю, это из-за ошибочного ввода логина и пароля, но не знаю как выяснить, с какого компютера это происходить.
Можно ли получить какую-либо информацию по этому поводу, например, IP или имя пользователя, из-за которого заблокировался пользователь?
PS Oracle Database 10g Release 10.2.0.3.0 - Production
Ответы (2 шт):
Мои действия:
Выставил параметр
audit_trail:alter system set audit_trail='DB' scope=spfile;`Перезапустил службу Oracle
Выполнил:
audit create session whenever not successful;Затем запросом:
select * from dba_audit_trail where returncode in (1017, 28000) order by timestamp desc;получаю всю необходимую информацию по заблокированному пользователю.
Если аудит не настроен, то простое решение - создать системный триггер на ошибки БД:
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;