记一次oracle数据库用户被锁定的问题--非常见

文章讲述了DBA在处理客户业务用户被锁定问题时,通过登录服务器解锁、检查登录错误触发器、启用数据库审计和防火墙,最终发现是因为空密码引发的异常。作者提供了解决方案和建议,包括开启用户错误登录尝试审计。
摘要由CSDN通过智能技术生成

客户反馈关键业务用户被锁定,需要处理和排查,干了这么多年的DBA处理这类问题简直都不是事(过于自信)

1、登录服务器对用户进行解锁(解锁之前查看了用的状态为lock(timed)-->表示尝试使用错误密码登录次数超过限制,数据库限制是10次,10次后就会锁定。

官方解释如下

用户状态为LOCK(TIMED)是由客户端发起登录尝试失败导致,登录尝试失败次数由FAILED_LOGIN_ATTEMPTS参数决定,用户锁定时间未设置(长期),FAILED_LOGIN_ATTEMPT允许失败登录最大次数为默认即10次,锁定时间为长期:

2、检查记录登录错误的触发器,居然为空 0行,--->正常情况下,输入错误密码会提示ora-1017错误,这次咋没有呢,但是可以确认是密码输入错误导致的问题;

3、(由于数据库则未找到根源,联系应用厂商未果)为了尽快找到原因,打开数据库审计并增加了数据库审计防火墙,期间又发生了2次用户锁定(相隔20天左右),和客户沟通是否能调整密码次数上线,得到了否决(防止暴力破解),必须找到根源。。。

4、第四次用户锁定,通过审计防火墙发现端倪(某一个服务器出现连续登录失败的报错)--终于抓到你了

5、反复和客户以及开发商掰扯(终于在服务器中一个小应用中发现了关键问题,完全想不到的情况,应用日志中出现如下错误;

真操蛋呀,居然是空密码,难怪触发器没有记录下来。

找到原因后及时更新了触发器

CREATE OR REPLACE TRIGGER sys.logon_trigger

AFTER SERVERERROR ON DATABASE

BEGIN

IF (IS_SERVERERROR(1017)or S_SERVERERROR(1005)) THEN

INSERT INTO logon_trigger VALUES(SYS_CONTEXT('USERENV', 'AUTHENTICATED_IDENTITY'), SYS_CONTEXT('USERENV', 'HOST'), SYSDATE,SYS_CONTEXT('USERENV','IP_ADDRESS'));

COMMIT;

END IF;

END;

/

防范与建议:

开启用户错误登录尝试审计代码如下:

AUDIT CREATE SESSION BY ACCESS WHENEVER NOT SUCCESSFUL;

AUDIT CONNECT BY ACCESS WHENEVER NOT SUCCESSFUL;

select name,lcount from user$ where name='xXX';

  select username,

os_username,

userhost,

client_id,

trunc(timestamp),

count(*) failed_logins

from dba_audit_trail

where returncode in( 1017 ,01005)--1017 is invalid username/password

timestamp > sysdate -7

group by username,os_username,userhost, client_id,trunc(timestamp);

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值