oracle数据库等保测评所需包括内容解析命令
oracle登录身份有三种:normal普通身份、sysdba系统管理员身份、sysoper系统操作员。
sysdba权限:
(1)启动和关闭操作
(2)更改数据库状态为打开/装载/备份,更改字符集
(3)创建数据库
(4)创建服务器参数文件spfile
(5)日志归档和恢复
(6)包括“会话权限”权限
sysoper权限:
(1)启动和关闭操作
(2)更改数据库状态为打开/装载/备份
(3)创建服务器参数文件spfile
(4)日志归档和恢复
(5)包含“会话权限”权限
1、设计五方面内容:身份鉴别、访问控制、安全审计、入侵防范、数据备份恢复。
2、身份鉴别测评项:
(1)查看口令复杂度函数:select * from dba_profiles where
profile=‘DEFAULT’ and RESOURCE_NAME = ‘PASSWORD_VERIFY_FUNCTION’ ;其中 password_verify_function 的值不为unlimited;
Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。
(2)select * from dba_profiles where profile ='DEFAULT’and
resource_name=‘PASSWORD_LIFE_TIME’; 指定同一密码所允许使用的天数password_life_time 不为unlimited。
(3)检查utlpwdmg.sql 中“–check for the minimum length of the password”部分中的“length(password)<”后的值;这个值为8或者以上
C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin
(4)查看是否启用登录失败限制策略:select limit from dba_profiles where profile =’DEFAULT’ and resource_name =’FAILED_LOGIN_ATTEMPTS’;指定在帐户被锁定之前所允许尝试登陆的最大次数 failed_logiin_attempts的值不为UNLIMITED;
(5)查看是否启用登录失败锁定策略:select * from dba_profiles where profile = ‘DEFAULT’ and resource_name =‘PASSWORD_LOCK_TIME’;指定登陆尝试失败次数到达后帐户的锁定时间(以天为单位)password_lock_time的值不为UNLIMITED;
(6)查看是否启用登录超时退出策略: select * from dba_profiles where profile =‘DEFAULT’ and resource_name=‘IDLE_TIME’;IDLE_TIME的值不为UNLIMITED;指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开
(7)查看 initSID.ora(%ORACLE_HOME \db_1\database)中REMOTS_OS_AUTHENT的赋值。如果是FALSE,则符合。如果是TRUE,原厂操作系统认证。
(8)查看listener.ora(%ORACLE_HOME \db_1\NETWORK\ADMIN)文件中的“LISTENER” -“DESCRIPTION”-”ADDRESS_LIST”-”ADRESS”-”PROTOCOL”项目的赋值,应存在PROTOCOL=TCPS(实际为TCP)
(9)查看远程登录:show parameter remote_login_passwordfile;结果为NONE,远程无法登录。其中exclusive 是唯一的数据库密码文件登录。
Value值有三种:
1>NONE:默认值。在这种情况下,oracle会忽略口令文件,并且sysdba(系统管理员)访问只给予本地特许的登录。
2>EXCLUSIVE exclusive该参数说明只有一个数据库可以使用这个口令文件。在这种模式下,口令文件可以包含用于多个特许的oracle账户的口令。这是推荐的操作模式,特别是在运行RMAN时,如果希望将RMAN与来自于远程客户端的数据库连接,则必须使用该参数设置。(RMAN是一种用于备份、还原和恢复数据库的oracle工具)
3>SHARED:该参数说明多个数据库可以使用相同的口令文件。这种模式只能保存SYS用户账户的口令。
(10)dba_profiles各个字段含义:
Resource_parameter部分(RESOURCE_TYPE=KERNEL):
1.Session_per_user:指定限制用户的并发会话的数目。
2.Cpu_per_session:指定会话的CPU时间限制,单位为百分之一秒。
3.Cpu_per_call:指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。
4.Connect_time:指定会话的总的连接时间,以分钟为单位。
5.Idle_time:指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。
6.Logical_reads_per_session:指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
7.Logical_read_per_call:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
8.Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。
9.Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。
Password_parameter部分(RESOURCE_TYPE=PASSWORD):
1.Failed_login_attempts:指定在帐户被锁定之前所允许尝试登陆的的最大次数。
2.Password_life_time:指定同一密码所允许使用的天数。
3.Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,
而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。
4.Password_lock_time:指定登陆尝试失败次数到达后帐户的锁定时间,以天为单位。
5.Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
6.Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,
但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。
3、访问控制测评项:
(1)查看每个登录用户的角色和权限,是否是最小权限。Mgmt_uiew,sys,system,dbsnmp,sysman是open状态,其他用户都为锁定状态。
(2)验证系统用户的默认口令是否修改:
sys : CHANGE_ON_INSTALL
system:manager
dbsnmp:dbsnmp
(3)select username,account_status from dba_users;查看结果中是否存在scott、outln、ordsys等范例数据库账号。应不存在account_status为“expired”的账户,所有账户均为必要的管理账户或数据库应用程序账户,不存在测试账户/临时账户。每一歌数据库账户与实际用户应为一一对应关系。不存在多人共享账户的情况。
(4)对重要主体和客体设置安全标记,并控制主体对安全标记信息资源的访问。检查是否安装oracle label security模块。如果安装,会有LBACSYS用户。
查看是否创建策略: select policy_name,status from DBA_SA_POLICIES;结果存在状态为‘enable’的标签策略
查看是否创建级别:select * from dba_sa_levels order by level_num;返回结果不为空
查看标签创建情况:select * from dba_sa_labels;返回结果不为空
查看策略与模式、表的对应关系:select * from dba_sa_tables_policies; 判断是否针对重要信息资源设置敏感标签,返回结果不为空,且包含重要数据存储表格名称。
4、安全审计测评项:
(1)查看是否开启审计功能:select value from v
p
a
r
a
m
e
t
e
r
w
h
e
r
e
n
a
m
e
=
′
a
u
d
i
t
t
r
a
i
l
′
;
结
果
不
应
该
为
n
o
n
e
。
参
数
取
值
为
t
r
u
e
或
者
d
b
,
将
审
计
结
果
存
入
基
表
,
o
s
利
用
操
作
系
统
审
计
功
能
,
n
o
n
e
或
者
f
a
l
s
e
不
审
计
,
没
有
默
认
值
(
2
)
s
h
o
w
p
a
r
a
m
e
t
e
r
a
u
d
i
t
t
r
a
i
l
;
结
果
应
不
为
n
o
n
e
;
参
数
a
u
d
i
t
t
r
a
i
l
的
值
:
d
b
/
t
r
u
e
:
启
用
审
计
,
并
且
把
审
计
结
果
放
到
数
据
库
的
s
y
s
.
a
u
d
parameter where name ='audit_trail';结果不应该为none。 参数取值为true或者db,将审计结果存入基表,os利用操作系统审计功能,none或者false不审计,没有默认值 (2)show parameter audit_trail;结果应不为none; 参数audit_trail的值: db/true :启用审计,并且把审计结果放到数据库的sys.aud
parameterwherename=′audittrail′;结果不应该为none。参数取值为true或者db,将审计结果存入基表,os利用操作系统审计功能,none或者false不审计,没有默认值(2)showparameteraudittrail;结果应不为none;参数audittrail的值:db/true:启用审计,并且把审计结果放到数据库的sys.aud表中
os:启用审计,并且把审计结果存放在操作系统的数据信息中
db_extended:启用审计,把审计结果存放在数据库的sys.aud
表
中
,
并
且
在
c
l
o
b
列
的
s
q
l
b
i
n
d
和
s
q
l
t
e
x
t
字
段
记
录
额
外
的
信
息
x
m
l
:
启
用
审
计
,
以
x
m
l
格
式
写
所
有
的
审
计
记
录
e
x
t
e
n
d
e
d
:
启
用
审
计
,
在
审
计
跟
踪
中
记
录
所
有
列
,
包
括
s
q
l
t
e
x
t
和
s
q
l
b
i
n
g
值
n
o
n
e
/
f
a
l
s
e
:
禁
用
审
计
(
3
)
s
h
o
w
p
a
r
a
m
e
t
e
r
a
u
d
i
t
s
y
s
o
p
e
r
a
t
i
o
n
s
;
用
于
审
计
S
Y
S
D
B
A
的
活
动
。
不
应
为
f
a
l
s
e
,
应
为
t
r
u
e
。
相
关
的
审
计
信
息
不
会
记
录
在
a
u
d
表中,并且在clob列的sqlbind和sqltext字段记录额外的信息 xml:启用审计,以xml格式写所有的审计记录 extended:启用审计,在审计跟踪中记录所有列,包括sqltext和sqlbing值 none/false:禁用审计 (3)show parameter audit_sys_operations;用于审计SYSDBA的活动。不应为false ,应为true。 相关的审计信息不会记录在aud
表中,并且在clob列的sqlbind和sqltext字段记录额外的信息xml:启用审计,以xml格式写所有的审计记录extended:启用审计,在审计跟踪中记录所有列,包括sqltext和sqlbing值none/false:禁用审计(3)showparameterauditsysoperations;用于审计SYSDBA的活动。不应为false,应为true。相关的审计信息不会记录在aud中,因为有可能此时数据库还未启动,只能记录在操作系统层面的文件中。默认为false,不意味着没有审计信息,像conn / as sysdba这样的操作仍然会被记录。audit_file_dest参数指定的审计信息的文件夹。
将audit_sys_operations设置成true后,那么做为sysdba或sysoper连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。
(4)select sel,upd,del,ins,gra from dba_obj_audit_opts;查看对象审计设置,应不全部为“-/-”。
(5)select * from dba_stmt_audit_opts; 可以用来查看statement审计级别的audit options,即数据库设置过哪些statement级别的审计 (Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句)应不全部为“-/-”
(6)select * from dba_priv_audit_opts;返回权限审计选项。应不全部为“-/-”。
(7)询问是否呀那个限制管理员权限,可以让用户通过命令:
alter system set audit_trail = none 并重启实例关闭审计功能,看是否能成功。测试其他人员无法对审计进程进行开启、关闭操作、并记录。
5、入侵防范测评项:
(1)查看sqlnet.ora文件是否配置参数:tcp.validnode_checking,tcp,invited_nodes;
tcp.validnode_checking = yes
Tcp,invited_nodes=() #运维访问的IP列表,各IP之间用逗号分隔。在sqlnet.ora文件中tcp.validnode_checking = yes
Tcp.invited_nodes 已配置参数ip列表。
C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\sample
(2) 访谈Oracle补丁升级机制,查看补丁安装情况:
#cd $ORACLE_HOME/Opatch
Opatch lsinventory
6、数据备份恢复
select * from dba_profiles where profile =‘DEFAULT’;
select username,account_status from dba_users;
select value from v$parameter where name =‘audit_trail’;
show parameter audit_trail;
show parameter audit_sys_operations;
select sel,upd,ins,gra from dba_obj_audit_opts;
select * from dba_stmt_audit_opts;
select * from dba_priv_audit_opts;