oracle11g 新特性密码延迟验证引发的 血案
2016-07-01 00:19
477 查看
1,问题来源
以前遇到了问题修改了用户名密码后,发现用新密码登录被hang住的情况,然后整个公司的oa系统彻底瘫痪了,详细状况见以前的记录:/article/11900698.html。最近学习了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> |
而在测试过程中,一旦输入正确密码,验证成功过后,这个错误延时就会清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> |
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> |
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> |
参考文章地址:http://blog.itpub.net/4227/viewspace-1060788/
相关文章推荐
- Mybatis oracle 最原始分页代码
- Oracle创建表失败&连接失败
- Oracle切换UNDO空间数据库后存储过程无法正常编译
- oracle第二天
- oracle学习篇八:约束
- ORACLE中DBMS_SQL的用法
- ORACLE频繁被锁
- Oracle中向表中插入数据
- oracle创建表空间、用户
- oracle ORA_ROWSCN 行记录的更新时间
- Oracle dblink调用函数报ORA-00904 标识符无效
- ORACLE在dos管理命令
- oracle表碎片整理
- 【Oracle 优化器】自适应游标共享(Adaptive Cursor Sharing)功能
- 如何创建Oracle数据库
- Oracle导入导出提示EXP-0006:出现内部不一致的错误解决办法
- oracle存储过程将某张表一个字段的多值分开成多条数据插入到一张新表
- 通过sqoop增量传送oracle数据到hive
- Oracle java.sql.SQLException: 数字溢出
- Oracle的if else if