产品架构
大家知道IPS和WAF通常是串联部署在Web服务器前端,对于服务器和客户端都是透明的,不需要做任何配置,似乎都是一样的组网方式,其实有很大差异。首先我们看看市面主流WAF支持的部署方式:
l 桥模式
l 路由模式
l 反向代理
l 旁路模式(非串联)
这两者串联部署在Web服务器前端时,市面上的大多数IPS均采用桥模式,而WAF是采用反向代理模式,IPS需要处理网络中所有的流量,而WAF仅处理与Web应用相关的协议,其他的给予转发,如下图:
图 1.5 多协议图
桥模式和反向代理模式的差异在于:桥模式是基于网络层的包转发,基本都没有协议栈,或只能简单的模拟部分协议栈,分析网络报文流量是基于单包的方式,所以要处理分片报文、数据流重组、乱序报文、报文重传、丢包都不具备优势。同时网络流量中包括的协议种类是非常多的,每种应用层协议都有自身独特的协议特征和格式要求,比如Ftp、SSH、Telnet、SMTP等,无法把各种应用流量放到应用层协议栈来处理。
绿盟科技WAF系统内嵌的协议栈是经过修改和优化的,能完全支持Http应用协议的处理,这意味着必须遵循RFC标准(Internet Requests For Comments)来处理Http报文,包括如下主要RFC:
l RFC 2616 HTTP协议语法的定义
l RFC 2396 URL语法的定义
l RFC 2109 Cookie是怎样工作的
l RFC 1867 HTTP如何POST,以及POST的格式
RFC中对Http的request行长度、URL长度、协议名称长度、头部值长度等都是有严格要求的,以及传输顺序和应用格式,比如Html参数的要求、Cookie的版本和格式、文件上传的编码 multipart/form-data encoding等,这些应用层内容只能在具有完整应用层协议栈的前提下才可正确识别和控制,对于不完整的丢包,重传包以及伪造的畸形包都会通过协议校验机制来处理。