安全认知:由浅入深解说 Web应用防火墙
上述列表仅仅是个例子,实际的积极安全模式通常包括更多的要素。它试图从外部完成程序员本应从内部完成的工作:为提交到Web应用的信息验证每一个比特。如果肯花时间的话,使用积极安全模式就是一个比较好的选择。这个模式的难点之一,在于应用模式会随着应用的发展而改变。每当应用中添加新脚本或更改旧脚本,就需要更新模式。但是,它适用于保护那些稳定的、无人维护的旧应用。
自动开发策略可以解决以上问题:
* 一些WAF能够监视流量,并根据这些流量数据自动配置策略,有些产品可以实时进行这样的工作。
* 通过白名单,可以标识特定的IP地址是可信的,然后,依据观察的流量,配置WAF,更新安全策略。
* 如果通过一个全面的衰减测试,(仿真正确的行为,)来创建一个应用,并且在WAF处于监控状态时执行测试,那么WAF可以自动生成策略。
可见,没有哪个模式是完全令人满意的。消极安全模式适用于处理已知问题,而积极安全模式则适用于稳定的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次的请求。如果你增加一点延时,比如说,一秒种的延迟,那会将请求降低至每秒不足一次。与此同时,发出进一步检测的警告,这将构成一个相当好的防御。
实现会话超时。超出默认时间会话将失效,并且用户将被要求重新认证。用户在长时间没有请求时将会自动退出登录。
会话劫持的检测和防御。许多情况下,会话劫持会改变IP地址和一些请求数据(HTTP请求的报头会不同)。状态监控工具能检测出这些异常并防止非法应用的发生。在这种情况下应该终止会话,要求用户重新认证,并且记录一个警告日志信息。
只允许包含在前一请求应答中的链接。一些WAF很严格,只允许用户访问前一次请求返回页面中的链接。这看上去是一个有趣的特点但很难得到实施。一个问题在于它不允许用户使用多个浏览器窗口,另一个问题是它令使用JavaScript自动建立连接的应用失效。
其他防护技术
WAF的另外一些安全增强的功能用来解决WEB程序员过分信任输入数据带来的问题。比如:
隐藏表单域保护。有时,内部应用数据通过隐藏表单变量实现,而它们并不是真的隐藏的。程序员通常用隐藏表单变量的方式来保存执行状态,给用户发送数据,以确保这些数据返回时未被修改。这是一个复杂繁琐的过程,WAF经常使用密码签名技术来处理。
(编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |