专栏首页数据库安全数据库防火墙:数据库防火墙的阻断方式
原创

数据库防火墙:数据库防火墙的阻断方式

文章来源:美创科技

关于阻断的简单分类和定义

 01 行为阻断

行为阻断是数据库防火墙的自然工作方式。当检测到入侵行为的时候,阻断该行为的操作。行为阻断依据响应偏好的不同,可以工作在不同模式之下。

模式一:错误响应模式

阻断操作之后,返回预先定义的错误信息,使应用程序可以构造合理的错误响应。错误响应模式的好处在于可以让应用程序检测到入侵发生,并响应合理的错误形式给用户和入侵者。坏处在于可能入侵者也可以感知到有安全业务逻辑在发生作用,特别是如果应用程序缺乏错误处理有可能会直接返回错误响应给入侵者。

模式二:静默响应模式

阻断操作之后,返回正常的零响应信息,包括0行数据,0行数据被影响或者成功操作的响应信息。静默响应模式的好处在于完全正常的业务逻辑响应可以使入侵者很难获取相关信息,坏处在于应用程序也无法感知入侵,只能依赖于安全设备的运行。

模式三:持续阻断模式

当检测到应该被阻断的风险操作之后,该Session被定义为高度风险Session,所有后续的操作都被标记为高风险操作,无论其内容如何都会被阻断。持续阻断模式的好处在于增加了入侵者的尝试成本,增加其沮丧感,坏处在于可能由于风险检测引擎的误判导致业务持续失败。

02 Session阻断

Session阻断相对于行为阻断是一种很简单的操作,中断网络连接,阻止进一步的操作。Session阻断的好处在于技术上实现非常简单,坏处则会带来众多不可预知的影响。而且,其不可被用在数据库防火墙中。 

为什么在数据库防火墙中不能执行Session阻断?

绝大部分企业级应用建立在数据库连接池技术之上。基本路径是:业务应用程序发起数据库操作请求,从数据库连接池中获得一个数据库连接,应用程序在这个给定的数据库连接执行业务操作,业务操作完成之后释放这个数据库连接到数据库连接池。

下面我们来分析Session阻断的操作和影响。一般情况下,多数Session阻断会采用向客户端和服务端分别发Reset包的方式来实现阻断,我们这里不探究reset信号的阻断有效性,假设其总是可以快速阻断。在此前提下我们从两个方面来探讨可能的影响:

01 数据库连接池的影响

Session阻断之后,会导致数据库连接池的可用数量减少。特别是在多数情况下,数据库连接池并不会检测到Reset信号,也就是说虽然网络连接已经被中断,但是数据库连接池并没有意识到连接已经不可用,依然会把业务分配到这个已经中断的数据库连接之上,导致业务大规模错误。

简单来看,入侵者可以通过简单的可以被数据库防火墙识别的无效攻击来实现cc攻击,导致业务系统不可用。为了避免这种情况,需要在数据库连接池上增加特定错误检测功能,当检测到特定错误之后,关闭特定无效链接,并主动发起重新连接以保持业务程序运行。

02 数据库端的影响

在大部分情况下,数据库并不能很好的处理reset信号,而需要依赖死进程检测程序来处理。由于处理无法保证有效,也就是说在相当多的场景下可能会出现大量的僵死进程,消耗大量数据库会话资源,甚至存在共享的资源没有释放,从而导致数据库挂起。

总结:数据库防火墙设备从理论上讲必须采用行为阻断模式,采用具体形式的行为阻断都可以完成相应目标。Session阻断模式会带来众多不可预知的影响,不应该被数据库防火墙所采用。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库防火墙:数据库防火墙商业化的前提条件

    数据库防火墙和一般的传统数据库安全设备不同,它部署在应用服务器和数据库服务器之间。业务系统巨大的流量将穿越数据库防火墙,数据库防火墙任何的风吹草动都会影响业务系...

    数据安全
  • 数据库防火墙:数据库防火墙应具备哪些能力

    互联网时代,由数据库引发的安全事件越来越多,数据库防火墙作为保护数据库安全必不可少的防御工事,也越来越受到企业关注。

    数据安全
  • 数据库防火墙

    数据库防火墙仿佛是近几年来出现的一款新的安全设备,但事实上历史已经很长。2010年,Oracle公司在收购了Secerno公司,在2011年2月份正式发布了其数...

    数据安全
  • 近日获得A轮融资的NoSQL数据库SequoiaDB正式开源

    今日,文档型NoSQL数据库SequoiaDB宣布正式开源。 ? SequoiaDB是一款分布式数据库,存储JSON文档类数据格式,解决了传统数据库在数据模型僵...

    CSDN技术头条
  • 结构型模式:享元模式

    我们就拿这幅画来说,里面画了草、树、路、山、天空等等。如果没有用享元模式,我们可能这样子实现。

    LieBrother
  • 实用的Scala泛函编程

          既然谈到实用编程,就应该不单止了解试试一个新的编程语言那么简单了,最好通过实际的开发项目实例来演示如何编程。心目中已经有了一些设想;想用Scala...

    用户1150956
  • 【Android】数据存储(三) 数据库(SQLite)

    Gavin-ZYX
  • 开发丨深度学习框架太抽象?其实不外乎这五大核心组件

    许多初学者觉得深度学习框架抽象,虽然调用了几个函数/方法,计算了几个数学难题,但始终不能理解这些框架的全貌。 为了更好地认识深度学习框架,也为了给一些想要自己亲...

    AI科技评论
  • 用Go开发可以内网活跃主机嗅探器

    源码相关: https://github.com/timest/goscan 文章关键词 go/golang gopacket 抓包 pcap/libpcap...

    李海彬
  • MongoDB的优缺点及设计拙劣之处

    对于使用MongoDB的新人来说,它是一个NoSQL的文档数据库。 文档包括一组键值对并且是MongoDB中的基本数据单元。 它绝对是现在最受欢迎的nosql数...

    用户1263954

扫码关注云+社区

领取腾讯云代金券