Web应用防火墙入门( 三 )


可见 , 没有哪个模式是完全令人满意的 。消极安全模式适用于处理已知问题 , 而积极安全模式则适用于稳定的Web应用 。理想的做法是 , 在现实生活中 , 将二者结合使用 , 取长补短 。
及时补丁
积极安全模式理论上更好一些因为浏览器和WEB应用程序之间的通信协议通过HTML规范进行了很好的定义 。现在的Web开发语言都可以处理带有多个参数的 HTTP请求 。因为这些参数在Web应用防火墙中都是可见的 , 因此WEB应用防火墙可以分析这些参数判断是否存在允许该请求 。 ,
当一个应用中的漏洞被发现时大多数情况下我们会尽可能在代码中修补它 。受诸多因素的影响(如应用的规模 , 是否有开发人员 , 法律问题等等 ) , 开发补丁的过程可能需要几分钟 , 或者一直到无限长的是时间 。这些时间正是攻击者发起攻击的好机会 。
如果开发人员能够在非常短的时间内在代码中修补好漏洞 , 那你就不用担心了 。但如果修补这个漏洞需要花费几天 , 甚至几周来修复呢?Web应用防火墙就是处理这个问题的理想工具:只要给一个安全专家不错的WAF和足够的漏洞信息 , 他就能在不到一个小时的时间内屏蔽掉这个漏洞 。当然 , 这种屏蔽掉漏洞的方式不是非常完美的 , 并且没有安装对应的补丁就是一种安全威胁 , 但我们在没有选择的情况下 , 任何保护措施都比没有保护措施更好 。
及时补丁的原理可以更好的适用于基于XML的应用中 , 因为这些应用的通信协议都具规范性 。
基于规则的保护和基于异常的保护
现在市场上大多数的产品是基于规则的WAF 。其原理是每一个会话都要经过一系列的测试 , 每一项测试都由一个过多个检测规则组成 , 如果测试没通过 , 请求就会被认为非法并拒绝 。
基于规则的WAFs很容易构建并且能有效的防范已知安全问题 。当我们要制定自定义防御策略时使用它会更加便捷 。但是因为它们必须要首先确认每一个威胁的特点 , 所以要由一个强大的规则数据库支持 。WAF生产商维护这个数据库 , 并且他们要提供自动更新的工具 。
这个方法不能有效保护自己开发的WEB应用或者零日漏洞(攻击者使用的没有公开的漏洞) , 这些威胁使用基于异常的WAF更加有效 。
异常保护的基本观念是建立一个保护层 , 这个保护层能够根据检测合法应用数据建立统计模型 , 以此模型为依据判别实际通信数据是否是攻击 。理论上 , 一但构建成功 , 这个基于异常的系统应该能够探测出任何的异常情况 。拥有了它 , 我们不再需要规则数据库而且零日攻击也不再成问题了 。但基于异常保护的系统很难构建 , 所以并不常见 。因为用户不了解它的工作原理也不相信它 , 所以它也就不如基于规则的WAF应用广范 。
状态管理
HTTP的无状态性对Web应用安全有很多负面影响 。会话只能够在应用层上实现 , 但对许多应用来说这个附加的功能只能满足业务的需要而考虑不到安全因素了 。Web应用防火墙则将重点放在会话保护上 , 它的特征包括:
强制登录页面 。在大多数站点 , 你可以从任何你所知道的URL上访问站点 , 这通常方便了攻击者而给防御增加了困难 。WAF能够判断用户是否是第一次访问并且将请求重定向到默认登录页面并且记录事件 。
分别检测每一个用户会话 。如果能够区分不同的会话 , 这就带来了无限的可能 。比如 , 我们能够监视登陆请求的发送频率和用户的页面跳转 。通过检测用户的整个操作行为我们可以更容易识别攻击 。
对暴力攻击的识别和响应 。通常的Web应用网络是没有检测暴力攻击的 。有了状态管理模式 , WAF能检测出异常事件(比如登陆失败) , 并且在达到极限值时进行处理 。此时它可以增加更多的身份认证请求的时间 , 这个轻微的变化用户感觉不到 , 但对于足以对付自动攻击脚本了 。如果一个认证脚本需要50毫秒完成 , 那它可以发出大约每秒20次的请求 。如果你增加一点延时 , 比如说 , 一秒种的延迟 , 那会将请求降低至每秒不足一次 。与此同时 , 发出进一步检测的警告 , 这将构成一个相当好的防御 。

推荐阅读