ImpervaWAF 技术白皮书.docx
《ImpervaWAF 技术白皮书.docx》由会员分享,可在线阅读,更多相关《ImpervaWAF 技术白皮书.docx(19页珍藏版)》请在冰点文库上搜索。
ImpervaWAF技术白皮书
ImpervaWAF技术概述
ImpervaSecureSphere概述
传统的防火墙,在发挥重要作用的同时,却无法解决以上任何问题。
防火墙能够提供广泛的网络安全防护,有时还能够提供基本的应用程序感知,但缺乏认识或保护应用程序及其数据的能力。
对这些威胁的防护需要更高级别的认识-在应用程序行为层。
SecureSphere®系统专门针对这一问题进行了开发,从而提供了该级别的保护。
应用程序行为层-OSI及其上层
SecureSphere系统的保护分布在近似OSI7层模型的多个层面上。
防火墙对应OSI的第2到第4层,协议验证和应用程序层特征码类似于OSI第7层,如下图所示。
但是,多个SecureSphere的高级保护进程(例如:
特征评估、Web/数据库关联和关联攻击检测)面向应用程序的行为,相当于第8层,该层未在OSI模型中定义。
图2.1:
应用程序行为层-位于OSI模型之上
中心管理
SecureSphere系统的MX管理服务器是三层管理架构的中心点,允许组织机构同时自动管理多个网关。
安全策略是集中式管理,因此只需单击一下鼠标,就可以自动下发到多个网关。
MX可用于各种任务,例如:
配置管理、告警汇聚、分析及浏览、审计分析、报告、系统事件搜集等等。
部署拓扑
SecureSphere®网络架构同时支持非在线网关(嗅听)和在线网关。
在线网关的侵入性强一些,但具有更好的阻止能力。
嗅听网关是完全非侵入式的,不能提供较为可靠的阻止能力(即:
TCP重置)。
部署选项
SecureSphere®系统支持以下部署模式:
❍在线拓扑
如果要为数据中心提供最高级别的安全性保护,则可以将SecureSphere网关部署为在线模式。
在此部署方案中,网关充当外部网络与受保护的网段之间的连接设备。
网关将阻止在线(即:
丢弃包)恶意通信。
一个在线网关虽然能够保护最多两个网段并拥有六个网络接口端口。
但不能工作于在线/嗅听混合模式。
其中的两个端口用于管理:
一个用于连接管理服务器,另一个是可选的,可用于连接外部局域网。
其他四个端口属于两个用于在线检查的网桥。
每个网桥都包含一个外部网络端口和一个受保护网络端口。
❍嗅听拓扑
SecureSphere使用无在线故障点和性能瓶颈的透明网络网关,以确保为部署和集成消除此类安全产品通常所具有的风险。
阻止是通过发送TCP重置实现-但这无法保证阻止操作一定成功,因此TCP重置可能:
❍不能到达受保护的服务器
❍被发送设备忽略
嗅听网关是一种被动嗅听设备。
用于连接企业集线器与交换机,可控制受保护服务器的通信。
通信信息将会被复制到该设备,而不会直接通过。
因为不是在线的,因此嗅听网关不会影响性能,也不会影响服务器的稳定性。
单个SecureSphere网关可以轻松监控多个网段,因为它包含多个可用于嗅听不同网段的网络接口端口。
唯一的限制就是其所能处理的通信量。
单个网关可以监控不同类型的服务器(例如:
Web服务器、数据库和电子邮件服务器)。
不需要在多个不同网关之间分离这些任务。
安全引擎
SecureSphere®网关可为不同通信流(Web、数据库以及所有其他通信)提供适当的保护,如下图所示。
在各个级别上,安全引擎都可以立即阻止通信(在线部署下)或连续监测特定IP、应用程序用户和会话,以供将来阻止(如果证实需要的话)。
SecureSphere安全代理是负载检查和处理定向至受保护服务器的通信的模块。
安全引擎包含多个安全层,大致与OSI模型对应,从较低级别的网络安全层(防范基于网络的攻击)开始,通过协议和基本应用功能(例如:
HTTP协议合规性和应用程序攻击特征码)一直到高级别的保护(例如:
应用程序特征和关联攻击验证)。
图7.2:
SecureSphere安全引擎级别
透明检测
为何需要透明检测?
“透明检测”可解析、跟踪和重构HTTP事务而无需中断HTTP连接。
该部署方法能够提供一个对应用程序与网络透明的(因此,几乎无需变更任何部署)、高吞吐量、低延迟的解决方案。
因而,当系统运行环境对网络延迟敏感,需要高吞吐量或无法容忍应用程序和网络部署修改时,许多SecureSphereWAF客户选择将系统部署于透明桥接模式。
为何需要代理?
代理部署的最大优点是,在该模式下,代理可以轻松修改内容。
当有超过安全性的其他重要部署需求时(例如:
执行URL转译或诸如对象缓存的各种内容加速技术),客户可以选择代理部署。
透明检测与代理
在所有部署模式下,SecureSphere的安全模型和安全处理都是相同的。
无论处于哪种部署模式,SecureSphere都将检查HTTP头字段、URL参数、表单字段、方法、Cookie、SOAP操作和所有其他HTTP元素。
SecureSphere还跟踪会话信息,包括用户名、会话标识(Cookie或参数)和其他会话数据,以允许其为用户提供针对基于会话的攻击的防护。
SecureSphere在所有四种部署模式下,都能够提供相同级别的应用程序感知,在所有在线部署模式下(网桥、路由器和代理)都能提供相同级别的保护。
从第一代WAF产品起,代理技术已使用多年,许多客户了解代理如何处理、检查和阻止网络通信。
本文诣在描述“透明检测”是如何执行这些功能的。
最低延迟
SecureSphere系统出众的吞吐能力基于其独特的分组存储处理方式。
系统的基本设计理念是各个分组存储且仅存储一次。
其他系统制作分组的复本以供需要处理分组的各个层使用。
这种繁重的多重复制将大大消耗系统资源并降低系统性能。
而SecureSphere系统仅将分组存储在单一、中心化的存储中,各个层的进程都可以直接访问和处理该分组。
透明检测架构
透明检测概览
要防护应用程序级攻击,应用程序层防火墙必须分析完整的TCP流。
TCP流是来自各个IP分组的数据的组合,使TCP/IP成为连续有序的应用数据流。
一旦流被重构,WAF可以查看和检测完整的应用程序请求并应用适当的安全策略。
SecureSphere会维持一个“影子”TCP/IP堆栈以重构TCP流。
在将完整的请求发送至Web服务器之前,该影子TCP/IP堆栈会以正确的TCP序列处理数据,并会分析各个HTTP请求。
如果检测到攻击,违规分组将会被丢弃,整个连接将会被阻止。
因为SecureSphere会在完成连接之前分析TCP流,所以SecureSphere始终先于应用程序服务器一步,能够在完整的请求到达应用程序服务器之前,防范任何攻击和应用阻止策略。
分组-基本单元
作为基于网络的设备,SecureSphere®系统的基本操作单元为分组(或帧)。
SecureSphere存储分组,直到拥有在尽可能最低的层次中处理它们的足够信息。
这可能意味着需要累积可以组成单个消息的分组,或者有时需要存储特定会话的所有分组(时间较长的任务)。
下图演示了该处理过程:
消息1的所有分组到达SecureSphere安全引擎。
这些分组将会被检查、存储,直到收到完整的消息。
因为适当保护层的检查,消息1触发一条安全规则,一个TCP重置将会被发送。
几个已经到达受保护服务器的分组在其被组合成消息之前将会被丢弃,会话(基于该消息)也将会被中断。
注意:
在“反向代理”配置中,这些分组甚至无法到达受保护的服务器。
如果分组与较低的安全层违反(在此阶段可应用的层,例如:
防火墙、网络特征码),策略中指定的操作将会被应用。
或者,如果分组与相关层的安全策略不违反,则分组将会被传递至受保护的服务器。
如果被检查的分组是包含请求的多个分组之一,则该分组将会保存在内存中以供更高级别的检查使用。
一旦整个请求到达网关,则更高级别的检查将会被应用至整个请求(例如:
特征、关联),以采取进一步措施。
图7.3:
安全引擎如何处理分组、消息、会话
各个安全层在其有效时将会被应用:
❍网络安全层在分组级别上应用于定向至受保护服务器的全部通信。
❍较高的应用程序层在消息级别(例如:
HTTP请求或SQL查询)上应用于那些由SecureSphere深度分析的通信类型,一般主要用于包含HTTP和SQL协议的企业应用程序中的数据传输。
处理HTTP请求
SecureSphere在不同的阶段分析不同类型的攻击。
例如:
SecureSphere立即阻止具有过长URL的HTTP请求。
因为是明显的溢出尝试,所以SecureSphere不需要通过处理整个请求来阻止连接。
但是,在重新组装和解码整个HTTP请求后,SecureSphere将仅识别冗余编码规避技术。
如果配置为阻止攻击,SecureSphere将不会完成连接,防止攻击到达Web应用程序。
SecureSphere采用三个解析层来精确阻止Web应用程序攻击:
i.首先,SecureSphere使用流上的批量URL编码检查TCP/IP流以寻找攻击特征码。
然后,SecureSphere分析基本HTTP协议信息-URL、报头值、参数名称和值,但不分析其全部内容。
在此,例如:
SecureSphere会将过长参数(可能是一次缓冲溢出尝试)识别为HTTP协议违反。
在最后一层,SecureSphere将分析完整的HTTP请求和响应,标准化编码内容,检测规避技术,检查自定义特征码,并使用应用程序特征验证输入。
其重建TCP流和分析TCP3次握手(TCP3-wayhandshake)的能力允许SecureSphere精确分析HTTP请求和响应中的所有元素。
在提供卓越的性能和透明性的同时,透明检测确保所有应用程序级攻击都能被阻止。
阻止机制
检测到HTTP违反时,SecureSphere将执行以下操作:
❍生成警报
❍阻止连接
❍在特定时段内阻止会话、应用程序用户或源IP地址
❍在特定时段内监测会话、应用程序用户或源IP地址
❍向攻击者发送响应页面(完整的HTML页面或HTTP重定向)
❍向HTTP服务器发送TCP重置命令以释放服务器资源
全面的应用程序感知
Imperva基于内核的透明检测提供真正的应用程序可视性。
在所有部署模式下,SecureSphere都能解析HTTP请求和响应中的各个元素,包括:
❍HTTP头变量
❍URL参数
❍表单字段
❍Cookie
❍SOAP操作
❍XML元素
❍HTTP方法
SecureSphere不仅可以动态地设置这些元素的特征,还可以学习用户行为。
例如:
它可以为表单字段设置最小和最大长度以及可接受的字符特征。
SecureSphere还可以动态识别用户登录表单。
因此,当用户在网站上导航时,SecureSphere可以通过用户名跟踪用户。
各个方面的应用程序特征都可以通过SecureSphereWeb管理接口查看和编辑。
会话保护
为了精确跟踪用户,SecureSphere在一个状态表中记录所有用户属性。
该状态表存储会话令牌(Cookie或URL参数)、用户IP地址和浏览器信息(浏览器版本、可接受语言、可接受的编码类型)。
SecureSphere还记录会话标识是何时由Web服务器设置的。
如果会话令牌被保护,则意味着不允许用户更改会话值,SecureSphere将阻止篡改会话值的用户。
类似地,如果用户提供一个不是由Web服务器设置的会话值,SecureSphere将阻止该用户。
因为SecureSphere会跟踪会话的创建时间,所以如果会话长期闲置,则当用户试图重新连接时,SecureSphere将阻止用户(或生成警报,或将用户重定向至登录页面等)。
这可以保护Web应用程序免受会话重用攻击。
SecureSphere保护用户会话而无需插入令牌或修改会话内容。
与需要修改Cookie以提供安全保护的第一代Web应用程序防火墙相比,这是一次技术飞跃。
修改Cookie可能产生很多不可预期的后果。
它可能会影响用户与Cookie的交互病改变应用程序功能。
在许多情况下,修改Cookie可能会干扰应用程序的业务功能。
网络和平台攻击保护
除了Web应用程序攻击,SecureSphere还可以阻止Web服务器软件(Apache、IIS)、中间件和平台攻击。
SecureSphere使用超过3000个的攻击特征码来保护应用程序堆栈的所有层,这些特征码来自诸如Bugtraq、CVE®和Snort®的公开源以及从Imperva应用防护中心(ADC)导出的未公开攻击。
来自ADC的定期安全更新确保始终强制提供最新的防护。
通过能刻划Web蠕虫攻击的独特属性组合,SecureSphere还可以检测最新的零日攻击蠕虫。
集成状态网络防火墙可以阻止未授权用户、危险协议和网络攻击。
访问控制策略使系统不暴露于非必需或不安全的协议。
URL特征
URL特征概览
URL特征是SecureSphere®检测用户向受保护Web服务器请求的URL的偏差和生成URL违反的基准。
URL特征包含以下信息:
❍该服务器组所使用的URL列表
❍各个URL所使用的HTTP方法
❍各个URL中包含的参数的列表
❍各个参数的属性集合:
值类型、最小长度、最大长度、是否必需、是否为只读参数、是否为参数前缀。
SecureSphere可基于受保护Web服务器的实际通信自动生成URL特征。
特征是逐步生成的,所有URL都将在学习模式下启动,等到搜集到足够的信息后,所有URL将自动进入保护模式。
管理员可以控制该转换的阈值(在GUI中:
管理>系统定义>切换至“保护”模式阈值)。
学习模式下学习的信息
当您创建具有Web服务的新服务器组,或将新的Web服务添加至现有SG时,SecureSphere®将会开始监测与该服务相关的所有通信。
它会利用其学习的所有参数创建特征。
如果没有适用于这些通信的已定义服务,系统将认为这些通信属于默认服务。
SecureSphere会学习每个应用程序的所有URL。
如果SecureSphere首次发现了以前从未见多的URL,则会将其添加至处于学习模式的特征中。
当SecureSphere搜集到了足够的有关URL的观测信息后,它将会将特征的模式从学习切换至保护,并开始随时就与特征有偏差的状况生成违反和操作。
请注意SecureSphere会避免学习受保护应用程序中实际上不存在的URL。
当SecureSphere发现一个对不属于特征的URL的请求时,它会在将该URL添加至特征之前,先检查响应代码。
如果响应表明该URL不存在或是一个已断开的链接或引用(例如:
“HTTP404NotFound”响应),则SecureSphere会将该URL认为该URL有问题。
否则,SecureSphere会将该URL添加至特征并开始学习该URL。
特征视图显示所有URL及其模式(即:
学习、保护)。
当系统搜集到有关特定URL的足够信息时,SecureSphere会自动将该URL从学习模式切换至保护模式,因此在任意时刻,URL列表都可能包含处于两种模式之一的分组。
当URL处于保护模式时,SecureSphere就会开始随时就与特征有偏差的状况生成违反和操作。
对于每个URL,SecureSphere都将学习以下信息:
❍HTTP方法-一个URL中使用的HTTP方法的列表(例如:
GET、POST、OPTIONS或HEAD)。
❍参数-一个URL中使用的参数的列表。
对于各个参数,SecureSphere将学习以下信息:
❑参数是否必需(即:
必须出现在该URL中的各个请求中)
❑最小和最大参数长度
❑允许的值类型
❑参数是否只读(即:
一个隐藏字段或嵌入链接的一部分)。
值类型
SecureSphere®自动为各个已学习的参数设置允许值类型特征。
如果在保护模式下,特定参数的值与已设置的值类型特征不匹配,SecureSphere将生成“值类型违反”。
各个参数都拥有主值类型和扩展值类型。
主值类型及扩展值类型列表定义了参数值中允许的字符组。
正则表达式-SecureSphere用户可能会要求严格限制未学习的(即手动插入的)类型的参数值。
示例:
❍日期应为美国格式(月,日)而不是欧洲格式(日,月),或者需要使用特殊分隔符(使用“:
”,而不是“/”或“”)。
❍信用卡号码必须为4组4位号码,且第一组需与5个特定号码中的某一个匹配。
这些类型限制可以通过正则表达式来实现。
可用操作
可对特征执行以下操作:
❍手动添加/编辑/删除URL
❍在学习模式和包含模式之间手动切换URL
❍锁定和释放URL和字典
❍定义/删除参数前缀
❍添加/移除URL参数
❍确定参数的最小和最大字符数
❍确定参数是否必需
❍定义参数值类型
❍释放只读参数
❍定义URL模式
❍定义Web应用程序用户跟踪
已断开的链接或引用
选择一个已断开的链接或引用时,SecureSphere系统允许您查看其引用者(即指向该链接的URL)。
已断开的链接
已断开的链接是站点页面上指向不存在的URL的链接。
用户单击该链接时,将获得一个404NotFound应答。
已断开的链接是多方面的原因造成的。
例如:
页面已被刻意移除,但某些指向该页面的链接仍被保留。
另一个原因可能是攻击者试图从站点删除页面,或者在维护作业中,页面被错误删除。
SecureSphere®自动识别已断开的链接并将其存储在特征中。
已断开的引用
已断开的引用是指向受保护网站上的某个页面的Web链接。
与已断开的链接不同,已断开的引用出现于外部网站(例如:
目录和搜索引擎)而不是受保护的网站本身。
用户单击已断开的引用将会生成一个对受保护网站上的不存在的URL的请求,并在响应中获得一个404NotFound应答。
SecureSphere自动识别已断开的引用并将其存储在特征中。
过滤URL
SecureSphere®特征浏览器可以根据URL的特征过滤将要显示的URL。
“过滤URL”对话框显示所有可以用于过滤查询的字段。
如果填写多个字段,则可以在字段之间使用AND操作符。
例如:
如果“主机”字段设置为“myhost”,“HTTP方法”设置为“GET”,则浏览器将会显示所有属于“myhost”并使用“GET”方法的URL。
请注意,您可以为所有字段选择等于(=)或不等于(<>)。
对于“出现次数”字段,您可以使用小于(<)和大于(>)。
浏览器将显示所有URL:
❍选择=时,与输入值相等的URL
❍选择<>时,与输入值不相等的URL
❍选择>时,出现次数大于输入值的URL
❍选择<时,出现次数小于输入值的URL
对于URL字段,您还可以选择“LIKE”选项。
例如:
home/ab将返回所有包含文本“home/ab”的URL。
注意:
过滤器选项为显示选项。
它修改显示,以使其仅包含过滤后的URL,而不会在特征建模进程中过滤任何URL。
SOAP和XML显示
SecureSphere®自动识别包含XML和SOAP内容的URL。
对于各个SOAP/XMLURL,SecureSphere将显示该URL中所有已学习的SOAP操作。
如果URL不包含任何SOAP操作,但包含XML操作,则SecureSphere将其作为默认SOAP操作显示。
URL切换至保护模式时,SecureSphere会随时就使用未授权SOAP操作访问URL的尝试调用未授权的SOAP操作违反。
SecureSphere会将XML文件分解为结构。
每个结构代表一个值。
结构是通过使用包含所有值的嵌套标记的完全分级结构创建的。
例如:
基于以下模式的XML文件:
将使用以下结构表示:
XML/purchaseOrder/comment
XML/purchaseOrder/item/productName
XML/purchaseOrder/item/quantity
XML/purchaseOrder/item/Price
系统会自动学习这些结构,并会将它们添加至SOAP操作的“参数”部分。
对于这些结构,SecureSphere学习其最大和最小大小、值类型以及是否必需(和其学习常规URL参数的方式完全一致)。
当一个与特征不匹配的请求到达时,SecureSphere将调用“XML值长度”、“XML值类型”和“未找到必需XML属性/元素”违反。
对于每个URL,SecureSphere还将学习除了作为SOAPURL访问,该URL是否还可以作为常规URL访问。
这取决于URL是否具有与其关联的HTTP方法(您可以对此进行编辑)。
如果URL不具有HTTP方法,则意味着该URL只能作为SOAPURL访问,SecureSphere将随时就某人试图将该URL作为非SOAPURL访问调用“对仅适用于SOAP的URL的非SOAP访问”违反。
对于未学习或配置为SOAPURL的URL,系统将随时就某人试图将该URL作为SOAPURL访问调用对非SOAPURL的SOAP访问违反。
URL模式特征
SecureSphere管理员可以在URL路径中定义模式,以消除大型站点或动态站点中经常遇到的问题。
假设有一个站点,对于每个用户都有一个不同的文件夹,这些文件夹包含相同的文件。
例如:
所有文件夹/mickey/和/dave/均包含文件show.asp和order.asp。
对于每个用户,该站点都会引入两个新的URL,因此SecureSph