论文部分内容阅读
中华女子学院计算机系
企业数据库的安全管理不仅概念复杂、涉及面广、难于验证,而且新的安全漏洞层出不穷。对于DBA来说,自动化的检测评价工具是一个好帮手。
表2 检测结果对比
对于企业数据库而言,安全性与系统性能同样重要。提高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必须完成的重要工作。
企业数据库的安全管理不仅概念复杂、涉及面广、难于验证,而且新的安全漏洞层出不穷。对于DBA来说,自动化的检测评价工具是一个好帮手。
表2 检测结果对比
对于企业数据库而言,安全性与系统性能同样重要。提高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必须完成的重要工作。