Web攻击,怎么破?


如今的互联网中90%的应用都架设在Web平台上,网上银行、网络购物、网络游戏,以及企业网站等,成为生活和工作必不可少的一部分。所以,Web安全成为继操作系统与业务软件安全之后又一热点,并且持续升温。纵观安全事件,重大的Web攻击层出不穷,网络安全从业者开始跟黑客们在这一焦点领域不断的对抗。由于Web平台的多样性,以及HTTP协议及数据库语言的灵活性,Web攻击形式也五花八门,主要的攻击方法有SQL注入、跨站脚本(XSS)、CC(Challenge Collapsar)等。

山石网科分别针对这三种攻击进行了针对性的方案设计。

目前很多Web攻击防护产品在处理SQL注入和跨站脚本攻击的问题上,都是采用传统入侵检测方法,即基于正则表达式的规则匹配模式。这种方法在应对SQL注入和跨站脚本攻击时存在很大的缺陷:一是SQL注入和跨站脚本有很多种符合语法结构的写法并可以进行多种方式的编码,这样就能轻易绕过正则表达式的规则匹配模式,在检测设备上出现漏报;二是基于正则表达式的规则匹配模式是在攻击发生后进行攻击分析并提取特征,然后对再次发生的同类攻击进行防护,这样的方法对0Day攻击无能为力。而且随着攻击特征的不断增加,攻击防护对检测设备性能也产生了极大的影响。

山石网科采用了基于语法分析的方式进行检测。任何企图进行SQL注入或跨站脚本攻击的数据,不管形式如何变化,都必须满足SQL和HTML语法的规定,山石网科根据这种特点进行攻击检测,不仅零特征,可避免0day攻击,而且以不变应万变,误报和漏报被最大限度的压缩。

CC攻击防护的关键在能够识别和区分出正常用户的访问和恶意的攻击。对于恶意攻击的识别,山石网科采用了如下四种方法,用户可以根据实际情况选择使用:一是Auto-js-cookie:网关向客户端发送head带set-cookie的响应报文,一些程序自动发起的攻击则无法正确回应。二是Auto-redirect:网关向客户端返回重定向报文,在重定向的url中加入cookie后缀,一些程序自动发起的攻击则无法正确回应。三是Manual-confirm:网关在回应报文中嵌入提示信息,并等待人工确认,通过回应的确认报文来验证源IP的合法性,程序自动发起的攻击和僵尸网络都无法进行这种确认。四是Manual-CAPTCHA:网关在回应报文中嵌入一个问答框做认证来验证源IP的合法性,问题可以是二元加减或4字符随机字符串,进一步加大了确认难度,程序自动发起的攻击和僵尸网络都无法进行这种确认。同时,方案支持对开放代理的识别,用户可以选择对通过开放代理访问的速率进行限制。

外链检查的目的是要杜绝某些网页篡改、网页挂马的行为,例如,在网页中新添加的对外资源(例如frame、其他服务器上的js、css文件等等)的引用。当开启外链检查时,山石网科下一代防火墙会对Web服务器应答报文的内容进行分析,找到不符合外链规则的frame、iframe、link、object、applet、script等HTML标签。有些时候,Web服务器确实需要对外引用某些资源,例如js文件、css文件。此时可以配置允许对外引用的白名单,表示位于白名单中的资源是可信的。

目录访问控制主要是为了防止Web Shell和敏感信息泄露。例如Web服务器允许上传图片文件,但是由于过滤不严格,攻击者通过这个机制上传了恶意代码(Web Shell)。为了发现这样的恶意上传,可以把上传的图片保存的目录设置成static。这样山石网科下一代防火墙就会检查用户访问请求POST数据和URI中是否有动态可执行代码,以及请求文件的后缀名是否已知的动态脚本后缀(例如.asp、.php、.js等等);同时服务器的应答报文也会被检查是否有动态可执行代码。Web路径下,有时候包含数据库连接文件(里边包含了数据库路径、用户名、口令等信息),这些文件是被Web服务器上其他文件引用的,不允许用户直接访问他们。此时,就可以把它们的访问控制模式配置成deny。

在部署上,山石网科建议将下一代防火墙直接部署在Web服务器前,对Web服务器进行防护,可以满足企业用户日常的Web服务器防护需求。