披荆斩棘:论百万级服务器反入侵场景的混沌工程实践

在繁杂的业务和网络环境下,在公司百万级服务器面前,要做到入侵发生时的及时检测,那么反入侵系统的有效性,即系统质量,是至关重要的。

洋葱系统是腾讯公司级的主机反入侵安全检测系统,它是实现了前端主机agent及后端分布式数据接入分析系统的一整套服务,覆盖的系统模块众多,部署的服务节点超百万,面临的业务网络环境区域复杂——洋葱就是在这样的环境下进行实时监测数据的采集、上报和分析。

然而我们发现,在实际的运营过程中总会出现组件异常、未部署、入侵漏水等一系列质量上的挑战。

基于此,我们在对洋葱系统进行实时质量建设和优化的同时,提出了引入混沌工程的解决思路,并介绍混沌工程在其中的初步实践应用。即,建设整个系统实时质量的一个模型标准和稳态描述,结合实际入侵场景和服务异常的模拟进行混沌实验,对系统的稳定性、可用性进行验证,同时发现未知的质量问题,以此形成负反馈闭环,进一步推进反入侵质量建设和优化。

本文围绕洋葱系统的实时质量建设和优化,介绍混沌工程在其中的初步实践应用。0x1 腾讯反入侵面临的极大挑战

要说明反入侵具体的工作内容,则要先对“入侵”进行定义。

这里的入侵主要指“未经授权”的行为。一般来说入侵者实施入侵行为,主要目的有以下几点:

  1. 获取敏感数据,如关系链,用户信息等;
  2. 篡改数据,如恶意删除,给自己账户充钱,篡改主页(just for fun)等;
  3. 控制个人资产,如将个人机器当肉鸡,对外发起DDoS攻击,或者当做渗透其他目标的跳板;
  4. 挖矿行为。

从路径上看,黑客可以通过网站漏洞、对外高危第三方应用漏洞、供应链攻击、网络劫持、邮件钓鱼、物理攻击、零日漏洞攻击等进入到公司服务器,从而到达内网,然后通过内外扫描爆破等形式进一步渗透,设置种马反连,最终达到完全控制服务器的目的。

一般来说,从入侵动作基本能追溯到一条完整的行为链路。那么说到反入侵,能够在链路中的关键路劲层层设防,就是反入侵的基本。

反入侵系统,目标是及时发现入侵行为,对入侵行为进行回溯,然后加固系统的薄弱点。这里我们提到腾讯公司级的反入侵系统——洋葱。目前反入侵团队在所有腾讯的服务器上均有部署,客户端agent会实时采集机器上的痕迹信息(如命令执行,进程,网络连接,扫描,系统日志,web文件,高危app漏洞等),然后后端是分布式的集群,对数据进行清洗和多维度数据聚合分析,最终输出风险事件。

然而,目前腾讯反入侵工作也面临着极大的困难。

首先,公司盘子越来越大,服务器已经突破百万级别了;其次,公司业务众多,现网各种应用/第三方软件的使用,及员工安全意识薄弱等,都给反入侵工作带来挑战。另外,网络环境复杂,基本上对外的每一个端口、每一个服务、每一个cgi、GitHub上托管的每一个密码,都可以是黑客“入侵”的入口。

面对如此繁杂的业务和网络环境、如此大量的服务器,要求系统及时感知、检测到入侵,则反入侵系统的有效性,即系统质量则变得至关重要。0x2 复杂规模下的反入侵系统质量建设

反入侵系统质量的好坏,已成反入侵体系是否有效的关键因素。然而,如何进行系统质量的有效建设,又是一个极大的工程。

指标化描述,是对质量建设和优化的基础需求。对此我们提到了实时质量大盘的概念,用来实时表述整个系统有效覆盖的健康度情况,以及异常分类的统计占比和详情输出,这样更有助于进行系统迭代优化,进而了一个完整正向质量建设的闭环。

针对所有场景的开发,梳理出各个可能发生异常的点,形成指标,然后迭代开发,将指标埋点上报,后端建立一个指标综合分析的模型,最后输出一个完整实时质量大盘,开发、运维和策略同学根据实时质量大盘中反馈出来的异常场景再进行分析优化开发,形成一个正向闭环。

但是现网的各个模块体系下,实际运营过程中还是出现了埋点指标外的相关异常情况,导致入侵漏水。那么,是否有办法能够将这些可能存在的异常,尽可能快地暴露出来,以便更好把控系统的质量,发现入侵?我们的回答是肯定的。

混沌工程就是一种应用于此类场景的技术方案。

首先说明的是,目前洋葱反入侵系统已经在架构上实现了分布式,自动容灾,路由负载均衡,客户端也是agent加插件的形式存在,且实现了组件管理和心跳检活逻辑——具备进行有意义的混沌实验基础。

关于混沌工程在反入侵场景下的结合和使用,我们的关注点集中在两个层面,即系统有效覆盖和入侵有效发现。

针对第一个层面,混沌实验主要是对系统故障类的演习、验证系统容错能力;第二个层面,混沌实验主要聚焦在入侵实验上,从深度上我们分为模拟入侵拨测,和实际入侵对抗两类。整个混沌实验的结果,反馈回到正向系统质量建设中进行优化和监控,形成一个“负反馈”机制。从正反两个面向,在流程上形成质量建设的闭环。

正向的质量建设,可以解决和闭环可预知的异常场景,针对未知场景,我们引入了混沌实验来进行验证,并形成一个负反馈机制,反哺到实时质量大盘的建设。这就是复杂规模下反入侵系统质量建设的整体思路。0x3 腾讯反入侵场景下的混沌实践

那么,反入侵场景下的混沌实验,具体是如何进行的?

上面提到过,腾讯反入侵团队主要关注两个层面的系统能力,包括系统有效覆盖,和入侵有效发现。在思路上,主要是通过“故障测试”验证系统的有效覆盖,通过“模拟入侵拨测”和“入侵对抗”验证系统的有效发现能力。

1)故障测试

故障注入实验,是混沌工程实践中常用的一种工程手段,通过引入可控的异常和故障,观察系统的反应和容错,是针对系统各个功能模块有效覆盖的验证。

通过设定的随机方法,在分布式系统的客户端和后台,引入可能影响入侵发现能力的异常情况,如在客户端agent中主动降版本、删除组件,或者刻意限制iptables强制agent断开连接,在后台侧通过工具让后端随机机器产生cpu高负载,或者流量暴涨,甚者通过主动kill进程,让服务故障下线。

即,将所有引入故障的动作工具化,通过任务通道,根据预先设定的随机选择方法下发到主机上执行,从而达到故障注入的效果。针对后端的故障引入,设计上会随机分散到不同的集群。然后,我们可以在前面建设好的实时质量大盘上,看对应指标是否产生质量波动。

2)模拟入侵拨测

为了发现在入侵场景和系统完整链路上的未知异常场景,腾讯反入侵团队还引入了“模拟入侵拨测”和“入侵对抗”。在具体操作上,反入侵团队根据入侵的路径、手段方法,将入侵分为不同的场景。针对每个场景,通过采集特定的信息,依据该场景行为特征进行建模和检测。

具体的实施闭环流程如下图所示。从中间“拨测系统”发起模拟入侵攻击。在这个过程中,洋葱系统会按照正常的运行逻辑进行数据采集和传输(这个过程中,数据会全链路旁路落地记录),然后进行入侵行为检测。

拨测系统会自动进行行为结果的验证,输出拨测结果。如果出现异常而系统未发现,策略和研发同学会根据拨测结果进行复盘跟进,然后反馈回到实时质量大盘,或者进行策略优化。同时,如果有新的入侵策略场景发布,会在发布后,将对应模拟入侵行为加入到拨测系统中。如此形成一个闭环。

该模拟拨测方案已经在洋葱中稳定应用了2年。历史上通过拨测,发现了现网环境中多起测试和监控未覆盖到的策略和研发质量问题,从而挖出了不少引起“搏斗”的隐患因素。

3)入侵对抗

模拟入侵是针对已知的入侵场景的。但同时黑客技术也在发展,甚至战场也在发生转移。从服务漏洞,到供应链攻击,到服务器底层种马(bios等)。所以引入入侵对抗实验,也是为了反入侵系统能够跟随发展,走在前头。

在实际的执行过程中,腾讯反入侵团队通过两个维度来进行入侵对抗的混沌实验。

其一,内部建立蓝军机制。通过研究内外部情报,新的入侵工具技术和方法,随时进行踩点渗透,以及控制服务器等入侵行为,进行内部攻防演习;

其二,将白帽子在TSRC平台提交的漏洞,和实际黑客入侵的案例都当作实验的变量。通过上述两方面建立起完整的入侵对抗闭环机制。

具体来看,模拟入侵的整个过程是如何闭环的呢?

蓝军一方面进行入侵,一方面自行记录所有入侵过程中的行为;同时洋葱系统在正常地执行检测工作。如果产生了入侵告警,应急同事会紧急开展排查、定性、止损、定损、溯源等工作,并跟蓝军确认是否是蓝军演习;有时会当作真实入侵把蓝军清理出战场。通过这样的方式来持续对抗。

通过蓝军提供的完整入侵记录,与实际入侵告警进行对账,我们可以推演出哪些行为成功预警,哪些行为被绕过漏水了;或者确定部分行为的原始数据是否在当前有支持采集,等等,然后形成新的开发场景需求、策略优化需求,和质量优化点,反馈回到系统质量建设中。0x4 后记

本文介绍了反入侵工作的相关背景,以及反入侵洋葱系统在质量建设方面的思路和推进方法。从反入侵场景下的质量建设出发,看待分布式系统的质量建设,需要从正反两个方向入手,动态互补,才能不停推进系统的稳定和有效。

未来,腾讯反入侵团队将持续细化、自动化故障注入验证引入现网运营环境,演习常规化,同时将聚焦于IOT智能硬件,服务器底层(BIOS等)更高层次对抗能力和质量的建设。

Image placeholder
cwk44
未设置
  43人点赞

没有讨论,发表一下自己的看法吧

推荐文章
MySQL 百万级数据量分页查询方法及其优化

作者|大神养成记原文|  http://t.cn/RnvCJnm方法1:直接使用数据库提供的SQL语句语句样式: MySQL中,可用如下方法:SELECT*FROM表名称LIMITM,N适应场景: 适

周末生产事故!一次心惊肉跳的服务器入侵排查….

近日接到客户求助,他们收到托管电信机房的信息,通知检测到他们的一台服务器有对外发送攻击流量的行为。希望我们能协助排查问题。 一、确认安全事件情况紧急,首先要确认安全事件的真实性。经过和服务器运维人员沟

Chaos Mesh —— 让应用跟混沌在 Kubernetes 上共舞

作者:殷成文2019年12月31日,我们在GitHub上正式开源了ChaosMesh。作为一个云原生的混沌测试平台,ChaosMesh提供在Kubernetes平台上进行混沌测试的能力。本篇文章将围绕

黑客入侵检查

黑客入侵检查 思路 扫描木马工具:clamAV官网:http://pkgs.repoforge.org/clamav/ CentOS安装:yuminstall-yclamav* 启动clamAV服务

开曼国家银行已证实被黑客入侵:2.21 TB数据惨遭泄露

“或许这只是冰山一角,其背后还隐匿着更多的深海冰川。”开曼群岛——一个吸引人的财政天堂。近日,据外媒报道,匿名黑客入侵了开曼国家银行,并泄露了2.21TB数据,此外,他还向其他黑客提供100,000美

上医治未病:云上入侵检测安全启示录

两千多年前,《黄帝内经》提到“上医治未病,中医治欲病,下医治已病”。云安全也是同理,未雨绸缪、防患于未然,这虽是老生常谈,但真正能具备这一能力的企业却不多,各种各样的安全事件仍在频频上演。——01——

五种拥有光明发展前景的新兴编程语言

在软件项目与具体实现层面,我们需要考虑众多具体因素。但无论从哪种角度出发,技术栈的选择永远是决定项目成功与否的核心因素之一。根据您的实际应用需求、站点或者产品设计思路,不同的编程语言往往能够带来不同的

未来有发展前景的IT技术岗位盘点

众所周知,在互联网时代,IT技术岗位是互联网公司和企业的核心发展力量。现在我们来盘点一下未来有发展前景的IT技术岗位。一般来说,IT技术岗位可以分为开发岗位、测试岗位、UI设计等,下面我将从这几个岗位

秒读 Excel 百万数据(第一篇)

读取前的准备工作 1.文件类型属于.xls、.xlsx,需要用办公软件WPS或Office将文件另存为.csv类型。不能直接重命名修改文件类型,直接重命名修改文件类型会导致数据格式不兼容,Window

“12306”是如何支撑百万QPS的?

12306抢票,极限并发带来的思考每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节

揭秘|每秒千万级的实时数据处理是怎么实现的?

01背景闲鱼目前实际生产部署环境越来越复杂,横向依赖各种服务盘宗错节,纵向依赖的运行环境也越来越复杂。当服务出现问题的时候,能否及时在海量的数据中定位到问题根因,成为考验闲鱼服务能力的一个严峻挑战。线

淘宝从几百到千万级并发的十四次架构演进之路!

作者:huashiou来源:https://segmentfault.com/a/11900000186261631.概述本文以淘宝为例,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时

架构转型先行——金融业务场景下的新一代架构实践

  赵勇中国农业银行研发中心架构管理办公室主任工程师中国农业银行研发中心架构管理办公室主任工程师,十年以上金融行业信息化架构设计与管控经验。历经互联网金融、两地三中心、分布式核心银行等大型银行系统工程

百度智能监控场景下的HBase实践

作者简介   张洋洋  百度高级研发工程师负责百度智能运维产品(Noah)的分布式时序数据库和通用配额管理平台的设计研发工作,在分布式存储和配额管理方向有广泛的实践经验。干货概览通过百度大规模时序数据

访问 laradock 服务器内部 http 服务器

在laradock中创建了一个http服务器之后,在workspace容器中,通curl127.0.0.1:9588,可以返回helloworld。但是在本地,通过浏览器访问127.0.0.1:958

大神讲解微服务治理的技术演进和架构实践

摘要:随着业务的发展,规模扩大,服务越来越多,需要协调线上运行的各个服务,保障服务的SLA;基于服务调用的性能KPI数据进行容量管理,合理分配各服务的资源占用;对故障业务做服务降级、流量控制、流量迁移

同程旅游微服务最佳实践

本文首发胖波聊架构界,微信公众号:xiaobo2as本文概要导言微服务拆分的四个维度微服务应该如何维护版本如何从单体架构平滑过渡到微服务结语一、导言同程微服务从立项到实施推广已经走过了整整两个年头,从

宜信微服务任务调度平台建设实践|分享实录

导读:如今,无论是互联网应用还是企业级应用,都充斥着大量的批处理任务,常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。内容来源:宜信技术学院

宜信开源|微服务任务调度平台SIA-TASK入手实践

引言最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行调

美团下一代服务治理系统 OCTO2.0 的探索与实践

本文根据美团基础架构部服务治理团队工程师郭继东在2019QCon(全球软件开发大会)上的演讲内容整理而成,主要阐述美团大规模治理体系结合ServiceMesh演进的探索实践,希望对从事此领域的同学有所

阿里提出针对多目标优化的全新算法框架,同时提升电商推荐场景 GMV 和 CTR

在推荐系统中,多目标优化一直是热门话题,阿里巴巴的XiaoLin、HongjieChen等人针对推荐中的多目标优化问题提出了一种基于帕累托效率的优化算法框架,并应用在电商推荐场景中,对GMV和CTR

高并发业务场景下的秒杀解决方案 (初探)

文章简介 本文内容是对并发业务场景出现超卖情况而写的一片解决方案。主要是利用到了Redis中的队列技术。 超卖介绍 所谓的超卖,就是我们的售卖量大于了物品的库存量。该情况一般出现在电商系统中促销类的业

Laravel-Binlog 扩展(用于实时监听 MySQL 数据变更、数据同步等场景)

Laravel-Binlogv0.2.1 (该扩展当前用于我司测试环境实时同步Mysql数据变更到ElasticSearch,稳定性待测试!!哈哈哈)我司正式环境走的阿里云DTS数据订阅 基于Sw

etcd 在超大规模数据场景下的性能优化

作者|阿里云智能事业部高级开发工程师 陈星宇(宇慕)划重点etcd优化背景问题分析优化方案展示实际优化效果本文被收录在5月9日cncf.io官方blog中,链接:https://www.cncf.io