Oracle数据库基线核查(等保二级,适合自查) – 作者:fu福lin林

一、身份鉴别

1.1应提供用户身份标识唯一和鉴别信息复杂度检查功能,保证应用系统中不存在重复用户身份标识,身份鉴别信息不易被冒用

a)应对数据库系统的用户进行身份标识和鉴别

测评方法及步骤:

1)以默认口令或者常见口令尝试登录数据库,查看是否成功,查看是否需要口令以及是否存在空口令

$ sqlplus/nolog

SQL>connuser/password as sysdba

2)或者使用Oracle客户端管理控制台(Enterprise Manager Console)进行登录

3)默认口令包括sys/change_on_install;system/manager,scott/tiger,常用口令包括oracle:admin/oracle;sys:admin:oracle等。(更改用户口令alter user user_name identified by password),或者用select * from dba_users;查看账号口令;

b)数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换;

测评方法及步骤:

1)select username,profile fromdba_user;了解用户使用的profile

2)select * from dba_profiles whereprofile=’default’;查看系统本身的profile的配置参数都有哪些?

PASSWORD_VERIFY_FUNCTIONverify_function为密码复杂度验证函数已经开启。这个oracle默认verify_function()函数,要求口令密码最小长度4、不能和用户名相同、至少有一个字母、数字和特殊字母,旧密码和新密码至少有三位不同。

3)检查utlpwdmg.sql中”– Check for the minimum length of the password”部分中”length (password)

1.2应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施

测评方法及步骤:

1)select limitfrom dba_profiles where resource_name=’FAILED_LOGIN_ATTEMPTS

FAILED_LOGIN_ATTEMPTS:最大错误登录次数

PASSWORD_GRACE_TIME:口令失效后锁定 时间

PASSWORD_LIFE_TIME:口令有效时间

PASSWORD_LOCK_TIME:登录超过有效次数锁定时间

查看有无对各项进行时间/次数上的设置和限制;

1.3当对服务器进行远程管理时,应采取必要措施,防治鉴别信息在网络传输过程中被窃听

测评方法及步骤:

1)询问管理员是否采取加密手段保证数据库的访问信息不被窃听

2)查看数据库安装目录下的\admin\DB_NAME\pfile\initSID.ora中REMOTE_OS_AUTHENT的赋值,确认是否允许管理员对数据库进行远程连接和管理,其他版本用命令“SHOW PARAMETERS AUTH;”记录是否允许远程访问

3)或者图形界面管理中查看打开Oracle客户端管理控制台(Enterprise Manager Console);添加被评估数据库的连接信息,使用sys或system用户登录数据库;在左侧菜单栏中打开“例程”,选中“配置”栏,再选择“一般信息”页面,点击“所有初始化参数”;在弹出的界面中,查看“remote_os_authent”参数行的设置,为是否允许远程连接,如实记录该原始数据或拷屏

4)查看lsnrctl status查看是否存在TCPS协议;

1.4应为数据库系统的不同用户分配不同的用户名,确保用户名具有唯一性

测评方法及步骤:

1)询问管理员,是否为不同的用户分配了不同的账户。可检索账户“selectusername,account_status from dba_users”,并询问是否建立制度,确保不同人员使用不同用户登录数据库系统;

二、访问控制

2.1应提供访问控制功能,依据安全策略控制用户对文件、数据库表等客体的访问

a)应启用访问控制功能,依据安全策略控制用户对资源的访问;

测评方法及步骤:

1)linux下在数据库的操作系统中打开$ORACLE_HOME\bin目录,并找到可执行程序Oracle;

在操作系统中运行命令:ls –al oracle;查看其运行、读写权限;

2)访谈管理员是否有其他方式(如防火墙、ACL、IPsec等方式)进行端口/IP级的访问限制,或者其他方式对数据库访问的控制,并进行验证;

2.2应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限

测评方法及步骤:

1)查看应用账户是否属于DBA组权限

2)select grantee from dba_role_privs where grante_role=’DBA’ and grante not in(‘SYS’,’SYSTEM’,’CTXSYS’,’WmSYS’,’SYSMAN’);

2.3应实现操作系统和数据库系统特权用户的权限分离

测评方法及步骤:

询问管理员是否由不同员工分别担任操作系统管理员与数据库管理员

登录操作系统,查看是否能对数据库系统进行操作

2.4应限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令

测评方法及步骤:

询问管理员:应尽量重命名数据库系统的默认账户,如果部分账户无法重命名,则应加强这些账户的口令强度,确保这些账户不被授权使用

2.5应及时删除多余的、过期的帐户,避免共享帐户的存在

测评方法及步骤:

1、在sqlplus中执行命令

desc dba_users

selectusername,account_status from dba_users where account_status=’OPEN’

2、查看返回结果中是否存在scott、outln、ordsys等范例数据库账号,在windows中或者用图形用户界面找到安全性查看用户状态检查是否有过期、共享帐户存在;

2.6应对重要信息资源设置敏感标记

测评方法及步骤:

1)检查是否安装oracle label security模块(如无,下面步骤可省略)select username from dba_users;查看有无lbacsys的用户,如无,则无安装Oracle Label Security模块

2)查看是否创建策略:select policy_name,statusfrom DBA_SA_POLICIES

3)查看标签创建情况:select * fromdba_sa_lables;

2.7应依据安全策略严格控制用户对有敏感标记重要信息资源的操作

测评方法及步骤:

登录sqlplus,查看用户的标签

select * fromdba_sa_lables

select * fromdba_sa_tables_policies;可让管理员演示选择特定的用户和表进行验证敏感标记功能是否正确;

三、安全审计

3.1应提供覆盖到每个用户的安全审计功能,对应用系统重要安全事件进行审计

a)审计范围应覆盖到服务器和重要客户端上的每个数据库用户;

测评方法及步骤:

检查并记录数据库操作审计的配置策略

show parametersaudit;查看数据库审计的目录及审计是否开启,审计级别

1.windows中打开Oracle客户端管理控制台(Enterprise Manager Console)

2.添加被评估数据库的连接信息,使用sys或system用户登录数据库

3.在左侧菜单栏中打开“例程”,选中“配置”栏,再选择“一般信息”页面,点击“所有初始化参数”

4.在弹出的界面中,查看“audit_trail”参数行的设置,如实记录该原始数据或拷屏。如果为linux系统执行show parameters audit_trail;查看是否开启审计功能

5.进行管理员和一般用户登录登出,查看审计日志是否能正确记录

6.以上条件不满足时,询问管理员是否有第三方数据库审计软件;

b)审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;

测评方法及步骤:

查看AUDIT_TRAIL的值为NONE为关闭审计功能,audit_sys_operations为YES审计系统重要操作;

3.2审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等

测评方法及步骤:

select * fromsys.aud$,select * fromdba_audit_trail,记录审计记录中事件的日期、时间、类型、主体标识、客体标识和结果等记录情况;

3.3应能根据记录数据进行分析,并生产审计报表

测评方法及步骤:

询问管理员是否安装并使用了oracle audit vault等日志分析工具并查看相关报表,或者是否采用了第三方数据库审计软件以及具有报表功能并定期生成报表;

3.4应保护审计进程,避免受到未预期的中断

测评方法及步骤:

询问是否严格限制数据库管理员权限,系统管理员能否进行与审计相关的操作。用户可以通过alter system set audit_trail=’NONE’ scope=spfile;,查看是否成功;

3.5应保护审计记录,避免受到未预期的删除、修改或覆盖等

测评方法及步骤:

询问数据库管理员,是否严格限制用户访问审计记录的权限,如采用audit vault等,或者第三方审计系统,并检查是否定期对审计日志做备份;

四、恶意代码防范

4.1应安装防恶意代码软件或加固具有相应功能的软件,并定期进行升级和更新防恶意代码库

安装最新补丁,确保系统安装了最新的安全补丁。

注意: 在保证业务及网络安全的前提下,并经过兼容性测试后,安装更新补丁。

五、资源控制

5.1应通过设定终端接入方式、网络地址范围等条件限制终端登录

测评方法及步骤:

1.以文本文件的方式,打开操作系统中的数据库服务配置文件“SQLNET.ORA”(数据库目录下的NETWORK\ADMIN\)

查看是否存在如下内容

tcp.validnode_checking=YES

tcp.excluded_nodes=

tcp.invited_nodes=,如存在则对IP地址进行了限制

2.如实记录该原始数据或拷屏

3.如果没有在数据库系统上进行配置,询问是否在防火墙或者其他网络设备/安全设备上进行了相关的配置;

5.2应根据安全策略设置登录终端的操作超时锁定

测评方法及步骤:

查看空闲超时设置,selectlimit from dba_profiles where resource_name=’IDLE_TIME’.查看超时设置,并记录或查看系统概要文件;

5.3应限制单个用户对系统资源的最大或最小使用限度

测评方法及步骤:

执行命令,查看用户使用的profile,select username,profile fromdba_users,查看其限制,set lines 300

查看默认用户的并行会话数和CPU使用时间

select limitfrom dba_profiles where profile=’DEFAULT’;,或CPU_PER_SESSION,IDLE_TIME,’SESSIONS_PER_USER’等各设置

下面是全部可用的参数:

SESSIONS_PER_USER 每个用户名所允许的并行会话数

CPU_PER_SESSION 一个会话一共可以使用的CPU时间,单位是百分之一秒

CPU_PER_CALL 一次SQL调用(解析、执行和获取)允许使用的CPU时间

CONNECT_TIME 限制会话连接时间,单位是分钟

IDLE_TIME 允许空闲会话的时间,单位是分钟

LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块

LOGICAL_READS_PER_CALL 限制SQL调用对数据块的读取,单位是块

COMPOSITE_LIMIT “组合打法”

PRIVATE_SGA 限制会话在SGA中Shared Pool中私有空间的分配

六、数据备份恢复

6.1应提供重要数据的本地数据备份与恢复功能

查看是否有备份文件,以及了解备份机制和恢复机制

若无,需要建立备份文件,进行每日增量、每周全量的备份策略。

6.2应提供异地数据备份功能,利用通信网络将重要数据定时批量传送至备用场地

将备份文件存放异地且确保其有效性,避免出现单点故障后不具备恢复的风险。

来源:freebuf.com 2020-09-14 18:11:58 by: fu福lin林

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论