-
- 共享账号检查
安全配置编号 | 数据库-ORACLE-配置-1 |
配置名称 | 共享账户检查 |
配置要求内容 | 数据库应按照用户分配账号,避免不同用户间共享账号。共享账号带来管理和操作记录无法对应到各个用户使用者,以造成审计和记录不便,存在安全风险。 |
操作指南 |
新建不同用户参考操作: create user abc1 identified by password1; create user abc2 identified by password2; 建立role,并给role授权,把role赋给不同的用户
abc1和abc2是两个不同的账号名称,可根据不同用户,取不同的名称; |
检查方法 | 查看是否存在共享账户 |
风险提示 | 无 |
回退操作 | 无 |
备注 |
|
-
- 删除或锁定无关账号
安全配置编号 | 数据库-ORACLE-配置-2 |
配置名称 | 删除或锁定无关账户 |
配置要求内容 | 应删除或锁定与数据库运行、维护等工作无关的账号。工作无关的账号会成为安全风险,如若被不适当授权的权限,存在安全隐患。 |
操作指南 | 使用SQL> select username,account_status from dba_users; |
检查方法 | 不存在多余未锁定账户为符合。 |
配置方法 |
alter user username account lock; drop user username cascade; 首先锁定不需要的用户 在经过一段时间后,确认该用户对业务确无影响的情况下,可以删除
Oracle10g默认开启sys,system,dbsnmp,sysman,mgmt_view账户。 |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | 请根据业务需求和管理要求,确定无关账号,并进行锁定或者删除,避免删除一些有用账号。 |
回退操作 |
|
备注 |
|
-
- 登录失败锁定策略
安全配置编号 | 数据库-ORACLE-配置-4 |
配置名称 | 登录失败锁定策略 |
配置要求内容 | Oracle的所有口令控制中,失败的登录尝试项是最重要的。应配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。建议在设置锁定次数的同时设置一个口令锁定时间值,使得超过此值则自动解除账号锁定。 |
操作指南 | 检查用户profile文件; 测试过程中通过尝试多次错误登录,查看是否锁定。 |
检查方法 |
满足以上两项为符合 |
配置方法 | 参考配置操作 设置失败的登录尝试次数,同时设置锁定时间。 为用户建profile,指定FAILED_LOGIN_ATTEMPTS为6,参考例子。 以oracle身份登录,执行以下操作 1.cd $ORACLE_HOME/ rdbms/admin 2.sqlplus "/ as sysdba" SQL> @utlpwdmg.sql SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LOCK_TIME 1 PASSWORD_VERIFY_FUNCTION DEFAULT;
如果连续6次连接该用户不成功,用户将被锁定。 |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | 此操作最好配合口令锁定时间,以免误操作锁定了账号 |
回退操作 | 取消登录失败锁定策略: 1.cd $ORACLE_HOME/ rdbms/admin 2.sqlplus "/ as sysdba" SQL> @utlpwdmg.sql SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS 6 unlimited; |
备注 |
|
-
- 更改默认账号的密码
安全配置编号 | 数据库-ORACLE-配置-5 |
配置名称 | 更改默认账号的密码 |
配置要求内容 | Oracle数据库中的默认大多数账户使用用户名来设置口令,更改数据库默认帐号的密码,不能以用户名作为密码或使用默认密码的账户登陆到数据库。 |
操作指南 |
|
检查方法 | 未使用用户名作为密码或默认密码为符合。 |
配置方法 | 参考配置操作: 可通过下面命令来更改默认用户的密码: ALTER USER XXX IDENTIFIED BY XXX; 下面是默认用户列表: ANONYMOUS CTXSYS DBSNMP DIP DMSYS EXFSYS HR LBACSYS MDDATA MDSYS MGMT_VIEW ODM ODM_MTR OE OLAPSYS ORDPLUGINS ORDSYS OUTLN PM QS QS_ADM QS_CB QS_CBADM QS_CS QS_ES QS_OS QS_WS RMAN SCOTT SH SI_INFORMTN_SCHEMA SYS SYSMAN SYSTEM TSMSYS WK_TEST WKPROXY WKSYS WMSYS XDB |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | 更改数据库口令需要强烈注意,确认是否存在应用程序内置的数据库访问弱口令。 |
回退操作 |
|
备注 |
|
-
- 口令最长生存期要求
安全配置编号 | 数据库-ORACLE-配置-10 |
配置名称 | 口令生存期策略 |
配置要求内容 | 账户口令的生存期不长于90天。周期性地改变口令是一种很好的安全措施。这可以保持攻击者的猜测状态,或者可以从偷窃口令的人那里夺取访问权利 |
操作指南 | 查看用户profile文件PASSWORD_LIFE_TIME参数。 |
检查方法 | 存在alter profile DEFAULT limit PASSWORD_LIFE_TIME 90配置为符合。 注意:到期不修改密码,密码将会失效。连接数据库将不会成功。 |
配置方法 |
为用户建相关profile,指定PASSWORD_LIFE_TIME为90天: alter profile DEFAULT limit PASSWORD_LIFE_TIME 90
自定义口令复杂度要求函数PASSWORD_VERIFY_FUNCTION; 修改其中部分要求长度最短为8位 IF length(password) < 8 THEN raise_application_error(-20002, 'Password length less than 8'); END IF; 修改口令生命周期参数PASSWORD_LIFE_TIME=90; 修改最大登录失败次数参数FAILED_LOGIN_ATTEMPTS=10; 修改登录失败锁定时间参数PASSWORD_LOCK_TIME=1。 |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | 增加额外的管理成本,不及时修改密码会连接数据库不成功。 |
回退操作 | alter profile DEFAULT limit PASSWORD_LIFE_TIME 90 可以整改90天为更长时间。 |
备注 | 数据库口令有效期更改可能给运维工作增加一定负担 |
-
- 启用密码管理策略
安全配置编号 | 数据库-ORACLE-配置-6 |
配置名称 | 启用密码管理策略 |
配置要求内容 | Oracle10g通过用户资源文件对口令进行管理。可以CREATEPROFILE 语句创建用户资源文件,定义口令的生命期。还可以使用PL/SQL 脚本定义口令复杂性验证模型。 该配置项是前几个配置项的合并要求。 |
操作指南 | 查看用户profile文件。 |
检查方法 | 该配置包括以下输出项:
|
配置方法 | 参考配置操作: 缺省这个安全策略是没有启用的。 在用户profile文件中有以下参数是和密码安全有关系的: FAILED_LOGIN_ATTEMPTS:最大错误登录次数 PASSWORD_GRACE_TIME:口令失效后锁定时间 PASSWORD_LIFE_TIME:口令有效时间 PASSWORD_LOCK_TIME:登录超过有效次数锁定时间 PASSWORD_REUSE_MAX:口令历史记录保留次数 PASSWORD_REUSE_TIME:口令历史记录保留时间 PASSWORD_VERIFY_FUNCTION:口令复杂度审计函数。 启用安全策略的示例,具体配置值根据实际需要确定。 以sys用户执行:SQL> @?/rdbms/admin/utlpwdmg.sql 设置举例: CREATE PROFILE app_user2 LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10; |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | 可能某个账号登录失败后,在锁定时间内无法再次登录。 |
回退操作 | 以sys用户执行:SQL> @?/rdbms/admin/utlpwdmg.sql 设置举例: CREATE PROFILE app_user2 LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10; 根据自己的需求再相应的调整。 |
备注 | 具体策略按实际情况制定 |
-
- 断开超时的空闲远程连接
安全配置编号 | 数据库-ORACLE-配置-13 |
配置名称 | 空闲远程连接断开 |
配置要求内容 | 在某些应用环境下可设置数据库连接超时,比如数据库将自动断开超过10分钟的空闲远程连接。 自动断开超过10分钟的空闲远程连接,以防止在长时间远程连接过程中被其他人窃听到敏感信息的泄露。同时方式远程人员在离开时并未锁屏或则有效保护,他人借助此时时间空闲进行违规操作带来不必要的安全风险 |
操作指南 |
|
检查方法 |
|
配置方法 | 参考配置操作: 在sqlnet.ora中设置下面参数: SQLNET.EXPIRE_TIME=10 |
适用版本 | oracle 9.x、oracle 10.x |
风险提示 | 如果应用有长连接的需求存在,该项有一定风险。 |
回退操作 | 根据应用需求设置时间量或者取消此项设置。 |
备注 |
|
-
- 数据字典保护
安全配置编号 | 数据库-ORACLE-配置-8 |
配置名称 | 数据字典保护 |
配置要求内容 | 启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表。数据字典可能包含的信息,例如:数据库设计资料、储存的SQL程序、用户权限、用户统计、数据库的过程中的信息。 启用数据库字典保护达到保护数据库的目的,而普通dba登陆到数据库,不具备访问X$开头的表,以此来加强对数据库的保护 |
操作指南 | 1、以sqlplus‘/as sysdba’登陆到sqlplus环境中; 2、使用show parameter命令来检查参数Show parameter O7_DICTIONARY_ACCESSIBILITY。 |
检查方法 | O7_DICTIONARY_ACCESSIBILITY = FALSE为符合。 |
配置方法 | 参考配置操作: 通过设置下面初始化参数来限制只有SYSDBA权限的用户才能访问数据字典。 O7_DICTIONARY_ACCESSIBILITY = FALSE |
适用版本 | oracle 9.x、oracle 10.x |
风险提示 | 无 |
回退操作 | 无 |
备注 |
|
-
- 限制IP连接监听器
安全配置编号 | 数据库-ORACLE-配置-9 |
配置名称 | 限制IP连接监听器 |
配置要求内容 | 只允许应用IP访问数据库,实行访问控制 |
操作指南 | 在sqlnet.ora中增加 tcp.validnode_checking=yes #允许访问的IP tcp.invited_nodes=(ip1,ip2……) #禁止访问的IP tcp.excluded_nodes=(ip1,ip2……) 配置使只允许对于应用IP访问本数据库 |
适用版本 | 所有 |
风险提示 | 会导致其他未授权服务器无法连接数据库 |
回退操作 | 取消限制 |
备注 |
|
-
- 监听端口修订
安全配置编号 | 数据库-ORACLE-配置-10 |
配置名称 | 监听端口修订 |
配置要求内容 | Oracle默认端口为1521,较易被人猜解,从而实施攻击,需要修订端口号,使其不为1521 |
操作指南 | 修改listener.ora等配置文件将默认的监听端口1521修改成其他端口号,如9460 修改后重启监听服务 |
适用版本 | 所有 |
风险提示 | 可能导致部分数据库报错 |
回退操作 | 将需要修改的配置文件复制保存在备份目录: cp $oracle_home/listener.ora /root/backup20160229/ 需要回退的时候将修改前的备份文件覆盖回配置文件即可: cp /root/backup20160229/listener.ora $oracle_home/listener.ora |
备注 |
|
-
- 限制SYSDBA远程登录
安全配置编号 | 数据库-ORACLE-配置-7 |
配置名称 | 限制SYSDBA远程登录 |
配置要求内容 | 限制具备数据库超级管理员(SYSDBA)权限的用户远程登录。SYSDBA身份是数据库登录认证时的身份标识,并不是Oracle实例中存在的对象角色,这与DBA角色不同。 SYSDBA用户身份的用户通过sqlplus /as sysdba后拥有直接启动/关闭整个数据库系统的权限;如该身份用户具备直接远程登录权限,会给数据库安全带来巨大安全风险,为了规避此安全隐患,需要限制SYSDBA的远程登录。 |
操作指南 |
|
检查方法 |
|
配置方法 |
Oracle的数据库用SYSDBA身份用户登录方式有两种:一为数据库主机直接登录;二为网络远程登录。前者使用OS认证方式;后者使用密码文件认证方式。 具体配置包括: 在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。
完成如上操作后,效果如下: 不能通过Sql*Net远程以SYSDBA用户连接到数据库;
|
适用版本 | oracle 9.x、oracle 10.x |
风险提示 | 此配置影响远程以Sql*Net方式对数据库的管理;因此实际运维工作如需要远程SQLNET方式管理,该配置可不采用。此配置也可能使某些第三方ORACLE管理工具不正常。 |
回退操作 | 取消限制 |
备注 |
|
-
- 审计策略制定
安全配置编号 | 数据库-ORACLE-配置-11 |
配置名称 | 审计策略制定 |
配置要求内容 | 根据业务要求制定数据库审计策略。 通过对db_extended设置audit_trail参数,标准的Oracle审计将捕获精确的SQL执行文本,伴随着为任何绑定变量所使用来针对数据库查询的值 |
操作指南 | 1、检查查初始化参数audit_trail; 2、检查dba_audit_trail视图中或$ORACLE_BASE/admin/adump目录;
|
检查方法 |
满足以上三项为符合。 |
配置方法 | 参考配置操作: 通过设置参数audit_trail = db或os来打开数据库审计,然后可使用Audit命令对相应的对象进行审计设置。 |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x |
风险提示 | AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大,需要注意对服务器性能的影响。 |
回退操作 | 审计级别调低或采用第三方审计 |
备注 |
|
-
- 版本升级
安全配置编号 | 数据库-ORACLE-配置-9 | |
配置名称 | 版本升级 | |
配置要求内容 | 进行版本更新,至ORACLE 11G以上 | |
操作指南 | 从官网上下载相应版本补丁,进行更新。 建议现在测试环境中进行测试。 | |
检查方法 | v$version
SQL> select * from v$version; | |
适用版本 | 10G以下版本 | |
风险提示 | 有可能导致兼容性问题 |
|
回退操作 | 重新部署数据库 |
|
备注 |
|
|
-
- LISTENER
安全配置编号 | 数据库-ORACLE-配置-9 | |
配置名称 | 数据库监听器(LISTENER)的关闭和启动设置密码 | |
配置要求内容 | 为数据库监听器(LISTENER)的关闭和启动设置密码。 Listener.ora这个配置文件可以识别监听器和正在监听的数据库。对监听器配置的更改可以通过对Listener.ora直接编辑或则通过使用ksnrctl运行命令来执行, Listener.ora是一个需要保护的关键文件,尤其是写访问时。 | |
操作指南 | 使用lsnrctl start或lsnrctl stop命令启停listener。 | |
检查方法 | 启停listener需要密码为符合。 | |
配置方法 | 参考配置操作: 通过下面命令设置密码: $ lsnrctl LSNRCTL>change_password Old password: <OldPassword> Not displayed New password: <NewPassword> Not displayed Reenter new password: <NewPassword> Not displayed Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)(IP=FIRST))) Password changed for LISTENER The command completed successfully LSNRCTL>save_config | |
适用版本 | oracle 9.x、oracle 10.x、oracle 11.x | |
风险提示 | 增加管理成本 |
|
回退操作 | 取消密码设置 |
|
备注 |
|
|