读"WAF与IPS的区别总结"之摘抄

一、参考链接

        http://https://www.cnblogs.com/milantgh/p/3603127.html

        1.1 内容

               对于安全事件的发生,有三个时间点:事前、事中、事后。传统的IPS通常只对事中有效,也就是检查和防护攻击事件,其他两个时间点是WAF独有的。(这里用一下链接中的图,谢谢)

               

               这里举事中来说,事中,也就是实时防护,两者的区别在于一个是纵横度,一个是深度。IPS凸显的优势在于纵横度,也就是对于网络中的所有流量进行监控,它面对的是海量数据,下图的TCP/IP模型中网络流量从物理层到应用层是逐层递交,IPS主要定位在分析传输层和网络层的数据,而再往上则是负责的各种应用层协议报文,WAF则仅提供对Web应用流量全部层面的监管。(再次用一下图,谢谢)

              

              监管的层面不同,如果面对同样的攻击,比如SQL注入,它们都是可以防护的,但防护的原理有区别,IPS基本是依靠静态的签名进行识别,也就是攻击特征,这只是一种被动安全模型。如下是一个Snort的告警规则: 

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS 
(msg:“SQL Injection - Paranoid”; flow:to_server,
established;uricontent:“.asp”;pcre:“/
(\%27)|(\‘)|(\-\-)|(%23)|(#)/i”; 
classtype:Web-application-attack; sid:9099; rev:5;)
                这里主要是检查在SQL注入中提交的元字符,包括单引号(')和双横(-),从而避免注入'1 or 1=1-- 之类的攻击发生,同时又要考虑这些元字符转换成hex值来逃脱过滤检查,于是又在规则里增加了其对应的十六进制编码后的字符串。

                 当然,要从签名特征来识别攻击要考虑的东西还很多,不仅元字符还有SQL关键字,包括:select insert update等,以及这些关键字的大小写变形和拼接,利用注释逃脱过滤,如下示例:

                 使用大小写混杂的字符:SeLecT fRom"

                 把空格符替换为TAB符或回车符:select[TAB]from

                 关键词之间使用多个空格:select from

                 字符串的数值编码:0x414141414141或0x41004100410041004100

                 插入被数据库忽略的注释串:sel/**/ect fr/**/om select/**/ from

                 使用数据库支持的一些字符串转换功能:char(65) 或chr(65)

                 使用数据支持的字符串拼接操作:'sel'+'ect'+'fr'+'om'"、"'sel'||'ect\||'fr'||'om'可以设想一下,如果要检测以上的变形字符后的攻击则需要增加相应的签名特征,但更重要的是要充分考虑转换编码的种类,上面示例的snort的规则把可疑字符以及其转换后的Hex值放入同一条规则里检查,如果对于变形后繁多的攻击种类,这是滞后的并且会造成臃肿。

                 对于比较粗浅的攻击方式两者都能防护,但市面上大多数IPS是无法对报文编码做多重转换的,所以这将导致攻击者只需构建诸如转换编码、拼接攻击语句、大小写变换等数据包就可绕过输入检查而直接提交给应用程序。而这恰恰是WAF的优势,能对不同的编码方式做强制多重转换还原成攻击明文,把变形后的字符组合后再分析。

                 IPS和WAF通常是串联部署在Web服务器前端,对于服务器和客户端都是透明的,不需要做任何配置,似乎都是一样的组网方式,其实有很大差异。首先我们看看市面主流WAF支持的部署方式: 

                 a.桥模式        b.路由模式         c.反向代理         4.旁路模式(非串联)

                 这两者串联部署在Web服务器前端时,市面上的大多数IPS均采用桥模式,而WAF是采用反向代理模式,IPS需要处理网络中所有的流量,而WAF仅处理与Web应用相关的协议,其他的给予转发,如下图:

                  

                   桥模式和反向代理模式的差异在于:桥模式是基于网络层的包转发,基本都没有协议栈,或只能简单的模拟部分协议栈,分析网络报文流量是基于单包的方式,所以要处理分片报文、数据流重组、乱序报文、报文重传、丢包都不具备优势。同时网络流量中包括的协议种类是非常多的,每种应用层协议都有自身独特的协议特征和格式要求,比如Ftp、SSH、Telnet、SMTP等,无法把各种应用流量放到应用层协议栈来处理。

                   绿盟科技WAF系统内嵌的协议栈是经过修改和优化的,能完全支持Http应用协议的处理,这意味着必须遵循RFC标准来处理Http报文,包括如下主要RFC:

                   a.RFC 2616 HTTP协议语法的定义        b.RFC 2396 URL语法的定义         c.RFC 2109 Cookie是怎样工作的     d.RFC 1867 HTTP如何POST,以及POST的格式

                   RFC中对http的request行长度、URL长度、协议名称长度、头部值长度等都是有严格要求的,以及传输顺序和应用格式,比如html参数的要求、Cookie的版本和格式、文件上传的编码 multipart/form-data encoding等,这些应用层内容只能在具有完整应用层协议栈的前提下才可正确识别和控制,对于不完整的丢包,重传包以及伪造的畸形包都会通过协议校验机制来处理。

                   WAF对https的加解密和多重编码方式的解码正是由于报文必须经过应用层协议处理。IPS由于其自身的桥模式架构,把HTTP会话"打碎"成多个数据包在网络层分析,而不能完整地从应用层角度来处理和组合多个报文,并且应用层协议繁多,全部去支持也是不现实的,产品的定位并不需要这样。

                    在前面谈到IPS的安全模式是应用了静态签名的被动模式,那么反之就是主动模式。WAF的防御模式是两者都支持的,所谓主动模式在于WAF是一个有效验证输入的设备,所有数据流都被校验后再转发给服务器,能增加应用层逻辑组合的规则,更重要的是具备对Web应用程序的主动学习功能。

                    学习功能包括:

                    a)监控和学习进出的Web流量,学习链接参数类型和长度、form参数类型和长度等;

                    b)爬虫功能,爬虫主动去分析整个Web站点,并建立正常状态模型;

                    c)扫描功能,主动去扫描并根据结果生成防护规则。

                    基于学习的主动模式目的是为了建立一个安全防护模型,一旦行为有差异则可以发现,比如隐藏的表单、限制型的Listbox值是否被篡改、输入的参数类型不合法等,这样在面对多变的攻击手法和未知的攻击类型时能依靠安全防护模型动态调整防护策略。

                    WAF更多的特性,包括安全交付能力、基于cache的应用加速、挂马检查、防DDOS攻击、符合PCIDSS的防泄密要求等都表明这是一款不仅能攻击防护,同时又必须在满足客户体验和机密数据防护的高度集成的专业产品。

                   

          

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值