首页 > 大数据 > 正文

你的Oracle数据库很安全吗

2008-03-25 11:09:07  来源:中国计算机报

摘要:企业数据库的安全管理不仅概念复杂、涉及面广、难于验证,而且新的安全漏洞层出不穷。对于DBA来说,自动化的检测评价工具是一个好帮手。
关键词: 数据库

    企业数据库的安全管理不仅概念复杂、涉及面广、难于验证,而且新的安全漏洞层出不穷。对于DBA来说,自动化的检测评价工具是一个好帮手。

    对于企业数据库而言,安全性与系统性能同样重要。提高Oracle数据库安全性就要做好安全管理工作并及时安装安全补丁CPU。而所谓安全管理的内容,就是基础的用户、角色、口令、权限、文件和网络的管理。安全管理工作的困难不仅在于概念复杂、涉及面广、难于验证,而且新的安全漏洞层出不穷。对于DBA来说,一个自动化的检测评价工具是非常必要的,可经常检测自己系统的安全状况,以便及时发现并解决问题。

    Application Security Inc.开发的AppDetectivePro是一个不错的数据库安全性评估商业软件。本文介绍使用AppDetectivePro对Oracle数据库进行安全检测和评估的基本操作,并结合实例对评估结果进行分析。

    检测和评估

    AppDetectivePro把检测评估过程分为四个阶段:

    1.确定要检测评估的数据库,称之为Discovery。

    2.进行模拟黑客外部攻击的渗透测试Penetration Test。

    3.登录数据库进行内部审计测试Audit Test。

    4.生成评估报告。

    进入AppDetectivePro官方网站注册后,会在注册的电子邮件信箱中收到最新版软件的下载地址。在Windows XP中完成软件安装。如果PC中有两块以上的网卡(包括虚拟机的虚拟网卡),执行检测评估前,需要设置网卡:菜单项Edit→Properties→Network Adapter→选择某一网卡。

    确定要检测评估的对象。为节省时间,可以给出唯一的IP地址和PORT号。命令按钮Discover→Next→Next→检测范围的Hostname栏内输入IP地址(如图所示)192.168.2.3→Add→Next→应用类型中选择Oracle→选择非缺省PORT号→Next→在Starting Port中输入端口号1531→Add→Next→Next→Next, 开始在指定IP和PORT范围内搜索正在运行的监听程序。

    找到监听程序后,会在窗口的Network树中加入主机和监听程序。点击Network左边的折叠/展开按钮展开全部搜索到的数据库。对于10g以后的版本,缺省设置下,AppDetectivePro无法搜索得到SID的信息,必须手工加入:在Network树展开的监听程序上点击右键→Add SID→输入SID。本例为CHN→Verify→Add加入SID信息。

    运行渗透测试。命令按钮Pen Test→(评估版不能选择测试评估策略)Run Pen Test→确认,开始运行渗透测试。测试结束后,窗口下端会显示检测到的安全漏洞。选择在SID之下用时间表示Pen Test检测,点击窗口中部的Details,在Check Status中列出所使用的检测规则和测试结果。

  运行审计测试。命令按钮Audit→Audit Applications→点击选择要审计的应用→输入SYS口令,选择SYSDBA角色和SSH,输入SSH的用户名和Root口令,按下确认按钮,开始运行审计测试。由于测试中包括暴力破解口令,审计测试时间会比较长,一般会超过十分钟。测试结束后,窗口下端显示检测到的安全漏洞。选择在SID之下用时间表示Audit Test检测,点击窗口中部的Details,在Check Status中列出所使用的检测规则和测试结果。

    生成检测评估报告。首先生成反映规则检测通过情况的报表Check Status:命令按钮Reports→ 选择报表类型Check Status→Next→选择报表范围Session→选择报表格式HTML(Single File)→Next→Next,开始报表生成。

    重复同样操作过程,选择Vulnerability Summary报表类型,可以得到检测到的安全漏洞的概要报表。详细的审计安全漏洞报表需要选择Vulnerability Details报表类型、Application报表范围,并根据测试时间选择审计测试得到。

    评估结果分析

    检测评估的质量完全取决于所执行的检测规则。本文实验中采用的软件是AppDetectivePro Build5.3.6网络下载评估版。进行渗透测试和审计测试时只能执行下载版测试策略,该策略共定义了111条规则。
 
    检测和评估的对象是运行在RHEL5上的Oracle 10gR1 10.1.0.3和10.1.0.5以及11g 11.1.0.6三个版本。软件安装和数据库创建基本上是缺省设置,没有安装任何应用系统。在10.1.0.5版本中安装最新的安全补丁和其他个别补丁,目的是通过与10.1.0.3版本的比较,检查安装补丁 的效果。通过对比10gR1与11g,检查两个版本之间安全性的差异。

    首先,三个版本都完全通过了Pen Test的测试,唯一返回的安全警告信息是“没有安装最新PSR”。(测试时,笔者有意在数据库中加入了著名的Scott/Tiger,并且关闭Listener中的本地OS验证,Pen Test马上检验到了这两个漏洞。)简而言之,结论是,即便是缺省的安全设置,这三个版本对外部攻击是安全的。

    在随后的审计测试中,对于这111条规则,从通过与否的个数看,三个版本表现非常接近,没有通过的规则个数均为四分之一左右。而从检测到的安全漏洞的个数和危险程度看,11g表现略好,具体数字可参见表2。Oracle数据库的安全漏洞全部是由大概30条规则检测不能通过而形成的。例如,将对象权限授予用户组Public被认为是中等程序的危险,而在数据库中,若有5000个对象的限制授予了Public,则在中等危险中就被加入了5000个安全漏洞。

    另一方面,随着版本的更新,Oracle数据库的数据字典和PL/SQL包都在不断增加。由于AppDetectivePro重复计数的原因,导致上表中11g的漏洞个数最多,容易让人误解为11g的安全性最差,事实上恰恰相反,特别在缺省的安全性设置方面,11g是安全性最强的版本。

  对于11g而言,表1中列出检测出的8类62个高危安全漏洞,需要立即采取措施。如是否允许使用口令以Sysdba远程登录,而有关用户口令的部分安全漏洞则是在用户解除封锁时,强制要求用户立即改变口令,并符合口令管理策略。

    根据实验结果,对AppDetectivePro的检测评估质量,笔者有如下初步印象:

    1.渗透测试Pen Test非常完整,使用已知的用户名和缺省口令进行攻击,并利用各种缓存区溢出方法进行攻击。

    2.审计测试中,对安全性设置的检查非常详细,并给出了相应解释和修复方法。

    3.及时加入了根据最新版本功能制定的规则,如只在11g中可以设置口令大小写以及对错误的传输协议数据的处理。

    4.对权限升级方面的漏洞检查得相对较少,不能很好地反映出安装CPU的效果。

    5.安全漏洞分类还需要改进。例如,在近5000个授予Public的权限中,UTL_类的执行权限是公认非常危险的,不加以区别,DBA很难找到真正需要修改的部分。

    AppDetectivePro是对DBA非常有帮助的一个工具。当然也有许多免费工具,如Scuba和CIS Benchmark等。另外,从10g开始,Oracle的EM DB Control中也提供了初步的内部检测功能。综合利用检测工具提供的信息,正确分析并采取必要措施来保证数据库的安全性是DBA必须完成的重要工作。

 


第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。