宙斯盾DDoS防护系统“降本增效”的云原生实践

导语

宙斯盾DDoS防护系统作为公司级网络安全产品,为各类业务提供专业可靠的DDoS/CC攻击防护。在黑客攻防对抗日益激烈的环境下,DDoS对抗不仅需要“降本”还需要“增效”。

随着云原生的普及,宙斯盾团队持续投入云原生架构改造和优化,以提升系统的处理能力及效率。本文主要介绍宙斯盾防护调度平台上云过程实践与思考。

为什么上云?

云原生作为近年来相当热门的概念,无论在公司内各部门,还是公司外各大同行友商,都受到追捧。云原生涉及技术包括容器、微服务、DevOps、持续交付等,这些新的技术和理念能带来哪些收益?在我们看来,

资源共享,动态扩缩容——“降本”

以宙斯盾防护调度平台为例,因为以前申请的物理机资源还在服役期,所以当前大部分后台服务还是运行在物理机。申请时会适当预留buffer(资源消耗跟外部攻击威胁有关,波峰波谷相差可达十倍)。这部分buffer虽然作为backup,但同时大部分时间处于空闲状态,物理机也不便于跨系统、项目共享。

在资源上云阶段,CVM已经对物理机做了虚拟化,一定程度上实现资源共享。随着容器化管理平台的出现,资源控制粒度更细。

例如在TKE平台上,一个容器分配的资源可以精确到0.1核CPU、1 MB内存,根据负载随时扩缩容。同时所有资源作为一个大池子来共享,减少资源浪费。

容器化管理,快速部署——“增效”

要提升迭代速度,除了开发环节,测试、发布、运维都需要做优化。原来物理机部署时,需要运维同学手工或者通过专门的运维发布平台来完成发布,期间还可能因为机器环境的差异出现发布失败或者异常,需要人工处理。

现在通过容器化部署,可以保证服务的运行环境一致性,避免“雪花服务器”。同时借助容器管理平台,可以实现一键发布、快速扩缩容,通用的容器容灾策略为服务的稳定性提供了基本保证。

怎么上云?

当前架构

640.webp (5).jpg

如上图所示,DDoS防护流程包括攻击检测(发现攻击)和攻击防护(攻击流量清洗及正常流量回源)。

在这个过程中,还需要一个主控“大脑”来协调检测系统和防护系统,以实现全流程的自动化处理——这个“大脑”就是防护调度平台。在检测到DDoS/CC攻击时,防护调度平台会自动化决策需要调用的防护设备机房、数量、以及需要下发的防护策略,遇上强对抗时还需要实时调整防护设备上的防护策略,其重要程度可见一斑。

当前防护调度平台整体架构如下图所示。

640.webp.jpg

·防护设备:分为ADS(Anti-DDoS System)、HTTP CC、HTTPS CC三大类,结合多年来团队在DDoS/CC攻防对抗上的积累,分别集成了各种协议/场景下的自研防护算法。防护设备部署在全球各地机房入口,在触发攻击告警后牵引并清洗攻击流量,然后回源。其上部署有管控agent,负责与后台通信、并管理防护设备。

·接入层:多点接入,内网、公网接入。管控agent启动后随机选择一个可用接入进行TCP连接。

·后台服务:多主/主备部署,向接入注册心跳,所有后台请求通过接入分发、负载均衡,所有agent请求通过接入转发。

如果按照当前架构直接部署到TKE上,系统是可以运行起来,但是由于机器部署和容器部署的特性不同,直接部署总会有些冲突、别扭的地方。

考虑方案时,我们觉得当前架构不适应TKE部署的主要地方有:

·服务发现:后台服务根据预配置的接入IP列表注册心跳,容器化部署后IP切换频繁,通过配置的方式加载接入已经不适用。

·无状态:容器化部署可以做到根据负载快速扩容,但需要服务做到完全无状态才能达到完全水平扩展。当前多主部署的服务都是无状态的,可以直接迁移,但主备部署的服务则需要改造。

·配置管理:当前按机器维度管理,与运行环境相关/无关的配置混在一起。

同时,借着这次上云的机会,我们也希望对系统架构做一次大的优化,接入公司成熟的公共服务如北极星名字服务、七彩石配置中心、智研,提升研效。

上云架构

基于当前架构,除了把服务做镜像打包、迁移到TKE上部署,同时对不适应的地方做改造、优化。

改造后的大致架构及流程如下:

640.webp (1).jpg

·服务发现:后台服务全部接入北极星名字服务,向北极星注册实例、定期发送心跳,接入从北极星获取各类服务健康实例来分发请求。

·无状态:当前系统存在状态的场景主要有两类。

文件下载:主要是防护设备的策略文件下载,无状态化改造涉及待下载文件在多个文件服务实例间同步。解决方案是选择使用CFS来同步文件。

策略分包下发:策略太大时应用层做了分包,同一请求哈希到同一后台策略服务实例。解决方案是请求中带上当前分包状态信息,任一策略服务实例可以处理且结果一致。

·配置管理:与运行环境无关的配置,接入七彩石配置中心,保证同一类型部署的实例配置一致。

·日志监控:迁移到智研日志汇、监控宝。

两大“拦路虎”

如何平滑迁移

当前物理机环境稳定运行,计划逐步灰度、切量到TKE环境,因此会有一段时间是物理机+TKE混跑的状态。管控接入、后台服务迁移TKE,对于防护设备agent是透明的。

因为防护设备agent只会选择一个可用接入建立连接,即agent只会连到物理机环境或TKE环境,因此后台服务与agent交互时,混跑状态下涉及物理机环境和TKE环境互访的情况。这种情况TKE提供了灵活的配置支持。

640.webp (2).jpg

在TKE上部署服务时,提供了两种网络模块:

·Global Route:VPC内私有IP,无法从集群外访问,不可以注册到CMDB。开启随机端口映射后可从集群外访问,并可绑定CLB和北极星。

·ENI IP:公司内可路由IP,可从集群外访问,可以注册CMDB、CLB和北极星。

在混跑灰度期间,接入部署选择ENI IP的方式,物理机后台服务访问TKE接入跟访问普通内网服务无异。迁移完成后,后台服务改用Global Route的方式,仅允许集群内互访。后台服务间通过原生的service访问,对外只通过CLB暴露服务。

640.webp (3).jpg

不断变化的IP

由于DDoS攻防对抗的业务特性,我们长期跟IP打交道,对IP有一种特殊的情节。在内部交流中,我们发现大家在迁移TKE过程中都会遇到一些共性问题。其中,跟IP相关的问题就会经常被提及。

在物理机部署环境,机器IP是固定的且变化频率较低(几年一次的机器裁撤)。但是在TKE环境,重启一次服务,分配到的容器IP、节点就可能变了,导致系统中依赖IP实现的功能无法很好适应TKE环境。

访问鉴权

比较简单的鉴权是基于源IP加白,如接口访问、DB访问。对于接口访问,我们定义了一套基于JWT的接口鉴权规范,所有对外接口不再使用源IP加白的方式。对于DB访问,当前是使用不限源的独立DB账号,并对权限做更细的划分(精确到表)。后续DB权限支持实时申请,当容器起来以后通过接口申请当前容器所在节点的访问权限。

服务发现

原来的架构中,管控接入层实现了简单的服务注册、服务发现功能,后台服务通过IP配置来注册、上报心跳。如果接入层不迁移到TKE、继续保持相对固定,那么这套方案还是可行的。但是,接入层迁移到TKE后,自身的部署节点也在不断变化,因此需要一个独立与接入、相对固定的服务注册与发现模块。集群内部署的服务可以使用K8s/TKE原生的service,对于物理机和TKE混跑的情况则可以考虑北极星名字服务。

服务暴露

这里包含两层含义,一个是该暴露给外部的服务如何保持稳定,另一个是不该暴露给外部的服务如何隐藏起来。

(1)暴露服务给外部

在物理机环境,机器裁撤导致服务IP变化就是经常出现的问题,通过域名、VIP都可以解决。在TKE上,通过CLB来实现。

(2)隐藏内部服务

通过VPC内私有IP,就能保证服务无法从集群外访问,实现隔离。

我们系统的最终目标是:所有对外服务通过接入层暴露出去,做好鉴权;内部的后台服务都隐藏起来,保证安全性。

上云效果

防护调度平台上云之后,

(1)在降低成本方面,预计资源使用率可以达到50%以上。之前为了保证DDoS攻击峰值时能正常运行而预留的一大部分资源,闲时放到整个大资源池里共享,忙时动态扩容。

(2)在部署效率方面,部署、扩容耗时从天降到分钟。原来需要运维同学专人专职完成发布,上TKE后只需开发同学简单配置即可完成。同时,随着业务场景的快速变化,通过TKE满足了我们对高防、网关、第三方云等场景的快速部署和扩容。

随着公司内云上服务越来越丰富,通过上云和接入公共服务,优化宙斯盾防护调度平台的架构,从而提升系统扩展性和迭代效率。另外,宙斯盾的核心能力是DDoS、CC防护,除了管控上云,我们也正在探索防护能力虚拟化的可能性,为云上各种业务、场景提供灵活、弹性的防护能力。

我们是设计师、工程师、梦想者,是您扬帆出海的私人顾问专家


相关内容:
[亚马逊开店深圳办事处地址在哪里]
[亚马逊开店深圳办事处地址在哪里]
亚马逊开店深圳办事处地址揭秘:一站式开店服务,轻松拥抱财富!各位亲爱的创业者们,你们好!今天要给大家带来一个好消息——亚马逊开店深圳办事处地址终于揭开了神秘面纱!在这里,
亚马逊开店卖翡翠怎么样?
亚马逊开店卖翡翠怎么样?
亚马逊开店卖翡翠:珠宝行业的巨大商机等你来挖掘!在炎热的夏季,一杯清凉的饮料、一本好书和一个精美的翡翠饰品,想必是很多人的首选。翡翠作为中国传统文化中的瑰宝之一,以其晶莹

TG客服:@SSjiejie — 官方频道:@SSwangluo

三生网络 © 2009-2023 超15年出海经验,跨境项目专家