作者:【腾讯反入侵团队】jaylam

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

洋葱系统是腾讯公司级的主机反入侵安全检测系统,它是实现了前端主机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等)更高层次对抗能力和质量的建设。

入侵sf服务器技术_披荆斩棘:论百万级服务器反入侵场景的混沌工程实践相关推荐

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

    在繁杂的业务和网络环境下,在公司百万级服务器面前,要做到入侵发生时的及时检测,那么反入侵系统的有效性,即系统质量,是至关重要的. 洋葱系统是腾讯公司级的主机反入侵安全检测系统,它是实现了前端主机age ...

  2. China .NET Conf 2019-.NET技术架构下的混沌工程实践

    这个月的8号.9号,个人很荣幸参加了China.NET Conf 2019 , 中国.NET开发者峰会,同时分享了技术专题<.NET技术架构下的混沌工程实践>,给广大的.NET开发小伙伴介 ...

  3. java 语音聊天室_如何实现百万级的语音聊天室

    上篇我们介绍了如何从零开始搭建一套语音聊天室后台,设计方案比较基础,本篇我们将介绍语音聊天室的升级版本--在海量用户同时在线的情况下,语音服务器的架构将如何升级改造. 互联网产品后台开发信奉一句话:先 ...

  4. 如何利用云服务器挖矿_企业如何选择云服务器

    随着云计算的快速发展,基于云计算技术的云服务器逐渐占领主机市场主导地位,成为炙手可热的存在.而很多个人.企业的官网在建设时,也越来越青睐云服务器,那么市面上云服务器品牌众多,我们如何挑选合适的云服务器 ...

  5. excel 两组数据交点_如何在百万级的数据里找到别人正在赚钱的项目?【实操长文】...

    前不久,我在好友的知乎星球看到了这篇知乎文章,后面又在生财有术星球看到了原作者小曾分享.更巧的是,小曾也在白杨SEO星球嘉宾令狐峰的极客微信群里,所以就这样认识了. 君言这篇文章,我详细看过了,真心很 ...

  6. excel 两组数据交点_如何在百万级的数据里找到别人正在赚钱的项目

    本篇内容可能会涉及部分编程知识,但都是基础中的基础,不用担心,其余都是通俗易懂. 我寻找项目的重点在于挖掘海量用户的需求,再去做自动化归类,数据量越大,归类越智能,找到的需求就越清晰. 分为两个方向挖 ...

  7. 项目怎么部署到服务器上_项目开发学习 云服务器的部署

    在项目开发和学习的过程中,前端与后端进行数据交互是非常重要的一环,无论是web开发还是移动开发,都会涉及到这一问题.如今在涉及到数据交互的应用中,后台都有云服务器做支撑.通俗地讲,你自己的电脑就可以看 ...

  8. mc用云服务器搭建_最全的云服务器架设我的世界私服教程,不看后悔哦!

    我们将通过一个一步步的讲述通过新睿云的云服务器来向你展示如何搭建一个"我的世界(Minecraft)"服务器端.这是一个可以多人在线的游戏,能让您体会到极致的游戏乐趣. 我们的建议 ...

  9. 云服务ftp服务器搭建_如何在阿里云服务器搭建FTP服务器,在本地电脑连接并操作...

    首先你需要有一个阿里云的ECS服务器 并且开通了公网宽带(话说也不贵,开来玩玩还是可以的,第一次买会比较便宜,第二次买1M的宽带两天是九毛多吧~) 开通了宽带之后,ECS服务器就可以上网了 如果嫌弃阿 ...

最新文章

  1. 玲珑杯 1157 - 造物主的戒律 主席树+离散化
  2. socks5协议RFC文档
  3. BA-Alerton系统简介
  4. 提高网站访问速度的34条军规(2)
  5. k8s部署rook-ceph
  6. boost::function模块右值的测试程序
  7. html 属于mvvm框架,mvvm模式和mvc的区别是什么?
  8. mysql 根据地图 坐标 查询 周边景区、酒店
  9. 【最全解析】1050 螺旋矩阵 (25分)
  10. 数字图像处理 频率域平滑 MATLAB实验
  11. visual studio怎么编译python_我的计算机上的Python使用哪个版本的Visual Studio进行编译?...
  12. SpringBoot中的文件读取
  13. 正定矩阵、正定矩阵与极值的关系、黑塞矩阵、牛顿法
  14. 微信小程序开发工具格式化代码快捷键以及更改快捷键
  15. A Survey on Contrastive Self-Supervised Learning(对比式自监督学习研究)-----pretext tasks、Downstream task解释
  16. Win10 Chromedriver安装教程
  17. awesomium -- 出色的Web浏览插件
  18. Tiny C Compiler最小的C语言编译器
  19. 第16节 最好的实践(16.1~16.5)
  20. Mac电脑 绑定阿里云企业邮箱

热门文章

  1. android+win10 多屏互动/屏幕投射,手机遥控实测
  2. sql 游标会影响rollback吗_住宅风水会影响身体健康吗
  3. 孙鑫源java_「 孙鑫源 」孙鑫源的名字解释 - 名字网
  4. 招教上机计算机技能测试题,技能测试-计算机(教师招考真题)
  5. stm32 link 下载bin文件
  6. 雅思写作---顾家北写作词伙班
  7. 【整理】双模双待、双卡双待、双模双待双通、双频手机
  8. pdf转换html java,使用JAVA怎么将PDF转换为HTML文档
  9. 人像摄影技巧之:城市场景人像外拍技巧
  10. egret接4399排行榜头像跨域问题