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

所属分类: 数据库 / oracle 阅读数: 1151
收藏 0 赞 0 分享

数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在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,被系统自动锁定.

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

更多精彩内容其他人还在看

Oracle数据库用户的密码过期时间如何修改为永不过期

Oracle的密码过期规则是用Profile来管理的,系统默认只有一个Profile(DEFAULT),该profile的密码过期规则为180天。那么如何修改Oracle数据库用户的密码过期时间为永不过期呢?下面通过本文给大家介绍下
收藏 0 赞 0 分享

oracle中添加删除主键的方法

这篇文章主要介绍了oracle中添加删除主键的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle表字段的增删改、表的重命名及主键的增删改

本文主要介绍了Oracle表字段的增、删、改;表的重命名;主键的增删改查。具有一定的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

在ORACLE中SELECT TOP N的实现方法

这篇文章主要介绍了在ORACLE中SELECT TOP N的实现方法,非常不错,具有参考借鉴价值,需要的朋友参考下
收藏 0 赞 0 分享

修改Oracle监听默认端口号1521的方法

我们都知道,Oracle的监听默认端口是1521,但是如果系统上1521已经被占用或业务要求不用默认端口,又或者是为了安全,这个时候我们就需要修改监听的默认端口。下面这篇文章主要介绍了修改Oracle监听默认端口号1521的方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

直接拷贝数据文件实现Oracle数据迁移

Oracle 数据迁移是比较麻烦的,对菜鸟来说更是如此。最近由于更换服务器,需要将Oracle迁移到另外一台机器,在两个服务器环境相同,以及 Oracle版本相同的前提下,通过直接拷贝数据文件到新服务器,就可以直接迁移成功。这里记录一下迁移步骤。需要的朋友可以参考。
收藏 0 赞 0 分享

centos 6.5下安装oracle 11gR2与Oracle自动启动的配置

CentOS 下安装 Oracle 是一件比较麻烦的事情,下面这篇文章主要介绍了在 centos 6.5下安装oracle 11gR2的前的配置步骤,以及安装完成后,如何设置为随系统自动启动。配置完成后,启动图形化安装,没有什么可说的,本文就没有一一截图。需要的朋友可以参考借鉴。
收藏 0 赞 0 分享

oracle查看执行最慢与查询次数最多的sql语句

这篇文章主要给大家介绍了oracle查看执行最慢与查询次数最多的sql语句,文中给出完整的示例代码,相信对大家的学习或者工作具有一定的参考价值,有需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

Linux中Oracle启动侦听报错TNS:permission denied的解决方法

这篇文章主要介绍了Linux中Oracle启动侦听时报错TNS:permission denied的解决方法,文中给出了详细的解决方法,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

全面解析Oracle Procedure 基本语法

这篇文章主要介绍了Oracle Procedure 知识,包括oracle的存储过程注意事项方面的内容,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多