oracle数据库Profile设置及audit异常账户


一、背景

近期进行了安全整改,对于启用了策略控制的用户来说可能会碰到账户经常被锁定。导致账户被锁定的原因很多,有的因为密码过期,有的是手动登陆失败达到指定的次数,有的是程序使用了错误的密码重连,也有可能是数据库被攻击。本文将带你定位Oracle账户锁定原因及简单处理方法。

二、原理

 不少同事提到相同的问题,上次给给位的脚本执行以后会不会对现有的用户有影响,对数据库有什么影响,会不会影响性能等。上次给各位的是一个profile脚本,这个profile是基于oracle自己的utlpwdmg.sql修改而成的。

那么什么是profile呢?我简单的画了一个图,如下图1所示,简单来讲profile是对用户账户的一个描述,这个描述定义了一个账户的属性如账户的的生命周期,登陆失败的次数,使用的密码校验方法,账户锁定时间等。Oracle账户的默认会有一个名称为default的profile。


                                       图1

我们可以通过语句来查询默认的Profile有哪些属性。

1.  SQL> select * from dba_profiles whereprofile='DEFAULT' and resource_type='PASSWORD';
2.   
3.  PROFILE         RESOURCE_NAME                  RESOURCE LIMIT
4.  --------------------------------------------- -------- --------------------
5.  DEFAULT         FAILED_LOGIN_ATTEMPTS          PASSWORD 10
6.  DEFAULT         PASSWORD_LIFE_TIME             PASSWORD 180
7.  DEFAULT         PASSWORD_REUSE_TIME            PASSWORD UNLIMITED
8.  DEFAULT         PASSWORD_REUSE_MAX             PASSWORD UNLIMITED
9.  DEFAULT         PASSWORD_VERIFY_FUNCTION       PASSWORD NULL
10. DEFAULT         PASSWORD_LOCK_TIME             PASSWORD 1
11. DEFAULT         PASSWORD_GRACE_TIME            PASSWORD 7

新建的profile就如同在操作系统里新建了一个文件夹,如果不把文件放到这个文件夹里的话,这个文件夹就是空的。上次的Profile就是如此,为了更安全的管理数据库可以将部分维护用户放到这个文件夹中来。下表是建立profile时的一些属性。

参数名称

说明

默认值

建议值

PASSWORD_LIFE_TIME

账户修改时间

180天

120天

PASSWORD_LOCK_TIME

账户锁定时间

1天

30分钟

PASSWORD_REUSE_MAX

最大可用次数

Unlimited

Unlimited

PASSWORD_REUSE_TIME

密码重用天数

Unlimited

Unlimited

PASSWORD_GRACE_TIME

延期天数

7

7

FAILED_LOGIN_ATTEMPTS

登录失败次数

10

10

PASSWORD_VERIFY_FUNCTION

密码校验方法

Null

verify_function

 

三、实验步骤

接下来我们简单的做一个实验帮助大家理解,Profile是如何工作,并且在用户账户被锁的如何快速定位账户锁定的原因。

u  首先创建一个u01用户

SQL> create user u01 identified by u01;

u 给用户必要的权限

SQL> grant connect,resource to u01;

u 建立名称为SAFE_CONTROL的profil为测试方便这里的密码失败次数为3

SQL>CREATE PROFILEsafe_control LIMIT PASSWORD_LIFE_TIME 120 PASSWORD_GRACE_TIME 7 PASSWORD_REUSE_TIMEUNLIMITED PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 PASSWORD_VERIFY_FUNCTIONverify_function;

SQL> select * from dba_profiles whereprofile='SAFE_CONTROL' and resource_type='PASSWORD';--查看这个profile建立的相关属性
PROFILE         RESOURCE_NAME                  RESOURCE LIMIT
--------------------------------------------- -------- --------------------
SAFE_CONTROL    FAILED_LOGIN_ATTEMPTS          PASSWORD 3
SAFE_CONTROL    PASSWORD_LIFE_TIME             PASSWORD 120
SAFE_CONTROL    PASSWORD_REUSE_TIME            PASSWORD UNLIMITED
SAFE_CONTROL    PASSWORD_REUSE_MAX             PASSWORD UNLIMITED
SAFE_CONTROL    PASSWORD_VERIFY_FUNCTION       PASSWORD VERIFY_FUNCTION
SAFE_CONTROL    PASSWORD_LOCK_TIME             PASSWORD 1
SAFE_CONTROL    PASSWORD_GRACE_TIME            PASSWORD 7

u 查看u01用户的账户属性,可以看到默认的profile系统自带的default

SQL> select  username,account_status,expiry_date,profilefrom dba_users where username='U01';
USERNAME        ACCOUNT_STATUS       EXPIRY_DA   PROFILE
--------------------------------- ---------    ----------------------------
U01             OPEN                 27-MAR-17      DEFAULT

SQL> select  username,account_status,expiry_date,profilefrom dba_users where username='U01';
USERNAME        ACCOUNT_STATUS       EXPIRY_DA   PROFILE
--------------------------------- ---------    ----------------------------
U01             OPEN                 27-MAR-17      DEFAULT


u 更改u01用户的profile

 <pre name="code" class="sql">SQL> alter user u01 profile safe_control;--将用户的profile设置为safe_control

User altered.

 
 

 SQL> select  username,account_status,expiry_date,profilefrom dba_users where username='U01';--查看是否已修改
USERNAME       ACCOUNT_STATUS       EXPIRY_DA    PROFILE
---------- --------------------   ---------    ---------------
U01             OPEN                 26-JAN-17      SAFE_CONTROL


u 接下来验证Profile是否生效,是用错误密码登陆两次

SQL> conn u01/u001
ERROR:
ORA-01017:invalid username/password; logon denied
Warning:You are no longer connected to ORACLE.

SQL> conn u01/u001
ERROR:
ORA-01017:invalid username/password; logon denied

u 查看是否有登录失败的记录

 SQL> selectsessionid,userid,userhost,comment$text,spare1,to_char(ntimestamp#+1/3,'yyyy-mm-ddhh24:mi:ss') logint from sys.aud$ where userid='U01'and returncode=1017 orderby ntimestamp# desc;
 –-在没有启用对u01用户审计的情况下无法对用户的登录状态进行审计。
  no rowsselected


u 第三次使用错误密码登陆u01用户

SQL> conn u01/u001
ERROR:
ORA-01017:invalid username/password; logon denied

u 第四次输入正确密码后数据库提示变成了账户被锁定

SQL> conn u01/u01
ERROR:
ORA-28000: the account islocked

u 查看u01用户登陆失败次数

SQL> select lcount from sys.user$ wherename='U01';
    LCOUNT
----------
3

–-得到的结果是我们设定FAILED_LOGIN_ATTEMPTS的值,此时账户已经被锁定。

u 发生锁定后首先对用户进行解锁

SQL>alter user u01 account unlock;--解锁用户账户
User altered.
SQL> select  username,account_status,expiry_date,profilefrom dba_users where username='U01';--查看u01账户状态
USERNAME   ACCOUNT_STATUS    EXPIRY_DA   PROFILE
---------  -------------     ---------   ---------------
U01             OPEN          26-JAN-17    SAFE_CONTROL


u 开启对u01用户的审计

SQL> audit session by u01 whenever notsuccessful;
Auditsucceeded.

u 再次使用用错误密码登录

 SQL> conn u01/u001
ERROR:
ORA-01017:invalid username/password; logon denied

u 查看是哪个个用户,哪一个IP导致的失败登陆

SQL> select sessionid,userid,userhost,comment$text,spare1,to_char(ntimestamp#+1/3,'yyyy-mm-dd hh24:mi:ss') logint from sys.aud$ where userid='U01'and returncode=1017 order by ntimestamp# desc;
SESSIONIDUSERID   USERHOST               COMMENT$TEXT                 SPARE1   LOGINT
------------------ ---------------------- ---------------------------- ----------------------------
720504 U01      oddpc.us.oracle.com   Authenticated by: DATABASE  oracle   2016-09-28 14:25:52

u 可以看到登录用户的IP和登录时间已经被记录进来了,关闭审计。

SQL> noaudit session by u01;-–关闭掉对用户的审计        
Noaudit succeeded.

四、实验总结

oracle数据库的审计功能可以做到很细力度的审计,除了对用户的审计外,还可以对表,对DML语句甚至是对字段的开启审计功能。通过这些功能我们能及时发现数据库账户的安全情况。也及时定位导致账户锁定的原因。制定相应的因对方案。保障数据库的安全。在实际生产中应该根据用户性质,启用合适的限制策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值