安全审计打造固若金汤的数据堡垒(三)

日期: 2011-04-24 作者:茫然 来源:TechTarget中国

在安全审计系列的文章(一)和文章(二)中,我们介绍了审计数据库的登入和登出,审计使用数据库的源头等。本文我们将介绍安全审计中的审计数据库错误等内容。   审计数据库错误   审计由数据库返回的错误也是很重要的,它是你应实施的首个审计日志之一。从安全的观点来看,这尤其重要。

例如,在许多情况下,攻击者会进行很多尝试直至得逞。攻击者可以使用基于UNION的攻击,他需要猜测数据表的正确栏数,直到他得到正确的数字,数据库将会不断地返回一个错误代码,表明SELECT语句所选择的栏数不匹配。如果你记录了所有的错误,就可以确认这种攻击并做出响应。失败的登录是需要进行记录和监视的错误之一,即使你并没审计数据库的……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在安全审计系列的文章(一)文章(二)中,我们介绍了审计数据库的登入和登出,审计使用数据库的源头等。本文我们将介绍安全审计中的审计数据库错误等内容。

  审计数据库错误

  审计由数据库返回的错误也是很重要的,它是你应实施的首个审计日志之一。从安全的观点来看,这尤其重要。例如,在许多情况下,攻击者会进行很多尝试直至得逞。攻击者可以使用基于UNION的攻击,他需要猜测数据表的正确栏数,直到他得到正确的数字,数据库将会不断地返回一个错误代码,表明SELECT语句所选择的栏数不匹配。如果你记录了所有的错误,就可以确认这种攻击并做出响应。失败的登录是需要进行记录和监视的错误之一,即使你并没审计数据库的登录。最后,任何失败的提升特权的试图操作都表明攻击正在发生。

  从质量的观点看,错误审计也很重要,它符合合规要求。我们应该确认并修复漏洞和应用程序错误,而记录SQL错误通常是确认这些问题的一种简单方法。因而,即使你关心的是安全问题,将这种信息提供给应用程序的所有者也很有意义,因为谁都不愿意运行存在着问题的代码。幸运的话,这些错误甚至会向你指出那些影响响应时间和可用性的问题。

  数据库厂商都支持详细的错误审计,你可以参考具体的数据库环境指南。在Oracle中,你可以使用系统触发器:

Oracle中使用系统触发器进行错误审计

  下一步,创建一个可用于新登录的触发器:

创建一个可用于新登录的触发器

  在SQL Server中,你可以使用审计特性或跟踪特性。如果你选择使用跟踪特性,你需要使用sp_trace_event来建立与错误有关的正确事件。这包括下表所示的事件ID:

SQL Server中事件属性

  多种DB2事件监视器与错误审计相关,并且你必须使用这些事件类型。对于所需要的每一种类型,你都应当过滤那些与错误相关的记录。例如,你应当为拒绝访问(ACCESS DENIED )记录选择检查(CHECKING)记录,并在VALIDATE类型中查看AUTHENTICATE_PASSWORD 和 VALIDATE_USER事件。

  虽然在有些环境中,记录错误和审计错误是可能的,但外部的审计系统更加普遍。如果你监视所有进入的SQL请求和响应,跟踪和报告所有的错误是很简单的,且不会给数据库带来任何额外负担。可以使用任何一种标准集来报告错误,这种信息对于制定基准是很益的。

  如果你的应用环境不太完善,制定基准就显得很重要。不是每一个数据库和应用环境都十全十美,在多数环境中,有些应用程序会产生数据库错误,即使是在生产过程中也会如此。事实上,应用程序所产生的错误是重复性的:在大体相同的地方发生了相同的错误,这类错误往往是由缺陷引起的,且这些缺陷并不会发生改变。如果制定了错误基准,却突然发现其它方面所产生的错误,或者你看到了完全不同的错误代码,那么你该调查发生了什么问题。

  存储过程和触发器的来源变更审计

  由于数据库木马使用了灵活但却完全过程化的编程语言,要隐藏恶意代码是很容易的。因此,你应采取最佳方法来审计这些结构的所有变更。

  有几种方法可实现这种审计。最简单的方法是基于配置控制的,可以通过定期(如每天)从数据库中检索代码并将其与前一段时期所检索的代码相比较来实施这种审计。通过使用一些工具和脚本程序(如diff),这种方法相对易于实施。

  第二种选择是使用一个外部的数据库安全和审计系统。这种系统可以实时地对创建或修改命令向管理员发出警告,并且很轻松地就生成可以详细描述各种变化的报告,下图显示的就是触发器的变更:

触发器的变更

  第三个选择是使用内置的数据库特性。例如,在SQL Server中,你可以使用Recompile事件来跟踪对存储过程的变更:

在SQL Server中可以使用Recompile事件来跟踪对存储过程的变更

  在多数数据库环境中,这种特性是通过DDL审计来支持的,虽然从命令中析取源代码并以一种易于审计的方式维持代码并不容易。

作者

茫然
茫然

暂无

相关推荐

  • Mozilla安全开源基金:让Heartbleed历史不再重演

    Mozilla公司公共政策负责人Chris Riley在博客中表示Mozilla安全开源基金将会为某些广泛使用的开源库和程序的关键开源软件项目提供安全审计、修复和验证。

  • Oracle现使用CVSS 3.0对漏洞进行评级

    Oracle今年4月关键补丁更新(Critical Patch Update)涉及多款产品中的136个漏洞,其中最大的变化是切换到通用安全漏洞评分系统3.0版本或者说CVSSv3,该版本可更准确反映漏洞带来的影响。

  • 从最新的SEC风险预警中,我们能借鉴什么?

    美国证券交易委员会(SEC)合规检查和考核办公室最近发布了风险预警,该预警为金融服务公司进一步提供了网络安全指导,着重关注证券公司和投资顾问客户信息的保护。从中我们能借鉴到什么?

  • 为免攻击困扰 甲骨文弃用Java浏览器插件

    甲骨文公司宣布在下一版本的Java Development Kit中将弃用Java浏览器插件,该公司已经要求开发人员开始迁移Java applet到新的Java Web Start技术。