摘要: 摘要: IPS(入侵防护系统)和WAF(Web应用防护系统)两款产品有不同的使用场景,随着Web应用发展带来的复杂度,对安全性要求也日趋增高,Waf的出现是顺应了市场和技术的需要,本文从对比角度来分析,是为了从差异中让读者更清晰的理解Web安全防护产...
摘要:
IPS(入侵防护系统)和WAF(Web应用防护系统)两款产品有不同的使用场景,随着Web应用发展带来的复杂度,对安全性要求也日趋增高,Waf的出现是顺应了市场和技术的需要,本文从对比角度来分析,是为了从差异中让读者更清晰的理解Web安全防护产品的技术特征。
关键词:WAF IPS WEB应用防护 绿盟科技
谁是最佳选择?
Web应用防护无疑是一个热门话题。由于技术的发展成熟和人们对便利性的期望越来越高,Web应用成为主流的业务系统载体。在Web上“安家”的关键业务系统中蕴藏的数据价值引起攻击者的青睐,网上流传的Web漏洞挖掘和攻击工具让攻击的门槛降低,也使得很多攻击带有盲目和随机性。比如利用GoogleHacking原理的批量查找具有已知漏洞的应用程序,还有SQL批量注入和挂马等。但对于重要的Web应用(比如运营商或金融),始终有受利益驱动的黑客进行持续的跟踪。
如果说传统的“大而全”安全防护产品能抵御大多数由工具产生的攻击行为,那么对于有针对性的攻击行为则力不从心。而WAF正是应需求而生的一款高端专业安全产品,这也是市场需求细化的必然趋势。但由于其部署和功能方面与IPS有类似,有人提出疑问,为什么不能用IPS,或者说WAF与IPS有什么异同?谁更适合保护Web服务器?
这些疑问其实是有道理的,差异化的产生在于高端需求是不同的,从而需要细化功能贴合具体需求和符合应用现状的产品,这也是用户需求是随着业务自身的发展所决定的。
保镖和保安
为了更好的理解两款产品差异性,我们先用这个保镖(WAF)和保安(IPS)比喻来描述。
大楼保安需要对所有进出大楼人员进行检查,一旦发现可疑人员则禁止他入内,但如果混进“貌似忠良”的坏人去撬保险柜等破坏行为,大楼保安是无能为力的。
私人保镖则是指高级别、更“贴身”的保护。他通常只保护特定的人员,所以事先需要理解被保护人的身份、习惯、喜好、作息、弱点等,因为被保护人的工作是需要去面对不同的人,去不同的场合,保镖的职责不能因为危险就阻止、改变他的行为,只能去预见可能的风险,然后量身定做合适的保护方案。
这两种角色的区别在于保安保护的是整个大楼,他不需要也无法知道谁是最需要保护的人,保镖则是明确了被保护对象名单,需要深刻理解被保护人的个性特点。
图 1.1 保镖和保安
通过上面的比喻,大家应该明白两者的之所以会感觉相似是因为职责都是去保护,但差异在于职能定位的不同。从技术原理上则会根据定位来实现。下面通过几个层面来分析WAF和IPS的异同。
事件的时间轴
对于安全事件的发生,有三个时间点:事前、事中、事后。传统的IPS通常只对事中有效,也就是检查和防护攻击事件,其他两个时间点是WAF独有的。
图 1.2 事件时间轴
如上图所示,事前是指能在事件发生之前通过主动扫描检测Web服务器来发现漏洞,通过修复Web服务器漏洞或在前端的防护设备上添加防护规则等积极主动手段来预防事件发生。事后则是指即使Web服务器被攻击了,也必须有网页防篡改功能,让攻击者不能破坏网站数据。
为什么不能具备事中的100%防护能力?其实从以下几个方面就知道对于事中只能做到相对最佳防护而不能绝对,因为:
1. 软件先天是有缺陷的,包括应用到第三方的组件和函数库无法控制其安全性;
2. 应用程序在更新,业务是持续发展的、动态的,如果不持续监控和调整安全策略,也是会有疏漏的;
3. 攻击者永远在暗处,可以对业务系统跟踪研究,查找漏洞和防护缺陷,用各种变形繁杂的手法来探测,并用于攻击;
4. 任何防护设备都难以100%做到没有任何缺陷,无论是各种算法还是规则,都是把攻击影响降低到最小化。
所以需要用一个可闭环又可循环的方式去降低潜在的威胁,对于事中疏漏的攻击,可用事前的预发现和事后的弥补,形成环环相扣的动态安全防护。事前是用扫描方式主动检查网站并把结果形成新的防护规则增加到事中的防护策略中,而事后的防篡改可以保证即使疏漏也让攻击的步伐止于此,不能进一步修改和损坏网站文件,对于要信誉高和完整性的用户来说,这是尤为重要的环节。
图 1.3 WAF安全闭环
如果仅仅是对于事件的时间轴有区别,那么还是可以采用其他产品来进行辅助,但关键的是事中的防护也是有深度的差异,那么下面我们来谈谈对于事中的差异。
纵深度差异
事中,也就是实时防护,两者的区别在于一个是纵横度,一个是深度。IPS凸显的优势在于纵横度,也就是对于网络中的所有流量进行监管,它面对的是海量数据,下图的TCP/IP模型中网络流量从物理层到应用层是逐层递交,IPS主要定位在分析传输层和网络层的数据,而再往上则是复杂的各种应用层协议报文,WAF则仅提供对Web应用流量全部层面的监管。
图 1.4 数据结构图
监管层面不同,如果面对同样的攻击,比如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