码迷,mamicode.com
首页 > 数据库 > 详细

Oracle用户自动锁定

时间:2015-05-03 23:48:58      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:oracle   自动锁定   

oracle11g数据库安全加固须谨慎

数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在jar里,如果jar内的连接数据库的配置信息没有做相应的修改的话。就会对数据库的此业务账号造成严重的后果。

因此,真正了解Oracle安全数据库用户的状态,就显得尤为重要了。下面我们就看一下oracle数据库中的多种用户状态。

ORACLE数据库用户有多种状态,可查看视图USER_ASTATUS_MAP。

SQL> col status for a30

SQL> select * from user_astatus_map;

   STATUS# STATUS

---------- ------------------------------

         0 OPEN

         1 EXPIRED

         2 EXPIRED(GRACE)

10          4 LOCKED(TIMED)

11          8 LOCKED

12          5 EXPIRED & LOCKED(TIMED)

13          6 EXPIRED(GRACE) & LOCKED(TIMED)

14          9 EXPIRED & LOCKED

15         10 EXPIRED(GRACE) & LOCKED

16 

17 rows selected.

通过上面的查询我们可以看到在Oracleaccount总共有9种不同的状态,对应dba_users视图中的account_status字段。

下面我分别就每种状态的含义和出现的情况做个简单的说明,以便于今后的系统管理和维护。

分析上面的9种状态不难看出,其实独立的状态只有OPENEXPIREDLOCKEDEXPIRED(GRACE)LOCKED(TIMED) 5种形式。其他4种不过是前面几种形式的组合而已。

或者也可以这样理解:

以上的9种状态可以分为两大类:

1、基本状态(前五种为基本状态:0 OPEN1 EXPIRED2 EXPIRED(GRACE)4 LOCKED(TIMED)8 LOCKED);

2、组合状态(后四种为组合状态:5 EXPIRED & LOCKED(TIMED)6 EXPIRED(GRACE) & LOCKED(TIMED)9 EXPIRED & LOCKED10 EXPIRED(GRACE) & LOCKED);

后四种的组合状态可通过状态号STATUS#获得其状态的两个组合。掌握前五种即可。

具体详细解释请参考如下:

OPEN: 这个是大家最常见的,就是表示这个是可用的,没有任何限制的帐户

LOCKED: 表示这个帐户被DBA锁定. 一般通过alter user username account lock(unlock);

EXPIRED: 表示该帐户被设置为口令到期,要求用户在下次logon的时候修改口令(系统会在该account被设置为expire后的第一次登陆是提示你修改密码)

EXPIRED(GRACE): 当设置了grace以后(第一次成功登录后到口令到期后有多少天时间可改变口令,在这段时间内,帐户被提醒修改口令并可以正常登陆,account_status显示为EXPIRED(GRACE).

LOCKED(TIMED): 这种状态表示失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定,需要注意的是,在Oracle 10g中,默认的DEFAULT值是10次.

EXPIRED & LOCKED: 表示此账户被设置为口令到期且被锁定。

EXPIRED(GRACE) & LOCKED(TIMED): 当account_stutus为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定

EXPIRED & LOCKED(TIMED): 当设置了account expire后,用户又失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定

EXPIRED(GRACE) & LOCKED: 用户account_status为EXPIRED(GRACE)后,又被DBA 手工锁定帐户后的状态

下面通过实例操作来说明:

本人对oracle数据库的profile文件进行如下安全设置:(其中的FAILED_LOGIN_ATTEMPTS 6是对用户尝试失败的登录最大次数的限制,这里只允许最多尝试失败6次)

SQL>ALTER PROFILE DEFAULT LIMIT

 FAILED_LOGIN_ATTEMPTS 6

 PASSWORD_LIFE_TIME 60

 PASSWORD_REUSE_TIME 60

 PASSWORD_REUSE_MAX 5

 PASSWORD_VERIFY_FUNCTION verify_function_11g

 PASSWORD_LOCK_TIME 1/24

 PASSWORD_GRACE_TIME 90;

SQL> select username,account_status from dba_users;

 

USERNAME                       ACCOUNT_STATUS

------------------------------ ---------------------

 

DBA_USER                       OPEN

DBSNMP                         OPEN

SYSMAN                         OPEN

SCOTT                          OPEN

FLOWS_FILES                    EXPIRED & LOCKED

MDSYS                          EXPIRED & LOCKED

WMSYS                          EXPIRED & LOCKED

ORDDATA                        EXPIRED & LOCKED

CTXSYS                         EXPIRED & LOCKED

ANONYMOUS                      EXPIRED & LOCKED

接下来使用账号dba_user和scott,以错误的密码尝试连接数库6次以上后,再查看数据库用户状态:

SQL> select username,account_status from dba_users;

 

USERNAME                        ACCOUNT_STATUS

------------------------------ --------------------------------

 

DBA_USER                        EXPIRED(GRACE) & LOCKED(TIMED)

DBSNMP                          OPEN

SYSMAN                          OPEN

SCOTT                           EXPIRED(GRACE) & LOCKED(TIMED)

FLOWS_FILES                     EXPIRED & LOCKED

MDSYS                           EXPIRED & LOCKED

WMSYS                           EXPIRED & LOCKED

ORDDATA                         EXPIRED & LOCKED

CTXSYS                          EXPIRED & LOCKED

ANONYMOUS                       EXPIRED & LOCKED

事实证明,当用户DBA_USER和SCOTT为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定.

如果这两个用户为生产现网的业务账户的话,管理员不能及时发现问题或报警的话,将会造成业务中断等严重的后果。

 

1、查看FAILED_LOGIN_ATTEMPTS的值

  select * from dba_profiles

  2、修改为30次

  alter profile default limit FAILED_LOGIN_ATTEMPTS 30;

  3、修改为无限次(为安全起见,不建议使用)

  alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

  4、查看被锁的用户
select LOCK_DATE,username from dba_users where username=‘HNSMS‘;
LOCK_DATE为空说明没有锁定,非空为锁定。

本文出自 “李鹏飞oracle” 博客,请务必保留此出处http://lipengfei666666.blog.51cto.com/6384154/1641494

Oracle用户自动锁定

标签:oracle   自动锁定   

原文地址:http://lipengfei666666.blog.51cto.com/6384154/1641494

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!