背景

在大多数情况下,“安全”是一个形容词,安全对企业来说最大的价值是保驾护航。
保驾护航这一目标具体到执行方法层面,则是风险管理。

假设给一家企业的安全打分,满分是100分,那么他的安全分 结合外部/内部环境变化也会不断浮动。
在上述背景下,风险管理细化的要怎么做?拆开看:风险 + 管理。知道有什么风险,通过一系列建设/活动,降低该风险的影响。
如何评价风险管理做的好不好? 理想一点量化看,安全分 = 100分 - 风险1影响 - 风险2影响 - 风险N影响。

对于大部分公司来说,由于业务形态、IT基础设施大同小异,面临的风险也会近似。
因此在企业安全建设过程中,可复用的风险解决方案、以及落地经验我认为是较为宝贵的,值得和同行交流,查漏补缺。

机缘巧合本人有幸因工作需要,在工作中穿插了一小段外采WAF相关的工作,如今项目已完结收尾。因此基于上述背景以及当下大部分企业现状,本文主要记录一些WAF,(主要为外采WAF,非自研WAF)落地经验,记录一些流程方法,技术类的干货较少,但:

  • 对于有类似需求且完全没有经验同学来说,可以偷懒一点照着这个SOP执行就能落地;
  • 对于学生来说,可以对甲方安全要做什么事儿从中管中窥豹,判断是不是自己想从事的方向;
  • 对于行业前辈来说,可能会发现记录的都是老生畅谈的基础常识,可以一笑而过。

开始时间:2023年7月28日 下午12:53:06
更新时间:2023年12月10日 下午1:48:29

目标1:方案制定,要达成什么效果,能付出多少成本 (买个waf or 自研?)

Part1 明确现状。首先要明确WAF保护的目标是什么?有多少域名需要保护?

1、规模稍微大一些的公司咨询公司SRE、域名负责人团队给一份完整的域名资产清单,从中结合域名属性(是否有http流量、内外网、qps、后端业务形态)明确分母 —— 哪些域名是一定需要接的,哪些是资源不足的情况下可以舍弃的。个人经验来看,外网域名应接尽接。
2、除了正向收集,犄角旮旯的域名常常无人关注从而成为漏网之鱼(投并购公司等),因此被动收集资产也很重要:主动扫描、流量采集、dns解析记录等等可作为查漏补缺,举一反三作为扩充分母的重要来源。
3、持续完善1、2沉淀到系统,域名相关数据(整体域名数量、应接WAF数量、无需接入原因) 应成为建设时期每天需要晾晒的指标之一,且需要投入人员运营。

Part2 怎么做?方案选择 + 争取资源。

目标分母明确后,后续就是怎么做的事儿了,无非自研 + 外采商业WAF(腾讯云、阿里云、长亭等)。就两者选择来说结合自身情况选择即可。

  • 自研特点:成本上前期投入人力成本大,但后续维护成本低。 最大的优势是可结合甲方需求快速迭代,定制化程度高;最大的缺点是需要有成熟的方案经验,否则该踩的坑一个可能落不下;总之,适合业务增长规模较大的公司。
  • 外采特点:短平快,评估各家能力确认要买哪家后走采购流程,协调各方走灰度上线即可;优势:快速补全能力,规则有专业同学维护开箱即用;缺点:每年都要交钱,瓶颈能力完全取决于商业WAF;总之,适合域名数量不多没有自研能力又想快速具备防御能力的公司,或因架构问题天然无法接自研waf的场景;

最终安全同学需要明确最终的调研结论(包含现状、目标、解决方案、付出的成本)等等,向上同步争取需要的资源,拿到决策层的支持与认可后,再开整。

上述过程可以抽象一下,举个不太恰当的比喻:
雇主:我担心自己的安全,快来保护我。
保镖:整体风险是xxx,方案是yyy,先干这个再干那个,能帮你解决zzz%的风险。但是需要投入这么多钱,整不整?
雇主:整。
保镖:好的,开干。

目标2:怎么接?

无论是自研还是外采,执行的过程中都有一些准则可以参考:
1、节奏选择:可行性验证,小范围灰度,整体排期
2、变更原则:可灰度、可观测、可回滚

自研由于各家实现方案不同,结合实际情况看即可,如:控制粒度可以放在安全侧、也可以放在基础组件侧,都能完成目标。自研最核心的部分是处理引擎以及运营部分(篇幅较大暂不展开),其他部分也基本可参考外采部分。

外采WAF的接入这里以SAAS WAF为例,参考的整体链路如下:域名解析 -> SAAS WAF集群(采购) -> 4/7层负载(nginx集群)【可选】 -> 真实业务。

因此接入方法很简单:
1)域名解析:粒度一般控制在域名负责人、sre处。【仅本处需要变更,但需跨团队沟通】
2)WAF集群:关注稳定性,商业WAF一般都有专人维护,安全团队确保负载qps不超套餐、定期续费即可。
3)4/7层负载:接入过程中关注稳定性即可。
4)业务层:关注业务自己的qps波动即可。

上述过程涉及到 安全、sre、业务、商业waf团队,因此整个过程需要做好充分的周知、对齐节奏后,走标准变更流程。

其他的一些注意点:
1、WAF集群配置相关:tls版本需满足等保合规要求、证书的整个生命周期管理避免到期。
2、4层负载(lvs):4层清除不可信的tcp option字段,避免ip伪造;
3、7层nginx集群::7层ACL的仅允许来源waf的请求(避免攻击者找到真实后端ip绕过waf直接访问)、真实ip的获取(将真实的来源ip设置为wa集群携带过来的XFF字段)

目标3:接完了没?效果怎么样?

判断WAF是否接入:发个攻击请求包,判断是否拦截,拦截则代表接入。
这里可以在目标1的,域名属性中扩充一列:已接入WAF,从而统计WAF接入率 = 已接入域名数量/应接入域名数量。

但风险管理之所以是动态的就是因为变更无处不在,判断单个域名是否接入,需要定期(天维度)定期检查;接入率也需要会动态变化,运营同学需关注波动情况。

衡量指标:天维度 域名接入率。

目标4:不用了怎么下线?

随着业务发展/下线等情况,早期为了短平快快速上线,采购商业waf,但随着业务规模不断发展发现商业waf已不划算了要自研。
变更也较为简单:参目标2中的。让sre修改域名cname记录到 4/7层负载,变更过程中的原则依然和上述遵循保持一致。

几个注意点:
1、SAAS WAF续费:关注WAF集群请求数量,避免极端情况dns未生效依然存在正常业务解析;时刻做好plan B,假设需切自研WAF,商业waf建议保留1个月周期便于回滚。
2、nginx层:假设nginx做了 ACL限制,切换前需先下线ACL避免阻断业务流量。

结论

在企业安全建设过程中,为了基础防御水位的提升,(采购/自研)安全产品是必经之路。

WAF作为企业安全的必备产品之一,本文主要分享了一些外采waf落地的经验,主要涉及:流程、制度,抽象看可以简单总结为(P方案指定、D推动执行、C效果衡量)。

但就整体的风险管理来说,WAF仅仅是基础安全中相当小的一环。希望对大家有帮助。 欢迎交流:)

参考:

1、 Web 应用防火墙 - 产品分类 https://cloud.tencent.com/document/product/627/39843