设为首页收藏本站
查看: 89|回复: 0

[PHP] oracle11g数据库安全加固须谨慎

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34273
主题
17031
UID
1347
M币
67
贡献
17175

  • 发表于 2018-7-10 23:36:00 | 显示全部楼层 |阅读模式
    oracle11g数据库安全加固须谨慎数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而

    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)
    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;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表