【VIP专享】11g新特性密码安全与过期策略
- 格式:pdf
- 大小:371.12 KB
- 文档页数:9
当用户登陆oracle数据库时,需要提供密码,用以验证用户。
在oracle 11g以前,数据库对用户密码的复杂度是没有要求的。
从oracle 11g开始,数据库对用户密码进行了非强制的要求:
1、密码至少包含八个字符
2、密码由字母和数字组成
3、密码由字母开头
4、密码至少包含一个大写字符、一个小写字符和一个数字
就像我们说的,这个密码要求并不是强制的,你仍然可以继续使用简单的数据库密码,不去理会oracle数据库的建议。
但是oracle 数据库还是强制增加了一些密码策略。
例如,在oracle 11g这个版本的数据库中,一个密码的有效期是180天。
在超过180天后,还有7天过期提醒,在这7天内,你可以随时修改密码。
如果仍然不修改密码,用户密码将过期,账户会被锁定。
这种情况下,你只能通过数据库管理员,为用户修改密码,并解锁账户。
MySQL设置⽤户密码过期策略1.在MySQL运⾏时可以使⽤超级权限修改此配置:mysql> SET GLOBAL default_password_lifetime = 90;Query OK, 0 rows affected (0.00 sec)还可以使⽤ALTER USER命令为每个具体的⽤户账户单独设置特定的值,它会⾃动覆盖密码过期的全局策略。
要注意ALTER USER语句的INTERVAL的单位是“天”。
ALTER USER ‘testuser’@‘localhost' PASSWORD EXPIRE INTERVAL 30 DAY;#配置⽂件[mysqld]default_password_lifetime=90or#命令⾏全局修改mysql> SET GLOBAL default_password_lifetime = 90;Query OK, 0 rows affected (0.00 sec)mysql>mysql> show variables like "default_password_lifetime";+---------------------------+-------+| Variable_name | Value |+---------------------------+-------+| default_password_lifetime | 90 |+---------------------------+-------+2.设置单个密码可重复使⽤时间和可重复使⽤的间隔次数-- 设置密码为每间隔5次才可以重复使⽤mysql> create user yeyz3@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz3' password history 5;Query OK, 0 rows affected (0.01 sec)-- 设置密码为每隔5天才可以重复使⽤mysql> create user yeyz4@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz4' password reuse interval 5 day;Query OK, 0 rows affected (0.01 sec)-- 设置密码为每隔5天可以重复使⽤或者每个5次才可以重复使⽤,取最严格的那个条件mysql> create user yeyz5@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz5' password reuse interval 5 day password history 5;Query OK, 0 rows affected (0.01 sec)-- 使⽤默认的全局密码可重复使⽤策略,也就是password history参数和password reuse interval参数mysql> create user yeyz6@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz6' password reuse interval default password history default;Query OK, 0 rows affected (0.01 sec)3.让⽤户使⽤默认的密码过期全局策略:ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE DEFAULT;4.全局设定mysql> SET GLOBAL default_password_lifetime = 90;单个⽤户设定为每个具体的⽤户账户单独设置特定的值ALTER USER ‘test’@‘localhost‘ PASSWORD EXPIRE INTERVAL 30 DAY;禁⽤密码过期:ALTER USER ‘test‘@‘localhost‘ PASSWORD EXPIRE NEVER;让⽤户使⽤默认的密码过期全局策略:ALTER USER ‘test‘@‘localhost‘ PASSWORD EXPIRE DEFAULT;设置⽤户密码过期mysql> ALTER USER ‘test‘@‘localhost‘ PASSWORD EXPIRE;查看⽤户是否过期select user,host,password_expired,password_last_changed,password_lifetime from user; password_expired:枚举值,设置⽤户密码是否过期的开关,默认为N。
批处理SQL语句及Oracle11G密码过期解决因为要做测试,需要批处理文件来插入数据.所以需要在dos下连接数据库并插入数据,包含两个文件:文件1:test.bat,内容如下:****************说明:sqlplus @sqlfile,注意@前边有个空格,也可以是sqlplus / as sysdba @sqlfile文件2:T est.sql,内容如下:INSERT INTO table_name(.....)VALUES(.....);commit;exit;说明:插入数据,提交,然后使用exit退出dos环境【问题描述】使用sqlplus登陆oracle数据库时提示“ORA-28002: 6 天之后口令将过期”。
【原因/触发因素】由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致【解决方案:修改对应用户的profile文件属性】1、查看用户的proifle是哪个,一般是default:sql>SELECT username,PROFILE FROM dba_users;2、查看指定概要文件(如default)的密码有效期设置:sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';3、将密码有效期由默认的180天修改成“无限制”:sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;修改之后不需要重启动数据库,会立即生效。
4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;已经被提示的帐户必须再改一次密码,举例如下:sqlplus / as sysdbasql> alter user username identified by <原来的密码> ----不用换新密码PS:ORACLE Profile简介(转自)一、目的:Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
服务器安全管理制度中的密码策略与安全性要求在服务器安全管理制度中,密码策略是非常重要的一环,它直接关系到服务器系统的安全性和稳定性。
本文将从密码策略的设定、安全性要求以及密码管理的注意事项等方面展开讨论。
**一、密码策略的设定**1.1 密码长度要求:密码长度是密码安全性的基本保障之一,一般情况下,密码长度应该不少于8位,且包含大小写字母、数字和特殊字符。
1.2 密码复杂度要求:密码复杂度包括密码中是否包含大小写字母、数字、特殊字符等,复杂度越高,密码破解难度越大。
1.3 密码有效期要求:为了增加密码的安全性,一般要求用户定期更改密码,比如每3个月更换一次密码。
1.4 密码历史记录要求:保留一定次数的历史密码记录,防止用户频繁更改密码,避免使用过于简单的密码。
**二、安全性要求**2.1 强制密码策略:对所有用户强制执行密码策略,确保所有用户都遵守密码规则,避免出现弱密码、默认密码等安全漏洞。
2.2 密码加密存储:存储用户密码时,必须进行加密处理,避免密码泄露导致安全风险。
2.3 多因素认证:在可能的情况下,采用多因素认证,增加用户登录的安全性。
2.4 登录尝试次数限制:设置登录尝试次数限制,防止暴力破解密码的攻击。
**三、密码管理的注意事项**3.1 定期审核密码策略:定期审核密码策略的合理性和有效性,根据实际情况进行调整和优化。
3.2 定期评估密码安全性:对密码强度进行评估和测试,确保密码符合安全性要求。
3.3 用户密码培训:为用户提供密码安全培训,教育用户密码的重要性和正确的密码使用方法。
3.4 安全审计与监控:建立安全审计和监控机制,对密码管理进行实时监测和分析,及时发现并解决潜在安全问题。
通过以上措施,服务器安全管理制度中的密码策略将更加完善,有效提升服务器系统的安全性和防护能力,确保服务器数据和信息的安全性。
同时,也提醒各用户要加强密码保护意识,确保密码的安全使用和管理。
【字数超出限制,省略部分内容】。
密码过期邮件提醒解决方案目录前言 (3)简介 (3)安装条件 (3)安装 (4)配置 (7)验证 (12)报告 (13)结束语 (15)前言相信绝大多数活动目录管理员经常遇到员工因没有及时修改密码导致密码过期而打来的求助电话。
尽管管理员可以设置密码过期提醒策略,以便域内用户在登录Windows的时候收到密码过期提醒,从而提示用户更改密码,但是这只适合在已入域计算机上登录的情况。
如果是通过AD账号VPN拨入;通过AD账号进行文件服务器访问;通过Outlook进行邮件收发等诸多情况下(OWA2007例外,它自带密码过期提醒功能),用户都不能很好的提前知道自己的账号密码即将过期,以致忘记及时修改密码。
所以,如何在密码过期前及时又有效的提醒最终用户,是许多ITPro朋友普遍关心的话题。
在本文中,我将向大家介绍一个很小工具:Password Expiration Notifier,来解决这方面的困扰。
它通过周期性的定期检查所有域账号,并筛选出密码即将过期的账号,然后通过电子邮件的方式将友好的修改密码提示信息发送给这些账号的方式来达到我们的需求。
简介Password Expiration Notifier拥有两个版本:免费版和收费版。
如下是它们的详细区别:在本文中,我将使用最新收费版本V2.0来进行评估演示,20天的时间足够我们对这个小工具评估个通透了。
如果您想在生产环境中使用又不想花钱的话,请使用免费版本或去网上下载附带破解补丁或算号器的V1.9版本。
安装条件操作系统要求:•Windows XP (32-bit or 64-bit)•Windows Server 2003 (32-bit or 64-bit)•Windows Vista (32-bit or 64-bit)•Windows Server 2008 (32-bit or 64-bit)软件要求:• .Net Framework 2.0 or later•Windows Installer 3.1 or later注:1.在本演示中,我的环境为Windows Server 2008 X64 企业版+ Exchange Server 2007 X64 企业版。
什么是Oracle11g CVE-2004-2761?1. Oracle11g是什么?Oracle11g是由Oracle公司(甲骨文)开发的一款关系数据库管理系统(RDBMS),它是Oracle数据库系统的一个版本,于2007年推出。
它包含了许多高级特性,如数据压缩、增强的安全性、高级数据分析等,是业界广泛使用的数据库管理系统之一。
2. CVE-2004-2761是指什么?CVE,即“通用漏洞披露”(Common Vulnerabilities and Exposures),是一种为公众提供标准标识符以确定漏洞和公开的安全问题的列表。
每个CVE项都拥有一个唯一标识符,以便进行跟踪。
而CVE-2004-2761是指Oracle数据库系统中的一个特定漏洞。
3. Oracle11g CVE-2004-2761的描述Oracle数据库中的CVE-2004-2761是一个已知的安全漏洞,它可能允许攻击者对系统进行未经授权的访问、数据泄露或其他恶意行为。
这一漏洞被认为是比较严重的,因为它可能会影响数据库的完整性和机密性。
4. 如何防范Oracle11g CVE-2004-2761漏洞?针对CVE-2004-2761漏洞,Oracle公司推出了相关的安全补丁程序,以修复这一漏洞。
管理员和用户应该确保他们的Oracle数据库系统已经安装了最新的补丁程序。
也建议加强数据库的访问控制、监控和审计,从而降低系统遭受攻击的风险。
5. CVE-2004-2761的影响如果攻击者利用CVE-2004-2761漏洞成功攻击了Oracle数据库系统,可能会导致系统崩溃、数据泄露、信息篡改等严重后果。
受影响的组织和个人还可能面临法律责任、商业损失等问题。
6. 结语Oracle11g CVE-2004-2761是一种严重的数据库安全漏洞,可能会对受影响的系统和数据造成损害。
用户和管理员应该重视此漏洞,并采取相应的措施来确保数据库系统的安全。
一.密码安全为了遵守各种安全性和隐私规定,必须使用更安全的口令。
如果口令非常短或仅包含有限的字符,则对于强力攻击就很脆弱,而包含较多不同字符的较长口令就很难被猜出或获得。
在Oracle Database 11g中,口令的处理方式与早期版本中的处理方式有所不同:(1) 口令区分大小写。
口令中使用的大写字符和小写字符现在是不同的字符。
(2) 口令可以包含未用引号括起来的多字节字符。
如果口令包含除$、_ 或# 外的任何特殊字符,则必须用引号括起来。
(3) 口令始终通过散列算法传递,然后作为用户身份证明进行存储。
用户提供口令时,系统会对其进行散列运算,然后将其与存储的身份证明进行比较。
在Oracle Database(4) 11g 中,散列算法是早期版本数据库中使用的公共算法SHA-1。
SHA-1 是一种使用160 位密钥的较强算法。
(5) 口令始终使用salt。
如果输入内容相同,散列函数将始终生成相同的输出。
Salt是添加到输入中的唯一(随机)值,用于确保输出身份证明是唯一的。
OracleDatabase 11g 中的口令:(1) 区分大小写(2) 包含更多的字符(3) 使用更安全的散列算法(4) 在散列算法中使用salt用户名仍是Oracle 标识符(最多30个字符,不区分大小写)。
之前整理的Blog:Oracle10g/11g 密码策略用户口令大小写敏感说明/tianlesoftware/article/details/7383110二.自动安全配置Oracle Database11g 使用由Internet 安全中心(CIS) 基准推荐的特定安全功能安装和创建数据库。
与10gR2 的默认安装相比,CIS 推荐的配置更安全,而且开放程度足以使大多数应用程序都能成功运行。
许多客户已采用了此基准。
CIS 基准的一些建议可能与一些应用程序不兼容。
2.1 Profile安全默认配置使用DatabaseConfiguration Assistant (DBCA) 创建自定义数据库时,可以指定Oracle Database11g 的默认安全配置。
问题11g, 默认情况FAILED_LOGIN_ATTEMPTS的值为10。
在连续10次错误登录之后,账户将被锁住,不能登录。
SQL> select profile, resource_name, limitfromdba_profileswhere profile = 'DEFAULT'andresource_name = 'FAILED_LOGIN_ATTEMPTS'; 2 3 4PROFILE RESOURCE_NAME LIMIT---------- -------------------- ----------DEFAULT FAILED_LOGIN_ATTEMPTS 10设置FALIED_LOGIN_ATTEMPTS值为unlimited,即账户不会被锁定。
SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;Profile altered.同时开三个session用错误密码登录同一账户,会造成一个等待事件,在11.2.0.1中该等待事件为row cache lock,据说在11.2.0.2之后中为libray cache lock(有待验证),实际上是11.2.0.1的一个bug:Bug 9720182: DUE TO ROW CACHE LOCK WAIT EVENTS IN DATABASE APPLICATION GOT HUNG,该bug在11.2.0.2中得到解决。
SELECT SID, USERNAME, PROGRAM, EVENT, wait_time, SECONDS_IN_WAITFROM V$SESSIONwhere OSUSER = 'JackLu'and program <> 'plsqldev.exe';在只有个session尝试登录时候,没有row cache lock的等待事件。
密码安全与过期策略
内容介绍
数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到黑客的攻击,而这些数据库又保存着非常重要的数据,象银行、通信等数据库,后果将不堪设想。
oracle数据库使用了多种手段来保证数据库
的安全性,如密码,角色,权限等等,今天我们来详细的来阐述一下关于oracle 的密码问题,当然我们今天来详细说的并不是oracle的安全密码机制如何的强大等等,恰恰相反我们需要说明的是当我们在oracle密码过期后如何在不修改密码的情况下,使密码重新有效。
在介绍前我们先来说一个案例,某客户数据库做安全加固,针对profile
修改了部分password的安全机制,其中最重要的一点就是设置了
PASSWORD_LIFE_TIME(该参数设定密码过期时间)这一个参数,而当该参数设置完后,客户又没有根据设定的安全机制指定一个良好的人工密码周期性管理策略,随着PASSWORD_LIFE_TIME 参数所设定的时间到期后,数据库将该用户locked,导致业务无法正常连接,从理论上来说,密码既然过期了,那么重置密码是唯一的手段,但是从一定程度上来说,重置密码意味着大量的中间件需要去修改,对于业务逻辑不熟悉的人来说,还是存在必然的风险,检查后发现客户并没有设置PASSWORD_REUSE_TIME(该参数设定为相同密码重用时间),既然该参数并没有设置,那么我们可以考虑通过一个临时密码来作为中间密码,通过中间密码进一步重新设置原密码。
但是这时候又一个问题出现了,客户并不知道该业务用户密码。
这又从一定程度上给问题的解决造成了麻烦。
本节通过一个较为巧妙的方法来重置oracle的密码。
概念普及
在详细说明本节内容的情况下,需要普及一些小的知识点,oracle在对于密码有效期等问题的管理上通过profile文件来进行管理。
并默认一个default 的profile文件,在oracle 9i以及以前版本,oracle对于默认的default profile文件参数值均为UNLIMITED,在10g版本中,将FAILED_LOGIN_ATTEMPTS 的值默认设置为10次,也就是说在连续10次输入错误密码后,oracle将锁定该用户,直到用户被解锁为止。
从11g开始,oracle对密码文件的管理策略增加了很多,很多之前被设置了UNLIMITED的参数,在11g中都定义了相应的值,虽然这一新特性增加了oracle密码的安全机制,但是也从一定程度上对我们管理产生影响。
首先我们来说明一下oracle的profile 中关于密码这一部分的内容。
(该默认的profile取自oracle11g环境)
详细解释一下以上参数值:
PASSWORD_LIFE_TIME 180 --口令的生命周期,超过这段时间口令可能会自动过期,是否过期要看是否设定了PASSWORD_GRACE_TIME
PASSWORD_GRACE_TIME 7 --接着PASSWORD_LIFE_TIME特性,如果
PASSWORD_LIFE_TIME的期限已到,那么PASSWORD_GRACE_TIME 的设置是对口令生
命周期的一个grace(宽限或者延续),口令到期之后,继续可以使用的天数,在这段时间内如果我们登录系统,会有提示,提示系统在几天内过期
PASSWORD_REUSE_TIME UNLIMITED --这个特性限制口令在多少天内不能重复使用,默认值为UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED --这个特性是针对PASSWORD_REUSE_TIME的,说明要想在PASSWORD_REUSE_TIME这个参数指定的时间内重复使用当前口令,那么至少需要修改过口令的次数(修改过的口令当然肯定需要和当前口令不同,因为毕竟还有PASSWORD_REUSE_TIME 特性的限制)
FAILED_LOGIN_ATTEMPTS 10 --这个比较好理解,不知道口令的话尝试登录的次数,达到这个次数之后账户被自动锁定
PASSWORD_LOCK_TIME 1 --接着FAILED_LOGIN_ATTEMPTS参数,口令被自动锁定的时间,达到这个时间之后,下次登录时系统自动解除对这个账户的锁定
以上即为oracle对于profile中密码管理的一些参数解释。
可以看到oracle一共提供了9种状态,而九种状态可分为两类:1.基本状态;
2.组合状态。
前五种是基本状态: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。
后四种的组合状态可通过状态号STATUS#获得其状态的两个组合,对于我们常态管理来说我们只需要掌握前面5种即可,以上客户所发生的问题就是由于对于profile的设置导致的密码失效的问题。
巧解密码过期
再上述的客户案例中,安全加固措施固然是好的,但是没有客观考虑到后期密码维护是一个潜在的问题,而在oracle11G中PASSWORD_LIFE_TIME参数从很大一定程度上也会造成上述客户的问题,DBA如果不清楚这一特性很容易造成密码锁定这个问题,当造成了这一问题后如何解决成了一个很大的问题。
在10g或者11g环境中,如果profiles的密码参数被设置后,会导致密码在规定的时间内过期,锁定等。
此时如果我们继续去连接,如果状态变成EXPIRED或者EXPIRED(GRACE)那么当我们连接后,会提示需要重新设定新的密码,并且该会话无法连入数据库,此时如果我们知道该用户的密码,那么DBA只需要手工干预一下,重新设定该密码即可。
在10G环境中,我们仔细查看dba_users这张视图,对应的PASSWORD这个字段,
其实该字段即为我们设置的密码的HASH值,当我们的密码过期或者用户被锁定后,可以通过该字段来巧妙的规避一下该特性。
查看用户信息(10G版本)
我们可以看到,以上的密码进过加密处理后显示为一串无序的HASH值。
而在11G开始,oracle为了凸显密码安全性,将dba_users中的password这一列不再做显示
可以看到,从11G开始,oracle将password这一列给隐藏了
当我们的用户密码过期并且被锁定后,再次登录将会产生报错:用户被锁定,
如下用户:
注意LOCKED和EXPIRED & LOCKED是两个不同的概念,对于LOCKED状态是由于连续的输错密码达到FAILED_LOGIN_ATTEMPTS指定的次数二造成的,对于该种故障,我们只需要简单的给与用户解锁即可,如下:
但是对于EXPIRED & LOCKED状态,这是由于PASSWORD_LIFE_TIME参数导致用户密码过期而造成的锁定,单一的解锁命令无法解决该问题,此处还涉及到PASSWORD_LIFE_TIME 参数造成的密码修改问题。
如下:
我们从上面的实验过程看到,虽然我们将用户解锁,但是用户的状态仅仅从EXPIRED & LOCKED转为EXPIRED,并没有正常的OPEN,从新连接用户提示输入新密码。
此处就产生一个问题,可以想象一下,当提示我们输入新密码时,我们势必需要输入生产用户的原密码,否则将造成业务中间件的密码与修改的密码不一致。
如果此时我
们不知道原密码,势必会造成一定的麻烦。
此时我们就需要dba_users视图中的password字段。
Password字段虽然已经经过oracle的hash运算并加密(oracle密码采用用户名+密码的组合进行HASH加密),但是我们并不是需要知道该密码是什么,只是需要利用该字段HASH值来成功的解锁用户。
对于一个用户赋新的密码,相信大家都很了解:
alter user username identified by password
那么我们就可以利用password的hash值进行巧妙的解锁,如下:
可以看到,虽然我们不知道该用户的密码,但是我们可以在通过password的HASH 值来重置该密码。
而在11G中,oracle为了提高安全性能,将DBA_USERS.password中的值不做显示,默认为空。
如下:
在11G环境中,我们可以通过USER$基表中查询得到该值,如下:
运用同样的命令和方法,我们就可以解锁密码过期而导致的用户锁定。
技术结论
通过以上的方法,我们可以在不知晓用户名密码的情况下,比较巧妙的解锁由于密码过期而导致的用户锁定的情况,虽然我们在上述方法中通过HASH值解锁了用户,但是无论从安全方面抑或是从数据库的持续稳定运行方面考虑,我们都建议用户采用安全合理的密码管理机制,杜绝一切可能的隐患才是作为一名DBA所必须要做到的,在保障数据库安全的同时,维持数据库的正常稳定运行。