Oracle 11g数据库中用户密码安全管理的增强的总结(与oracle10g对比)
在oracle11g的加密密码已经不见了,官方提高了安全性,在oracle10g,如果要查看一下某用户加密后的密码,操作如下:
SYS@ORA10G>SELECT username,password FROM dba_users where username=’SCOTT’; USERNAME PASSWORD —————————— —————————— SCOTT F894844C34402B67 在oracle11g中,那就是在dba_users中的password,加密的密码字段已经被遗弃了(This column is deprecated,源自官方文档),如下: 查看scott用户的密码,发现password里面是空的。 SYS@ORA11GR2>SELECT username,password FROM dba_users where username=’SCOTT’; USERNAME PASSWORD —————————— —————————— SCOTT
在11g中,Oracle在口令安全方面做了进一步的增强,Oracle 11g中的用户口令:
■区分大小写
■包含更多的字符
■使用更安全的散列算法
■在散列算法中使用 salt
用户名仍是 Oracle 标识符(最多 30 个字符,不区分大小写)
[color=darkred]说明: 安全口令支持
为了遵守各种安全性和隐私规定,您必须使用更安全的口令。如果口令非常短或仅包含有限的字符,则对于强力攻击就很脆弱,而包含较多不同字符的较长口令就很难被猜出或获得。在 Oracle Database 11g 中,口令的处理方式与早期版本中的处理方式有所不同:
口令区分大小写。口令中使用的大写字符和小写字符现在是不同的字符。
口令可以包含未用引号括起来的多字节字符。如果口令包含除 $、_ 或 # 外的任何特殊字符,则必须用引号括起来。
口令始终通过散列算法传递,然后作为用户身份证明进行存储。用户提供口令时,系统会对其进行散列运算,然后将其与存储的身份证明进行比较。在 Oracle Database 11g 中,散列算法是早期版本数据库中使用的公共算法 SHA-1。SHA-1 是一种使用 160 位密钥的较强算法。
口令始终使用 salt。如果输入内容相同,散列函数将始终生成相同的输出。Salt 是添加到输入中的唯一(随机)值,用于确保输出身份证明是唯一的。
[color=darkred]口令配置
默认情况下:
启用默认口令概要文件
如果连续 10 次登录失败,则锁定该帐户
在升级过程中:
口令不区分大小写(除非进行更改)
使用 ALTER USER 命令时口令区分大小写
创建时:
[color=darkred]口令区分大小写 说明:安全默认配置
使用 Database Configuration Assistant (DBCA) 创建自定义数据库时,可以指定 Oracle Database 11g 的默认安全配置。默认情况下,如果用户使用不正确的口令多次尝试连接 Oracle 实例,则在第三次尝试后该实例将延迟每次登录。这种保护措施适用于从不同的 IP 地址或多个客户机进行的连接尝试。稍后,它将逐渐增加用户可以尝试其它口令的时间间隔,最长时间大约为十秒。 创建数据库时,将启用具有如下设置的默认口令概要文件:
PASSWORD_LIFE_TIME 180
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1
PASSWORD_VERIFY_FUNCTION NULL
Oracle Database 10g 数据库升级后,只有使用 ALTER USER… 命令更改口令后,口令才会区分大小写。
创建数据库时,默认情况下口令区分大小写。
密码复杂性检查
通过执行以下脚本生成密码复杂性检查函数verify_function_11G
@$ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql然后设置profile使用该函数来检查密码即可
ALTER PROFILE default PASSWORD_VERIFY_FUNCTION verify_function_11G;
[color=darkred]设置数据库管理员验证
数据库管理员必须经过验证。在 Oracle Database 11g 中,可以使用新的方法来更安全地执行管理员验证并集中管理这些已授权的用户。此外,区分大小写的口令还应用于已授权用户的远程连接上。可使用下列命令覆盖此默认行为:
orapwd file=orapworcl entries=5 ignorecase=Y
如果担心口令文件易受破坏或难以维护许多口令文件,则可以实施严格验证:
在 Oracle Internet Directory (OID) 中授予 SYSDBA 或 SYSOPER 企业角色。
使用 Kerberos 票证
使用 SSL 证书
要使用严格验证方法,必须将所有 LDAP_DIRECTORY_SYSAUTH 初始化参数设置为 YES。将此参数设置为 NO 可禁用严格验证方法。通过 OID 或 Kerberos 进行的验证还能提供集中管理或
[color=darkred]单一登录功能。
如果配置了口令文件,则可先对其进行检查。用户也可以作为 OSDBA 或 OSOPER 组的成员由本地操作系统进行验证。
有关详细信息,请参阅《Oracle Database Advanced Security Administrator’s Guide 11g Release 1》。
[color=darkred]与安全性相关的几个参数
使用区分大小写的口令: sec_case_sensitive_logon={true | false}防止 DoS 攻击: sec_protocol_error_further_action={ CONTINUE | (DELAY,integer) | (DROP,integer) }
CONTINUE : 这是默认值,就不是進行任何处理
DROP : 去除使用者的登入权限
DELAY : 延长使用者的再入登入的间隔时间,单位是秒
sec_protocol_error_trace_action={ NONE | TRACE | LOG | ALERT }
NONE : 沒有动作
TRACE : 默认值,写入trace中
LOG : 写入alert log中
ALERT : 由dba手动或OEM中设定alert信息防止强力攻击: sec_max_failed_login_attempts={10|1 to unlimited}
可设定不回传oracle版本相关的信息:sec_return_server_release_banner={true | false}