本文作者:secsky
一、前言
WEB攻击是企业面临的主要安全威胁之一,而WAF作为应用安全防御体系中非常重要的基础安全设施,一直以来都是企业WEB攻防对抗的主战场。WAF不仅肩负着检测与防护WEB攻击的重任,还要具备高效、稳定、高可用以及快速扩展能力。在企业中WAF的部署上线并不意味着安全工作的结束,而仅仅是万里长征第一步。如果没有专业的安全人员/团队进行持续、有效的安全运营,WAF根本无法充分发挥其应有的安全价值,那么企业的应用安全自然也无法得到有利保障。
既然WAF安全运营如此重要,那么企业究竟该如何实现有价值并且持续、有效的安全运营呢?这是一个值得我们思考和积极探索的话题。本文将分享VIPKID在实现体系化WAF安全运营道路上的思考、探索与落地实践。
全文共分为六大部分,第一部分对WAF安全运营的背景和必要性进行了说明;第二部分主要围绕WAF安全运营对于企业的价值进行了探讨;第三部分重点定义和讲解了WAF安全运营的目标是什么?以及如何衡量和评价WAF安全运营的效果?;第四部分主要分享为了达成制定的WAF安全运营目标,应该从哪几个方面入手和需要做哪些事情;第五部分详细介绍了体系化WAF安全运营实践的落地经验和踩过的坑以及填坑过程;第六部分是对前面几个部分的总结。
二、WAF安全运营价值
随着互联网的发展和企业对于安全的理解、认知程度的提升,现如今WAF已经成为绝大多数企业的安全标配。虽然每家企业在WAF产品的选择和部署模式上有所差异,但在WAF部署上线后都会面临一个共同的问题,那就是如何在不影响业务的前提下,有效的检测与防御各类主流WEB攻击,让WAF充分发挥其应有的安全价值。
由于WEB攻防对抗是一个持续和不断变化的过程,新的WEB安全漏洞和攻击手段层出不穷,加上真实业务场景的多变和复杂度,无论多么优秀的WAF产品,除了产品本身安全、稳定性和性能要满足业务需求外,在部署上线后都会不可避免的存在误报和漏报的问题。在大型互联网的复杂业务场景和高并发大流量环境下除了面临着如何有效识别WAF误报和漏报的安全挑战外,大量接入WAF的域名管理、WAF的覆盖度以及不同域名下安全策略的维护也是需要企业安全团队解决的现实问题。在这种背景和需求下,WAF安全运营应用而生。
WAF安全运营的核心价值在于通过一系列科学、可衡量和体系化的运营手段来有效解决WAF部署上线后面临的各种问题和发现WAF的不足之处并且推动WAF产品不断迭代完善。最终形成一个正向循环来持续提升企业的WEB攻防对抗能力。
持续、有效的安全运营好比是身体的新陈代谢,可以让WAF变得更有生命力。否则即便部署了全世界最优秀的WAF产品,如果没有持续、有效的安全运营,也只是形式上的WAF,并不能真正发挥其应有的安全价值,保护企业的应用安全自然也就无从谈起。
三、WAF安全运营目标
如果用一句话概括WAF安全运营目标,可以归纳总结为:在保证一定资源投入和不影响业务的前提下,通过体系化的安全运营手段有效检测与防御各类WEB攻击,控制各项运营指标在可接受范围内,保障企业应用安全。
那么问题来了,如何评价和衡量WAF安全运营效果呢?这就需要定义一些运营指标来量化WAF安全运营工作。在WAF安全运营工作中建议各位读者重点关注以下几个核心指标,通过努力将各项指标控制在可接受范围内,逐步提升WAF安全运营成熟度。
说明:WAF的可用性、稳定性和性能指标都属于WAF产品本身极其重要的基础指标,如果不能满足业务需求是不允许上线到生产环境的。但在安全运营场景中我们重点关注安全性相关指标,因此本文提到的WAF安全运营指标默认未包含这些指标。
四、WAF安全运营规划
通过前面的介绍,相信各位读者对于WAF安全运营的价值和目标都有了一个比较清晰的理解,那么下面我们就来谈谈WAF安全运营规划如何做的话题。首先,我们来看一张相对完整的WAF安全运营规划图,先有一个整体的认识。
WAF安全运营体系包含技术、管理、指标和人员四个方面:
1、技术方面:
由接入WAF域名的全生命周期管理(WAF接入、配置变更、域名下线)和攻击检测与响应(漏报与误报分析、安全策略管理、安全事件闭环处置)两大部分组成,是整个体系中最核心,也是工作量最大的部分。其中有很多工作可以通过自动化方式实现,这样一来可以提升效率,二来可以让安全人员从低效和繁琐的基础运营工作中解脱出来,把时间花在其他更有价值的事情上。
2、管理方面:
这部分主要是要求建立WAF安全运营的管理制度(至少要包含WAF接入和变更、日常运营的流程与标准,以及应急处置流程与规范等),明确人员职责,并按照建立的流程和标准操作,避免随意操作导致线上故障,通过管理手段降低潜在风险。
3、指标方面:
通过技术+管理手段将WAF持续运营起来后,可以通过建立WAF安全运营指标和持续关注各项核心指标变化来量化WAF安全运营工作,从而较为科学和客观的评价和衡量WAF安全运营工作的效果。基于实际的资源投入和公司安全风险,制定合理的目标,最终实现持续提升公司WAF安全运营成熟度的目的。在WAF安全运营中建议重点关注WAF接入覆盖度、WAF误报和漏报率、MTTD和MTTR以及阻断模式开启率等几个核心指标。
4、人员方面:
即使有了优秀的WAF产品和合理的规划,如果没有专业的人执行也无法有效落地,最终只能是空中楼阁。所以,有效的WAF安全运营需要有专业的安全人员/团队来实现。
以上四个方面是相辅相成,缺一不可的。管理是手段,技术是保障,指标是抓手,而专业的安全人员/团队是实现持续和有效安全运营的前提和基础。
五、WAF安全运营实践
1、接入WAF域名的全生命周期管理
在中小型互联网企业,由于接入WAF的域名数量通常不会太多,所以这块的运营成本不高,一般来讲不会受到特别的关注和重视。但在大型互联网企业,接入WAF的域名数量众多,加上业务的快速迭代,如何管理好这些域名便成了问题。这块面临的挑战主要来自以下三个方面:
效率低:由于WAF的部署模式和位置不同,WAF的接入配置也会有所区别。但通常都是由运维或研发发起接入申请,由WAF运营人员完成接入的配置操作。对于WAF运营人员来讲,这是一个低效、繁琐和重复性较强的工作,尤其是在多云分布式架构环境下,如果手工来完成WAF接入工作,同样的操作需要重复多次。长期下来,非常容易产生厌烦情绪。
易出错:在大型互联网企业由于业务众多,接入WAF的域名可能会有成百上千个。大量域名的手动操作变更非常容易出错或导致配置不一致,进而影响业务。
变化快:由互联网企业的特性,经常会有新业务上线或老业务下线的情况发生。如果不是流程特别完善和成熟的公司,很可能会出现新上线业务没有接入WAF或老的业务下线WAF配置没有变更的事情。长此以往,WAF上接入的域名只增不减,数量上会越来越多,最终导致大量运营成本(时间+人员+金钱)的浪费。
以上这些都是我们在实际WAF安全运营过程中遇到过的真实场景和问题。为了将WAF安全运营人员从以上繁琐、低效和重复的工作中解脱出来,更加专注于安全本身,我们实现了接入WAF域名全生命周期的自动化和系统化管理,并将此功能集成至自研的统一安全管理平台,极大的提升了WAF安全运营人员的效率和幸福感。
1.1、WAF接入自动化
新上线业务接入WAF:
由安全提供WAF接入API,将此功能集成至公司统一的上线系统,实现新上线业务自动化接入WAF,提升接入效率和用户体验,并记录日志,便于后续审计和问题定位。
已上线业务接入WAF:
由安全提供WAF接入API,将此功能集成至运维工单系统,由运维或业务提交接入工单,系统调用WAF接入API实现自动化接入,并记录日志,便于后续审计和问题定位。
WAF接入覆盖度监控:
在有大量公网域名和业务快速变化的场景下,如果单纯依靠流程保证WAF接入覆盖度,难免会有遗漏,而且这是一个非常低效和重复度较高的工作,在有条件的情况下这部分工作完全可以实现自动化。利用自动化技术+管理手段将WAF接入覆盖率提升和保持一个较为理想的水平,并实现持续的自动化监控。
实现思路和过程:首先,WAF接入覆盖度监控服务会调用WAF API获取所有已接入WAF域名数据,同时也会调用另外一个内部安全监控服务获取到所有对公网开放域名;然后将两部分信息进行对比分析(如果发现某域名暴露在公网但未接入WAF则命中策略)后可以输出一份未接入WAF域名列表,并且可以基于数据计算出WAF接入覆盖率。再后面流程相对简单,直接看图就可以一目了然,因篇幅关系这里不再赘述。
1.2、WAF配置变更工单化
由安全提供WAF接入API,将此功能集成至运维工单系统,由运维或业务提交变更工单,系统调用WAF API实现自动化变更,并记录日志,便于后续审计和问题定位。
风险提示:WAF配置变更强烈建议加入审批流程和由系统限制在非业务高峰执行,避免业务高峰期操作对业务造成不可预知的影响。
1.3、已接入WAF域名下线监控
这部分的技术实现思路和原理与上面WAF接入覆盖度监控类似,只是目标和调用的API不同而已。
实现思路和过程:首先,已接入WAF域名下线监控服务会调用WAF API获取所有已接入WAF域名数据,同时也会调用另外一个内部域名变更监控服务获取到公司所有已下线域名数据(在DNS服务器已无域名解析记录);然后将两部分信息进行对比分析(如果DNS上域名无解析记录,但WAF上依然存在该域名的配置信息,则判定为该域名已下线但WAF未同步删除相关配置信息)后可以输出一份已无域名解析记录但WAF未同步删除记录的域名列表,最后会自动发送监控分析报告给到相关人员进行人工确认,如果没有问题会在约定时间进行自动化的删除操作。
2、WAF误报分析与处置
从WAF产品厂商或单纯技术研究角度出发,花大力气研究如何降低WAF误报是一件非常有价值和值得鼓励的事情。但在甲方企业,由于资源(人力、时间、金钱)的限制,如果安全团队和公司片面追求和要求WAF实现零误报,至少以目前业界WAF的检测技术和在复杂多变的业务场景下,是一件不太现实并且ROI非常低的事情。
既然客观事实是这样,为了平衡安全与业务的关系,我们只能退而求其次,尽可能的降低因WAF误报对业务造成的影响。
2.1、WAF误报分析
要想分析误报,首先需要能够发现误报。在海量攻击流量/日志中发现误报是一件非常有挑战但同时也是一件非常有意思的事情。这个工作要求WAF安全运营人员不仅要有丰富的WEB攻防对抗经验,还要熟悉具体的业务场景,否则很多时候很难做出准确的判断。除此之外,更重要的是WAF安全运营人员要对攻防对抗有强烈的好奇心,从心底真正热爱和享受这个过程。否则的话这将只是一个非常枯燥的数据分析工作,毫无乐趣可言。
我们先来分析下都有哪些场景可能会产生WAF误报?一般在WAF版本未进行升级和稳定运营的情况下,有两种场景可能会出现WAF误报:
WAF安全策略变更:比如为防御新型WEB安全漏洞/攻击而紧急上线了新的安全策略,又或者为了更精准识别和防御某类WEB攻击修改了现有安全策略导致产生误报等;
业务变更:比如新业务上线未经严格验证直接开启WAF阻断,或者现有业务接口发生变更后触发WAF安全策略等;
在WAF安全运营实践中有主动和被动两种发现误报的方式,下面会分别展开介绍。
主动方式发现误报(主要由WA安全运营人员通过人工+技术手段发现误报):
从企业风险容忍度考虑,少量WAF误报其实是可以接受的,不能接受的是大规模WAF误报和影响到企业核心业务的WAF误报。所以我们可以根据实际业务场景动态调整WAF安全策略,以平衡安全与业务的关系。
WAF误报的发现与分析需要结合企业具体的业务场景来看,单纯通过WAF攻击日志维度识别误报的准确率和最终效果都很难得到保障,我们可以尝试换个视角来思考和解决这个问题。上面我们分析了可能产生WAF误报的场景,顺着这个思路考虑,可以有两条路径发现潜在的WAF误报:
A、先从WAF攻击日志中提取出所有被触发的安全策略/规则,从中找到在指定时间范围内新上线或有过变更的安全策略/规则,然后把在指定时间范围内触发这部分安全策略/规则的攻击IP全部提取出来,接着分析这些IP的攻击日志,如果发现这部分攻击IP中有一定比例均只触发了新上线或新变更的安全策略/规则,并且这部分攻击IP中有一定比例之前均未有过攻击行为,则判定为疑似误报,可以发出告警由WAF安全运营人员进行二次人工确认;
B、先从WAF攻击日志中提取出所有URL,把其中大量自动化攻击产生的不存在的URL过滤掉,然后把剩余URL和URL资产库进行对比分析,从中进一步提取出在指定时间范围内新上线或有过变更的URL,这里又可以分为两种情况,对于新上线的URL可以把对应的攻击IP提取出来进一步分析,如果发现这些攻击IP中有一定比例只有访问该URL时才触发安全策略/规则,并且之前均未有过攻击行为,则判定为疑似误报。也可以把这些新上线URL触发的安全策略/规则提取出来,如果发现触发的都是同一安全策略/规则,并且来自大量不同的IP,同时这些IP之前均未有过攻击行为,则判定为疑似误报;对于有过变更的URL分析思路类似,这里不再赘述。
除了上面这几种主动发现WAF误报的思路和实践,还有其他很多种不同的WAF误报识别与分析技术。无论采用什么样的WAF误报分析方法和技术,最终目标都是为了能够有效发现WAF误报。
WAF误报分析是一个需要持续做的工作,以上这些方法都可以实现自动化,这样一来可以提升发现效率,及时发现误报,也可以降低WAF误报发现成本,让WAF安全运营人员把精力花在精准WAF误报分析确认和WAF误报自动化识别工具的完善上。
被动方式发现误报(需要依靠内部人员+外部用户反馈,可作为主动发现方式的有效补充):
单纯依靠主动方式无法有效发现所有WAF误报,因此需要被动方式作为补充。由于被动方式发现误报需要依靠他人反馈,所以我们可以在反馈通道和WAF产品设计上下些功夫。
首先,要建立起内、外部的WAF误报反馈机制和通道,并保证通道的畅通,让其他人愿意和能够及时、简单的反馈WAF误报;
其次,设计友好的WAF阻断页面,让正常用户可以做到误报的一键反馈;
同时,利用IM(钉钉/微信/其他)及时把误报告警发送至WAF安全运营人员进行分析和处理;
最后,记录所有历史误报反馈至WAF安全运营系统和进行持续的误报反馈趋势及相关指标的监控,以便于后续分析;
风险提示:为了避免出现批量的恶意反馈,对正常的误报反馈形成干扰,一定要在接口层面做相应限制和考虑接口防刷问题。
2.2、WAF误报处置
一旦分析确认存在误报,就需要WAF安全运营人员及时进行处理。对于WAF误报的处置建议提前制定预案和建设相关应急处置自动化工具,充分考虑到各种可能出现的误报场景,根据误报的严重程度和影响面进行分级处置,并且要定期进行演练保证各项应急处置流程和工具的有效性。
WAF误报处置原则:先解决问题,后分析原因,事后必须复盘,避免同类误报反复出现。
大量WAF误报,影响范围大(大量业务系统):
这种场景比较极端,在WAF运营成熟度较高的企业极少出现。这种情况下建议一键Bypass,具体实现方式根据WAF产品形态和部署模式不同会有所区别。
大量WAF误报,影响范围大(单个业务系统):
这种情况可以临时将出现问题的域名切换至观察模式,只记录攻击日志而不实际阻断,便于后续分析确认原因,等待问题解决后再切换至阻断模式。
少量WAF误报,影响范围大(大量业务系统):
这种情况通常是由于单条安全规则/策略出现误报导致,可以临时将出现问题的安全规则/策略切换至观察模式,只记录攻击日志而不实际阻断,便于后续分析确认原因,等待问题解决后再切换至阻断模式。
少量WAF误报,影响范围小(单个业务系统):
这种情况相对常见,一般可能是因为安全规则/策略更新,或者业务变更触发了安全规则/策略导致误报;可以临时将出现问题安全规则/策略切换至观察模式,只记录攻击日志而不实际阻断。如果最终确认是安全规则/策略导致WAF误报,就进一步进行优化;如果在某些场景下WAF安全规则/策略优化空间不大,或者优化后会导致漏报增加,也可以尝试将出现误报的URL加白处理,以平衡安全和业务之间的关系。
3、利用WAF进行协同防御
在真实的WAF攻防对抗场景中,有一些攻击如果从单个请求来看很难判断出是否是攻击。比如某些接口攻击或目录/文件遍历的攻击场景。这类攻击业界普遍采用的是通过频率限制的方式去检测与防御。业界主流WAF产品基本都支持该功能,只是实现方式上有所区别。有的是产品内置功能,只需开启即可;有的需要用户通过自定义安全策略的方式实现。但是单纯的频率限制不仅非常容易被攻击者绕过,而且可能造成误报影响业务。并且如果在WAF上配置大量这样的自定义策略还会影响WAF性能。
为了不影响WAF性能,但又可以解决面临的安全问题,我们自研了一套基于大数据的WEB安全分析平台,结合攻击特征、访问行为、威胁情报等多个维度进行WEB攻击的检测与分析,利用这个平台进行不太适合在WAF上检测和比较消耗性能的分析,然后利用WAF进行攻击阻断,通过两套系统的协同配合,达到一个相对理想的WEB攻击检测与响应效果。
该平台目前实现了以下四种攻击类型的自动化检测与分析:
接口攻击:
刷业务接口是日常攻防对抗中常见的一种攻击场景。比如注册、登录、短信验证码接口等都是经常被刷的对象。这类攻击的特点是如果单纯从单个HTTP请求看,很难判断出是否存在异常。但可以尝试从行为特征维度(比如结合频率、接口访问量变化、状态码等)识别是否存在异常行为。
目录/文件遍历攻击:
这类攻击场景下有一个明显的行为特征是会在短时间内产生大量404状态码,基于这一特征,可以采用频率+状态码方式检测是否存在目录/文件遍历攻击,一般场景下对于此类攻击准确率是比较高的,但需要注意的是在某些特殊场景(比如某业务接口已下线访问会返回404,但部分客户端没有升级还持续访问老的接口就可能产生误报)下可能出现误报。为了更精准的识别此类攻击,除了频率+状态码,还可以结合访问的URL、IP信誉等维度进行综合分析。
异常行为检测:
正常的用户访问和攻击行为必然是不一样的。基于这一客观事实,我们可以尝试通过分析正常用户访问和异常访问行为上的区别来识别部分攻击行为。比如某些爬虫、信息泄露、越权漏洞的利用、接口攻击等,有时会收到意想不到的惊喜。
恶意IP封禁:
利用自建恶意IP库,从IP维度检测访问IP是否存在异常,并且实现全局协同防御。比如IP(1.1.1.1)在一定时间范围内攻击过A业务系统,该IP会被记录到恶意IP库,如果此攻击IP再访问其他业务系统(B、C、D等),也会被直接阻断。在实践中利用这种方式检测和防御自动化攻击的效果还是不错的。
风险提示:恶意IP封禁功能对攻击检测准确率要求非常高,一旦出现误报,很有可能会引发连锁反应,对业务造成大面积影响。为了降低风险,需要对进入恶意IP库的攻击IP进行严格和精准判断,并设定攻击IP有效期,失效后自动打标签。
六、写在最后
本文主要围绕WAF安全运营的价值、目标、规划与实践对WAF安全运营进行了较为全面和系统的分享,这一切的努力都是为了把WAF用好,让WAF充分发挥其应有的安全价值,最终实现保障企业WEB应用安全的目的。
当然,巧妇难为无米之炊,实现有效WAF安全运营的基本前提是需要有一个好的WAF产品。无论是自研WAF也好,还是采购商业WAF产品也罢,在企业中WAF的部署上线都只是第一步,后面还有很长的路要走。如果没有专业的安全人员/团队进行持续、有效的安全运营,即便是部署了全世界最优秀的WAF产品,也只是形式上的WAF。持续、有效的安全运营好比是身体的新陈代谢,可以让WAF变得更有生命力。
正如前面所述,WAF安全运营的核心价值在于通过一系列科学、可衡量和体系化的运营手段来有效解决WAF部署上线后面临的各种问题和发现WAF的不足之处并且推动WAF产品不断迭代完善。最终形成一个正向循环来持续提升企业WEB攻防对抗能力。
WEB攻防对抗是一个持续和不断变化的过程,会一直有新的漏洞和攻击手段产生,同时WAF的检测技术也在进化。WAF安全运营人员不能仅限于被动防御,要积极、主动的以攻击者视角去思考和发现问题,在攻防对抗实践中获得成长。
由于本人能力有限,文中肯定有一些不足之处,欢迎大家一起探讨,共同进步。
声明:本文来自安全研究与实践,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。