Click here to load reader
Upload
wasecurity
View
1.295
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
§1 Oracle 11g 用户管理新功能
关键字:Oracle、User、password、security
读者级别:初级
作者:赵元杰
概要:做过 Oracle 系统 DBA 的人员都具有这样的体会:每个 Oracle 版本
在用户和口令的安全管理上都存在些差异,特别是 Oracle 11g 版本在管理用户功
能上系统进行了较大的改动。比如:口令可区别大小写、不建议使用默认口令等。
这里给出基于 Oracle 11g 版本的用户创建与口令等的几点安全知识介绍。
§1.1 用户与方案(Schema)
Oracle 系统中的用户是一个可登录到数据库的账户;而方案(schema)或模式是
一组对象的集合名词(或某一用户下所有数据库对象的集合构成一个方案)。当
Oracle 用户具有一定权限后,该用户可创建自己的对象,也可以不创建任何对象。
当用户创建对象后,这个用户就自动成为方案(schema)或模式了。但是,你是否
真正理解 Oracle 系统的 user 与 schema 的细微差异并不重要。
这里讨论的用户与模式主要是让使用 Oracle 系统的人员了解某个用户是否有对
象,用户有对象才能称为 schema,请看下面的语句的结果:
SQL> create user "赵元杰" identified by zhao_ABC_#123 default tablespace users;
用户已创建。
SQL> select username,created from dba_users
2 where username NOT IN (select distinct owner from dba_objects);
USERNAME CREATED
------------------------------------------------------------ --------------
赵元杰 17-2月 -12
MGMT_VIEW 30-3月 -10
NLS_SORT 17-2月 -12
SPATIAL_WFS_ADMIN_USR 30-3月 -10
XS$NULL 30-3月 -10
MDDATA 30-3月 -10
ANONYMOUS 30-3月 -10
DIP 30-3月 -10
APEX_PUBLIC_USER 30-3月 -10
SPATIAL_CSW_ADMIN_USR 30-3月 -10
已选择 10行。
SQL> drop user "赵元杰" ;
用户已删除。
从上面语句获得的结果来看,刚创建的"赵元杰"只是一个普通 Oracle 账户(用户)
而已,它并不是方案。
§1.2 创建用户规范问题
创建 Oracle 系统中的用户(账户)的名称比较随意;比如用户名称可以是普通的字
符与数字串构词,这些字符串可带有双引号,比如:
SQL>
SQL> show user
USER 为 "SYS"
SQL> create user "zhao" identified by zhao_ABC_#123 default tablespace users;
用户已创建。
SQL> drop user zhao;
drop user zhao
*
第 1 行出现错误:
ORA-01918: 用户 'ZHAO' 不存在
SQL> drop user "zhao";
用户已删除。
从上面的样例来看,用户名称带有双引号,则删除时也带有双引号才行,值得提
醒的是:如果你采用带有双引号的方法创建用户的话,那么要访问该用户的对
象也要加双引号,作者在这里建议不要带有双引号。
§1.3 如何使用强口令(Strong Password)
§1.3.1 理解 Oracle 11g 版本默认口令管理
Oracle11g 版本虽然提供了很强安全功能。但是,默认情况,Oracle11g 系统并
没有启用强口令管理,比如:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--
SQL> --使用保留字修改口令
SQL> ALTER user scott identified by SESSION_CACHED_CURSORS ;
用户已更改。
SQL> ALTER user scott identified by RETURING ;
用户已更改。
SQL> --使用保留字给用户命名:
SQL> CREATE user RETURING identified by RETURING ;
用户已创建。
从上面的试验结果来看,我们给出很简单的口令,Oracle 11g 页允许通过,显然,
默认情况下,口令的管理并不严格。
§1.3.2 如何启用 Oracle 11g 强口令管理
Oracle11g 版本与之前版本类似,也提供了严谨的口令管理功能,但是,需要 DBA
进行启用,主要的启用操作非常简单,详细下面的脚本:
--登录到 sysdba
SQL> col profile for a20
SQL> col resource_name for a28
SQL> select * from dba_profiles where resource_type='PASSWORD'
2 order by profile;
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
-------------------- ---------------------------- ----------------
----------------------------------------------------------------------------
----
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
MONITORING_PROFILE PASSWORD_GRACE_TIME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_LOCK_TIME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_REUSE_TIME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_LIFE_TIME PASSWORD DEFAULT
MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
MONITORING_PROFILE PASSWORD_REUSE_MAX PASSWORD DEFAULT
已选择 14行。
上面的查询结果中 PASSWORD_VERIFY_FUNCTION 项为 NULL,表明系统
没有启用严格口令管理。需要 DBA 进行下面的启用操作:
1.以 sysdba 运行 utlpwdmg.sql 脚本:
SQL>
SQL> show user
USER 为 "SYS"
--
SQL> @E:\app\dell\product\11.2.0\dbhome_2\RDBMS\ADMIN\utlpwdmg.sql
函数已创建。
配置文件已更改
函数已创建。
2.以 sysdba 修 改 profile 中 的 口 令 验 证 函 数
(PASSWORD_VERIFY_FUNCTION)项:
SQL>
SQL> --然后设置 profile使用该函数来检查密码即可
SQL> ALTER PROFILE default Limit PASSWORD_VERIFY_FUNCTION verify_function_11G;
配置文件已更改
SQL> create user nls_sort identified by zhao_ABC
2 default tablespace USERS;
create user nls_sort identified by zhao_ABC
*
第 1 行出现错误:
ORA-28003: 指定口令的口令验证失败
ORA-20008: Password must contain at least one digit, one character
SQL> CREATE user nls_sort identified by abc_123_ZHAO#
2 default tablespace USERS;
用户已创建。
3.随时可屏蔽 PASSWORD_VERIFY_FUNCTION严格口令管理功能,你可使用:
--停止密码检验函数:
SQL>alter profile DEFAULT limit password_verify_function null;
§1.4 Oracle 11g 安全性相关参数
一般来说,Oracle 系统增加新功能对应相关的新参数,下面是 Oracle 11g 版本在安全方面
的新增参数的使用说明。
§1.4.1 sec_case_sensitive_logon 参数
一直以来,Oracle 系统的口令不分大小写,但为了安全的增强,Oracle 11g 版本新增加
sec_case_sensitive_logon 参数,以启用口令的大小区别功能。这个参数的语法如下:
sec_case_sensitive_logon={true | false}
当参数设置 为 TRUE 时表示启用口令大小写区别功能。
§1.4.2 防止 Dos 攻击参数
近年来,黑客开始重视数据库的攻击,对于 Oracle 系统来说,为防止 DoS 攻击,新增加
了 sec_protocol_error_further_action 和 sec_protocol_error_trace_action 参 数 ,
sec_protocol_error_further_action 参数的语法为:
sec_protocol_error_further_action={ CONTINUE | (DELAY,integer) | (DROP,integer) }
CONTINUE : 这是默认值,就不是進行任何处理
DROP : 去除使用者的登入权限
DELAY : 延长使用者的再入登入的间隔时间,单位是秒
另外,sec_protocol_error_trace_action 参数的语法如下:
sec_protocol_error_trace_action={ NONE | TRACE | LOG | ALERT }
NONE : 沒有动作
TRACE : 默认值,写入 trace 中
LOG : 写入 alert log 中
ALERT : 由 dba 手动或 OEM 中设定 alert 信息
§1.4.3 防止强力攻击参数
为了防止任何可能的强力攻击时,可设置 sec_max_failed_login_attempts 参数,这个参数语
法如下:
sec_max_failed_login_attempts={10|1 to unlimited}
当设置为 unlimited 时,攻击者可进行多次的试图登录。
§1.4.4 sec_return_server_release_banner
这个参数了设置是否回传 Oracle 版本的相关信息到连接的客户端,语法如下:
可设定不回传 oracle 版本相关的信息:sec_return_server_release_banner={true | false}
当参数设置为 TRUE 时,不回相关信息。
§1.5 Oracle 11g 用户默认口令
Oracle 11g 版本在安全方面除了增加上面的功能外,也对使用默认口令的用户进行监
控,还新增加数据字典 DBA_USERS_WITH_DEFPWD用于记录使用默认口令的用户,下面简单的
试验操作:
--登录到 sysdba
SQL> conn / as sysdba
已连接。
SQL> alter user scott identified by change_on_install;
用户已更改。
SQL> select * from dba_users_with_defpwd where username = 'SCOTT';
USERNAME
------------------------------
SCOTT