写点什么

网络安全等保:Oracle 数据库测评

发布于: 刚刚
网络安全等保:Oracle数据库测评

以下结果以 Oracle 11g 为例,通过 PL/SQL 进行管理,未进行任何配置、按照等保 2.0 标准,2021 报告模板,三级系统要求进行测评。

一、身份鉴别

a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;


sysdba 是 Oracle 数据库的最高权限管理员。通常使用 sqlplus 或 PL/SQL 管理软件进行管理,PL/SQL 为第三方管理软件,但 SQL 查询语句一样。


注:sysdba 如果是本地管理,乱输密码也能登录成功,需要改 sqlnet.ora 文件。


1. 管理员登录数据库时是是否需要输入用户名/口令,不存在空口令;



2. 使用 Select username,account_status from dba_users; 显示所有能登录数据库的用户信息:(),那些是 open 那些是 locked,UID 是否唯一



3. 通过命令 **select * from dba_profiles where resource_type='password';SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_VERIFY_FUNCTION';**如果为 NULL 则为未设置密码复杂度要求。


为了感谢广大读者伙伴的支持,准备了以下福利给到大家:

[一>获取<一]

1、200 多本网络安全系列电子书(该有的都有了)

2、全套工具包(最全中文版,想用哪个用哪个)

3、100 份 src 源码技术文档(项目学习不停,实践得真知)

4、网络安全基础入门、Linux、web 安全、攻防方面的视频(2021 最新版)

6、 网络安全学习路线(告别不入流的学习)

7、ctf 夺旗赛解析(题目解析实战操作)[一>获取<一]



若有设置应为


(1)PASSWORD_LOGIN_ATTEMPTS = 登录尝试次数;(2)PASSWORD_LIFE_TIME = unlimited 未设置口令有效期;(3)PASSWORD_ROUSE_MAX = unlimited 未设置重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数);(4)PASSWORD_VERIFY_FUNCITON = NULL,未设置口令复杂度校验函数;(5)PASSWORD_GRACE_TIME=,口令修改的宽限期天数:7;


b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;


1. 通过输入 SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='FAILED_LOGIN_ATTEMOTS';,查询结果若为’UNLIMITED’则无登录重试次数限制,超过此值用户被锁定。可以通过 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10(重试次数 10 次)



2. 通过输入 SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_LOCK_TIME';, 查询结果若为’unlimited’则无登录失败次数锁定限制。可以通过 ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME 1/24(重试失败后锁定一天)



3. 通过输入 SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='IDLE_TIME';, 查询结果若为’UNLIMITED’则无登录超时限制。



c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;


采用 sqlplus 或 PL/SQL 连接数据库,对数据库进行管理,客户端与服务器端之间通信是加密的,故 Oracle 该项默认符合。


d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。


经访谈管理员,是否采用双因子身份鉴别技术,鉴别技术是什么 。默认都不符合。

二、访问控制

a) 应对登录的用户分配账户和权限;


通过输入**Select username,account_status from dba_users;**语句,主要查看数据库存在那些可用用户,至少得有两个,该测评项就需要 Oracle 中存在至少两个账户,且这两个账户的权限不一样。


1.为用户分配了账户和权限及相关设置情况,主要看可用账户(例如采用“用户权限列表”);2.是否已禁用或限制匿名、默认账户的访问权限。如只有 MGMT_UIEW,SYSTEM,SYS,DBSNMP 为启用状态,其他均为启用状态,则为符合。


b) 应重命名或删除默认账户,修改默认账户的默认口令


在 Oracle 中默认用户最常用的就是 SYS 和 SYSTEM 这两个账户。1.是否已经重命名 SYS、SYSTEM、DBSNMP 等默认帐户名或已修改默认口令,sys 默认口令为 CHANGE_ON_INSTALL;SYSTEM:MANAGER;DBSNMP 的默认口令为:DBSNMP。可以登录测试。


c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在


访谈管理员是否存在多余或过期账户,管理员用户与账户之间是否一一对应通过输入**Select username,account_status from dba_users;**查看是否存在默认帐户 SCOTT/OUTLN/ORDSY 等用户,不存在 acount_status 为 expired 的账户。访谈管理员是否存在共享账户等。示例不符合。



d) 应授予管理用户所需的最小权限,实现管理用户的权限分离··


1. 通过输入**Select username,account_status from dba_users;**查看状态为 open 的用户的用途。是否进行角色划分,是否有多个用户进行管理数据库;2. 通过输入 **select * from dba_tab_privs where grantee='SYS' ORDER BY GRANTEE;**查看 SYS 最高权限授予给那些用户,得知管理用户的权限是否已进行分离;



3. 通过访谈管理员、管理用户权限是否为其工作任务所需的最小权限,是否存在相应的用户权限表。4. 通过输入 select granted_role from dba_role_privs where grantee='PUBLIC'; 返回值( ) 得知 public 是否被授权给用户,有就不符合 ;5. 通过在命令窗口输入 Show parameter O7_DICTIONARY_ACCESSIBILITY;返回值(是否为 false);(该参数设置为 false 为符合,如果用户具有了 any table 权限,则可以访问除 sys 用户之外的其他用户的对象,也就无权访问数据字典基表。)



TIPS: sql 语句在 PL/sql 的文件--》sql 窗口执行,show 等命令语句在命令窗口执行。sqlplus 则不区分。


综上判断符合程度。

e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则

通过访谈管理员,是否由特定账户为登录用户分配角色和权限。是否存在具体的访问规则。

f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级

1.通过访谈数据库管理员,是否制定数据库访问控制策略,访问控制的粒度为数据库表级。此项默认符合。

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

通过访谈数据库管理员: 是否对重要主体和客体设置安全标记。 oracle 自身应该不具备这个功能,可能要依靠操作系统或者第三方的什么软件如 Oracle_Label_Security 来实现了。该项一般默认都不符合。

三、安全审计

a) 应启用安全审计功能,审计覆盖到每个用 户,对重要的用户行为和重要安全事件进行审计

Oracle 自带有审计功能,可以通过 audit_trail 参数来开启使用。1. 通过输入 show parameter audit_trail;返回值默认为 DB,即为普通用户开启审计功能,若为 none 则为未开启状态;



2. 通过输入 **select * from dba_stmt_audit_opts;和 select * from dba_priv_audit_opts;**返回结果如 User_Name 为空值,对这些重要事件开启审计,并且这个审计是针对所有用户的,符合要求。




3. 通过输入 **show parameter audit_sys_operations;**返回结果 audit_sys_operations boolean FALSE 则未对 SYSDBA 或 SYSOPER 特权连接时直接发出的 SQL 语句进行审计,需要开启,默认为 false。



综上分析判断符合程度。

b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息

通过输入 **select * from aud$; **查看审计日志的格式,默认符合。(输入 show parameter dump_dest 得出 backgroup_dump_dest 的值为日志文件的位置。)。下图没有显示完全。


c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等

1. 通过访谈管理员, 是否采取技术措施对审计记录进行定期备份,采用的技术措施及备份策略是怎么样的?如通过 syslog 端口导入到日志服务器。2. 是否只有特定的管理员拥有对审计记录的操作权限,普通用户无法访问审计记录。

d) 应对审计进程进行保护,防止未经授权的中断

Oracle 默认符合此项。1. 通过查看 sysdba、sysoper 权限被授予给了谁,非管理员账户是否可以中断审计进程,审计进程是否进行了保护。2. 通过输入**alter system set audit_trail=none; **得出无法成功即符合。示例为 sysdba 最高权限管理员登录,能够进行操作。需要通过一个普通用户登录,查看此条命令是否能够执行,若能此项就不符合。


四、入侵防范

a) 应遵循最小安装的原则,仅安装需要的组件和应用程序


通过输入**select * from v$option;**得知安装的组件是否多余。value 为 true 为安装了。[图片上传失败...(image-c9a1b2-1634546762405)]


b) 应关闭不需要的系统服务、默认共享和高危端口


此项不适用,数据库不涉及此项。


c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制


通过查看 oracle 的安装路径中的 sqlnet.ora 文件查看 tcp.validnode_checking/tcp/invited_nodes 的配置是否为:tcp.validnode_checking=yestcp,invited_nodes=() 得知是否设置了远程连接 IP。


大部分未设置,基本都是通过远程管理操作系统间接远程数据库。


d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求 8


此项不适用,数据库不涉及此项。


e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞


1、 访谈管理员是否定期或不定期进行漏洞扫描或渗透测试,周期为 ( );2、通过本次漏洞扫描是否发现与数据库相关的高危漏洞,若存在,是否及时进行漏洞修补。


f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警


此项不适用,数据库不涉及此项。

五、恶意代码防范

应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断


此项不适用,数据库不涉及此项。

六、可信验证

可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心


通过访谈管理员,是否采取了可信技术,一般都是未采取。可信技术主要是基于可信芯片、可信根,硬件层面较多。但是现在市面上的产品尚未大量普及。

七、其他控制点

数据完整性、数据保密性、数据备份与恢复、剩余信息保护、个人信息保护均不在此处考虑,放在安全计算环境中的五类数据中统一体现。

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
网络安全等保:Oracle数据库测评