欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle 11g数据库安全加固注意事项

程序员文章站 2022-05-04 14:53:22
数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在jar里,如果jar内的...

数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在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)
     4 locked(timed)
     8 locked
     5 expired & locked(timed)
     6 expired(grace) & locked(timed)
     9 expired & locked
    10 expired(grace) & locked

9 rows selected.

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

下面我分别就每种状态的含义和出现的情况做个简单的说明,以便于今后的系统管理和维护。
分析上面的9种状态不难看出,其实独立的状态只有open、expired、locked、expired(grace)、locked(timed) 5种形式。其他4种不过是前面几种形式的组合而已。

或者也可以这样理解:

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

1、基本状态(前五种为基本状态:0 open、1 expired、2 expired(grace)、4 locked(timed)、8 locked);

2、组合状态(后四种为组合状态:5 expired & locked(timed)、6 expired(grace) & locked(timed)、9 expired & locked、10 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,被系统自动锁定.

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