oracle11g 新特性密码延迟验证引发的 血案

原创 2016年07月01日 00:19:30

 

 

1,问题来源

以前遇到了问题修改了用户名密码后,发现用新密码登录被hang住的情况,然后整个公司的oa系统彻底瘫痪了详细状况见以前的记录:http://blog.csdn.net/mchdba/article/details/51782263

 

最近学习了oracle11g的新特性密码延迟,才明白问题所在是由于密码延迟导致。

 

大概情况是:从oracle11g开始,如果用户输入了错误的密码登录,那么随着登录错误次数的增加,每次登录前等待验证的时间也会增加,本意上是为了保护数据库被恶意登录的时候消耗太多db资源导致数据库消耗过高导致数据库服务器出问题,但是这里也引发了问题,如果使用错误密码登录过多,则会影响该用户的正常登录,也就是说密码有验证延迟导致你输入正确的密码登录也需要等待很久。给使用人员的体验就是数据库hang住了(其实你使用其它用户操作数据库完全正常)

 

 

2,案例演示

Oracle版本是11g分支11.2.0.1.0:

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as timdba@A_VM128

 

SQL>


设置时间显示:

SQL> set time on;

07:41:57 SQL> conn timdba/timgood;

Connected.

07:42:48 SQL> conn timdba/t;  # 开始尝试错误密码登录                                                                                 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

07:42:49 SQL> conn timdba/t; #  1次错误登录消耗时间1

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:42:51 SQL> conn timdba/t; #  2次错误登录消耗时间2

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:42:52 SQL> conn timdba/t; #  3次错误登录消耗时间1

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:42:54 SQL> conn timdba/t; #  4次错误登录消耗时间2

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:42:57 SQL> conn timdba/t; # 5次错误登录消耗时间3

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:43:02 SQL> conn timdba/t; #  6次错误登录消耗时间5

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:43:07 SQL> conn timdba/t; #  7次错误登录消耗时间5

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:43:13 SQL> conn timdba/t; #  8次错误登录消耗时间6

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:43:20 SQL> conn timdba/t; #  9次错误登录消耗时间7

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

07:43:28 SQL>

07:43:29 SQL> conn timdba/timgood;

Connected.

07:43:40 SQL>                                                                                                                                                                 

 

大家可以看到第4次,第5次开始,错误登录验证时间越来越长了。基本每次都延迟多一秒,而后面即使输入了正确密码,也会延迟十几秒了。

 

而在测试过程中,一旦输入正确密码,验证成功过后,这个错误延时就会清0,从0开始重新计算数字了:

08:15:30 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied                                                                                        

 

 

08:15:34 SQL> conn timdba/timgood;

Connected.

08:15:37 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

08:15:39 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:15:40 SQL>

 

大家进一步扩散下思维,这只是单个session做测试的,如果是线上环境的话,成千上万个会话过来,如果密码都错误了,一起延时的话,按照一个操作多延迟一秒来算,基本要延迟1000秒了,也就是半个小时你登录界面卡在哪里了,这样给客户的体验就是输入了正确密码,结果点击了登录按钮,就卡住了,死活不动弹了,服务器瘫痪了,也就意味着应用系统hang住了。

 

3,新特性是双刃剑

Oracle的任何一个新特性都能带来性能上的提升和安全上的进一步保证,但是毕竟oracle也只是一个软件software而已,是software就会有bug,甚至被别人利用攻击了。

 

oracle在11g发布后的几个小版本中,没有给出彻底屏幕密码延迟的方法,但是oracle有强大的其它辅助功能,可以通过设置event事件来处理掉。

 

 

4,通过设置Event屏幕密码延迟

这里一般通常设置28401就足够了,如果遇到其它特殊情况,也可以再设置一下,接下来通过设置EVENTS 28401来实现屏蔽密码延迟验证:

ALTER SYSTEM SET EVENT = '28401 TRACE NAMECONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;

alter system set event="10949 TRACENAME CONTEXT FOREVER:28401 trace name context forever, level 1" scope=spfile;

 

SQL> set time on;

08:56:22 SQL> ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;

 

System altered.

 

08:56:27 SQL> create pfile from spfile;

 

File created.

 

08:56:29 SQL>

 

 

之后重启oracle数据库生效了。

08:56:44 SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

08:57:05 SQL> startup;

ORACLE instance started.

 

Total System Global Area  835104768 bytes

Fixed Size                                  2217952 bytes

Variable Size                          545261600 bytes                                                                                                                                        

Database Buffers                 281018368 bytes

Redo Buffers                            6606848 bytes

Database mounted.

Database opened.

08:57:46 SQL>

 

 

 

再次验证错误密码延迟验证,可以看到几乎没有任何延迟了:

08:58:28 SQL> conn timdba/timgood;

Connected.

08:58:33 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied                                                                                                                      

 

 

Warning: You are no longer connected to ORACLE.

08:58:37 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:38 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:39 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:39 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:40 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:41 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:42 SQL> conn timdba/t;

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

08:58:42 SQL>

 

PS:据说在oracle11g的最后一个版本 11.2.0.4已经彻底修复了这个bug

 


参考文章地址:http://blog.itpub.net/4227/viewspace-1060788/

 

tomcat 应用Message file 'oracle.net.mesg.Message' is missing问题处理

1,问题描述同事说crm登录hang住了,tomcat后台应用报错如下: 2016-06-28 10:30:11,214 [com.mchange.v2.async.ThreadPoolAsyn...
  • mchdba
  • mchdba
  • 2016年06月29日 20:19
  • 11845

SSH练习之Tomcat启动错误日志

九月 18, 2012 10:36:41 下午 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apac...

this web application instance has been stopped already解决办法

重启tomcat的时候出错 Illegal access: this web application instance has been stopped already.  Could not lo...

ORACLE 11g的密码错误延时验证

应用(JDBC)的密码过期或者修改了,应用还是用老的密码在连,由于11g的密码错误延时验证,造成library cache lock。 一开始检查可以看到,处于library cache lock都...
  • wish503
  • wish503
  • 2016年05月16日 17:12
  • 742

ORACLE 记录连接用户的IP地址以及登录失败用户的IP地址

前言:实现的功能主要是,oracle登录成功记录登录用户ip地址,登录失败记录登录失败ip地址  1,需要建立一个触发器记录登录成功的客户端用户的ip地址大家都知道在v$session 中记录着客户端...
  • mchdba
  • mchdba
  • 2015年05月15日 20:19
  • 5682

关于jvm的线程调度在不同操作系统下的实现说明

java的线程概念与操作系统的线程概念是不同的,java的线程概念差不多与windows线程概念一致,但是java既然目标是跨平台语言,那么它的线程机制概念是在所有平台上都是一样的,但是实际实现又不是...

ORACLE11G新特性

  • 2014年11月14日 02:47
  • 7KB
  • 下载

Oracle11g新特性

  • 2015年04月30日 14:31
  • 3.33MB
  • 下载

oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)

oracle11g中最重要的特点之一——Adaptive Cursor Sharing (ACS),几乎完美的解决了之前版本不绑定不行,绑定也不行的尬尴问题,今天有机会对此特点再次进行研究和查阅资料,...
  • LHDZ_BJ
  • LHDZ_BJ
  • 2015年06月30日 14:10
  • 1017

oracle11g新特性导读

  • 2013年05月10日 10:22
  • 234KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle11g 新特性密码延迟验证引发的 血案
举报原因:
原因补充:

(最多只允许输入30个字)