近期,我们为PFCLScan数据库扫描器新增了约750项安全检查,以支持我们2024年的新版本,这些检查可用于定位任何Oracle数据库中的安全问题。目前,我们拥有大约2000项安全检查,可以针对任何Oracle数据库进行安全姿态检查。
我们的扫描支持从最新的23c版本回溯至Oracle 9iR2。尽管现在较为罕见,但我们确实仍有一些客户在使用9iR2和10g。我们通常关注19c版本,因为这似乎是客户扫描和工作的主流数据库,我们也看到一些客户在使用21c版本,正如我所说,还有一些较老的版本,但主要是19c。
我将简要描述扫描和结果,但首先,让我们先谈谈测试数据库。
我想比较六种不同数据库的安全性能,使用相同的扫描检查和报告,以确保一致性。问题在于,并非所有数据库都是平等的。我们有遗留数据库;我们有多租户数据库,我们有企业版数据库,我们有免费版如XE和FREE。我们还有标准版。我测试的每个数据库都在Oracle Virtual Box上运行,有些与扫描器在同一台笔记本电脑上,有些在我们的办公室服务器上通过Oracle Virtual Box运行。每个数据库都在不同的虚拟硬件上运行;最差的情况是23c免费版运行在Oracle提供的图像所允许的有限规格上。有些则运行在多处理器上,拥有更多的RAM。
每个数据库的状态都相似;我们创建这些测试实例是为了测试我们的软件产品,它们不是生产系统。有些数据库包含有限的测试应用程序和数据,有些则是全新的。
对于多租户数据库,我们连接到PDB进行扫描,但由于多租户数据库必须同时拥有CDB,我们可能还需要考虑CDB的安全状态。但是,由于我们想要数据库对数据库的比较,我们将只关注每个数据库中的PDB。
同时请记住,在11g或更早版本的多租户数据库中,每个用户的密码哈希存储在同一数据库中,在早期多租户中,公共用户的密码哈希可以在PDB中找到,但在后续版本中则不在PDB中,因此例如对于密码破解,我们无法在PDB中破解公共用户密码。
我们还必须考虑版本和特性。一些影响安全的功能和参数在后续数据库中被弃用或移除,但在后续版本中添加了新的特性和设置,这些可能会影响安全。
因此,如果我们考虑到所有版本、类型、设置、遗留、多租户、安装内容等因素,比较11g和23c显然不是一一对应的,但这足以尝试得出一些结论。
测试的数据库包括11g(标准版2 - 遗留)、12.2c(企业版,多租户)、18c(企业版,多租户)、19c(企业版,多租户)、21c(XE,多租户)和23c(FREE,也是多租户)。
我们与CIS或DBSAT不同。我们检查数据库中的更多内容;实际上,我们检查的内容比CIS多得多,但我们确实涵盖了类似的领域,但更深入。在某些情况下,我们的检查方式也不同。例如,标准通常要求不要向PUBLIC授予特定PL/SQL包的执行权限,如UTL_FILE,但我们检查它被授予了哪些对象,因为这在尝试锁定和保护Oracle数据库中的数据时很重要。
总的来说,我们希望了解保护Oracle数据库的多个层面;补丁状态、加固、实际数据安全以及基于上下文的安全和审计跟踪。我们涵盖了所有这些领域,不仅仅是加固。
我们使用Oracle用户SYSTEM进行这些测试,但你只需要一个拥有CREATE SESSION、SELECT ANY DICTIONARY和SELECT ON SYS.USER$权限的Oracle数据库用户。
回到测试。我分别连接并扫描了这六个数据库,然后运行了两个报告;一个是单页摘要报告,为整个数据库给出评分,并按类别细分问题并给出每个类别的评分。我不会在这里打印六份报告,而是将评分总结到Excel中,并在这里展示一个摘要:
如果我们首先看看每个数据库版本的总体评分如何随版本变化,我们可以更容易地在图表中看到这一点:
这很有趣;考虑到上述数据库的版本、数据和类型。即使我们考虑到数据库是EE、XE、STD、FREE和不同版本,核心安全只在非常少量的功能、特性和参数上有所变化,随着时间的推移,更多的特性、参数和功能被添加。图表显示,从11g到18c安全性有所提升,然后在19c时大幅下降,然后在21c时有所提升,而在23c时又略有下降。
我们不容易看到的是,尽管数据库发生了变化,安全部分在数量上的变化我们无法看到,将不安全的设置更改为安全设置对整体情况的影响有多大;我的感觉是影响不大,因为数量变化可能要大得多,淹没了有限的设置变化。但需要更详细的分析,也需要在干净、相同版本的新安装数据库上进行测试,没有添加任何客户数据/代码/用户。但我今天没有这样的测试环境;也许将来会有。
我是如何计算这些得分的?
每个针对数据库执行的检查都有一个严重性和类别。严重性为1(严重)的检查比严重性为高(2)的检查具有更高的权重,依此类推。我们知道每个数据库运行了多少检查,以及每个严重性级别上失败和通过了多少检查,因此我们可以计算出整个数据库的通过率(%安全)以及每个类别级别的通过率。
接下来是每个数据库版本测试的每个类别的通过率百分比细分:
输出很有趣,再次显示了安全,我们称之为默认安全,因为我们对这些数据库几乎没有做任何工作。如果我们看看补丁,每个版本都非常相似,19c和21c略好一些。这主要是因为数据库的安装状态。从11g到23c的所有数据库要么是Oracle提供的预打包rpm,要么是安装时的“是的,请给我一个默认数据库”。这是因为这些不是生产环境,仅用于开发和测试。
如果我们看看审计跟踪,11g大约是60%的通过率,12.2有所下降,18c相似,然后从19c和21c有所改善,但在23c时又下降了。23c的下降可能是由于标准审计的不支持。
密码安全很有趣;所有六个数据库版本的总体状态相似,但从11g到18c明显变得更好,19c和21c略有下降,然后在23c时又略有回升。这些数字是倾斜的,将11g与后续版本进行比较有点不公平,因为在11g中所有密码都在单个实例中,但对于12c到23c,我们只查看了PDB,但CDB也有一组密码,而在12.1.0.2之后,公共用户的哈希不在PDB中。
加固很有趣;如果我们看看趋势,从11g到23c明显下降,18c略有上升。嗯,加固作为默认设置是否变得更糟?最有可能的原因是默认改进非常小,但随着版本和年份的增加,影响安全的事物数量有所增加,显然更多的事物不是默认处于最安全的状态。
用户安全到处都是。在11g中要糟糕得多,12和18有所改善,19c回落到11g水平,21和23有所改善。为什么?正如我们上面所说的,一些原因;11g是遗留的,从12c开始,我们只考虑PDB,还必须考虑算法和默认账户的默认状态。
数据安全相当平稳,但显然随着年份和版本的推移略有下降,但在这些测试系统中几乎没有数据,我在真实系统上的经验是,这个领域通常是客户数据库中最糟糕的,因为安全往往是不存在的和/或它是遗留风格的设计。
外部访问在版本中相对平坦,但正如你看到的,从11g到23c的趋势略有下降。
漏洞到处都是,11g很低,19c和21c也很低,但其他版本表现更好。
数据安全当然是所有这些中最重要的领域;我们当然试图保护数据,但这个测试没有很好地覆盖数据,因为我的测试系统没有真正的应用程序。
这里显示了一个单页得分报告的上半部分样本:
如果需要更多关于PFCLScan 2024的详细信息,请向我咨询,要求我通过Webex向您现场演示产品,或者如果您想购买许可证,或者如果您希望我们为您审计数据库。
原文标题:Compare the Database Security of Oracle Database 11g, 12c, 18c, 19c, 21c and 23c/ai
原文作者:Pete Finnigan
原文链接:http://www.petefinnigan.com/weblog/archives/00001578.htm