从一开始,Cloudflare就一直在阻止恶意Bot抓取网站,或滥用API。随着时间的推移,我们已经改进了我们的Bot检测方法,并部署了大型机器学习模型,能够区分真实的流量(无论是来自人类的还是应用程序的)和恶意Bot。我们还构建了一个大型的善意Bot目录,以检测诸如搜索引擎索引之类的东西。
但这还不够。恶意Bot仍然是互联网上的一个问题,我们决定反击。从今天开始,用户可以在Cloudflare控制面板的防火墙设置中选择启用“bot战斗模式”。
一旦启用,当我们检测到一个恶意Bot,我们将做三件事:(1)我们将通过给他们打上标记,在经济上抑制Bot制造商,包括要求他们解决一个计算密集型的挑战,这将需要更多Bot的CPU资源;(2)对于带宽联盟合作伙伴,我们将Bot的IP交给合作伙伴,并将Bot踢下线;(3)我们将通过种树来弥补Bot的碳成本。
恶意Bot会损害合法的网页发布者和应用程序,通过滥用资源伤害托管提供商。并且其带来的服务器电费,以及为服务器上Bot和受害进程散热,会对地球造成双重伤害。
不能任其肆意破坏网络了。我们的目标是使互联网上不再有恶意Bot运行。我们认为,通过我们的规模,我们可以做到这一点。
Cloudflare如何检测机器人
Cloudflare的秘方(好吧,也不算很秘密)是我们庞大的规模。我们目前处理超过2000万个互联网资产的流量,从最小的个人网站,到流行应用程序和物联网设备的后端API,再到一些互联网上最知名的名字(包括《财富》1000强中的10%)。
这个规模给了我们一个巨大的优势,因为我们看到了大量的和各种各样的流量,允许我们建立互联网行为的大型机器学习模型。这种规模和多样性使我们能够快速、轻松地测试新的规则和模型。
我们的Bot检测分为四个大的组成部分:
识别众所周知的合法Bot;
为简单的机器人(无论多么简单)编写的每日使用的规则;
我们的Bot活动探测器模型,根据过去的流量发现Bot的行为并阻止它们;以及
我们的可信客户端模型,它可以发现HTTP User-Agent是否属实。
此外,我们的DDoS缓解系统Gatebot对DDoS bot进行指纹识别,并在数据包层阻止其流量。除Gatebot之外,客户还可以访问我们的防火墙规则,他们可以在其中编写精细的规则来阻止非常特定的攻击类型。
另一种模型允许我们确定IP地址是否属于VPN端点、家庭宽带用户、使用NAT的公司、主机或云提供商。“Bot清理”的目标是最后一群人。
如今,Cloudflare每天向超过30亿个Bot请求发出人机验证。其中一些Bot将度过非常糟糕的时光。
Cloudflare如何对抗Bot
发起bot攻击的成本包括为攻击提供动力的CPU核时的花费。如果我们的模型显示流量来自一个Bot,并且它位于云主机或提供商上,那么我们将部署CPU密集型代码,让Bot编写器消耗更多的CPU资源并降低速度。通过迫使攻击者使用更多的CPU,我们增加了攻击者的成本,并阻止了未来的攻击。
这是我们现在通过网络部署的许多所谓的“缓送技术”之一,用以改变运行恶意Bot的经济性。恶意的Bot操作员要注意了:如果你的目标是Cloudflare IP空间背后的资源,我们会让你滚蛋的。
我们每绑架恶意Bot一分钟,它们就少伤害整个互联网一分钟。这意味着我们不仅要保护我们的客户,还要保护每一个受到恶意Bot威胁的网民。Cloudflare生日周的精神一直是回馈整个互联网,我们认为最好的礼物就是铲除互联网上的恶意Bot。
除了浪费Bot的时间,我们还想让它们关闭。如果托管Bot的基础设施提供商是带宽联盟的一部分,我们将共享Bot的IP地址,这样他们就可以完全关闭Bot。带宽联盟使我们能够减少与合作伙伴的传输成本,并且这一合作还可以帮助我们与合作伙伴一起为合法用户提供更安全的互联网服务。
一般而言,我们运行Bot战斗模式的每个人都认为这是一个好主意。我们听到的唯一的反对意见是,当我们开始迫使Bot在短期内解决CPU密集型的挑战,在它们最终放弃之前(我们认为这在长期内是不可避免的)——我们可能会增加碳排放。为了对抗这些排放,我们致力于估算这些Bot所使用的额外CPU,计算它们的碳成本,然后种树来补偿和建设一个更好的未来。
植树
应对气候变化需要个人和企业的多方努力。Cloudflare今年早些时候宣布,我们已经将可再生能源证书(之前覆盖了我们的北美业务)的采购范围扩大到了我们覆盖194个城市的全球网络。
为了计算出我们需要种植多少树木,我们需要计算在让Bot努力运作时所使用的额外CPU成本。这就是它的工作原理。
恶意Bot可能使用的云服务器(使用不可再生能源)每年排放450公斤CO2(数据来源:https://www.goclimateneutral.org/blog/footprintservers/),利用这个数据,我们计算得出每个CPU核心大约产生8公斤CO2/年。我们可以测量Bot消耗CPU的时间,这样我们就可以直接估算我们的反击所排放的二氧化碳量。
基于种植一棵树的情况,一棵成熟的树每年可以吸收大约21公斤的二氧化碳。所以,粗略地说,每棵成熟的树每年可以吸收2.5个CPU内核的二氧化碳年排放量。
由于树木的成熟需要时间,气候变化带来的挑战也在加大,我们将会支付费用以种植超过计划额度的树木。对于我们计算出的每棵我们需要种植(用以吸收对抗Bot时排放出的CO2)的树,我们将花费25美元,从种植一棵树改为种植25棵。
当然,我们将把恶意Bot的IP交给我们的带宽联盟伙伴,关停Bot并完全消除它们的碳成本。在过去,技术社区通过使攻击者的努力无果而终,在很大程度上击败了垃圾邮件发送者和DDoS租用服务,我们认为这是现在一劳永逸地击败恶意Bot的正确策略。
Bot伤害了谁?
恶意Bot会对我们客户的基础设施造成严重的损害,并经常给我们客户的用户带来不好的体验。
例如,最近我们的一个客户受到了一次凭证填充攻击的破坏,该攻击不仅试图破坏其用户的帐户,而且其规模如此之大,以至于在客户网站的所有方面都有效地导致了小规模的拒绝服务。
恶意僵尸程序使客户的常规威胁防御基础结构超负荷运行,因此我们迅速将其列为Under Attack(遭受攻击)客户。作为流程的一部分,我们发现可以使用我们的Bot Management产品专门阻止攻击,而不会影响任何合法用户流量。
我们看到的另一个趋势是,僵尸网络与Bot的结合在增加,尤其是在库存囤积Bot的世界。这些Bot运营商花钱的动机和意愿是相当高的。
他们攻击的目标是供应量有限、需求量大、价值高的商品。想想运动鞋、音乐会门票、机票和流行的短期百老汇音乐剧。能够以零售方式购买这些物品的Bot运营商可以在“黄牛”销售中赚取高额费用。当操作员标识目标站点(比如一个电子商务零售商),和一个特定的项目(如一双新运动鞋的售卖),他们可以花费时间在新的Residential Proxy as a Service(住宅代理即服务)市场获得终端机器和(相对)纯净的IP,用以发起攻击。
然后,他们利用复杂的技术和触发器来更改机器、网络和软件的特征,通过非常广泛的选项和组合来产生攻击,从而挫败依赖于重复或已知模式的系统。这种类型的攻击也会伤害多个目标:电子商务网站有沮丧的真实用户,他们无法购买所需的物品。真实用户在库存扫货上输给了攻击者,攻击者只是为了攫取尽可能多的利润。而不知情的僵尸网络用户在自身未同意或无意识的情况下耗费了他们的资源,如家庭宽带连接。
最重要的是,Bot伤害了公司及其客户。
总结
Cloudflare从一开始就与恶意Bot战斗,随着时间的推移,我们部署了越来越复杂的方法来阻止它们。利用我们保护和加速的2000多万个互联网资产的力量,以及我们对世界各地的网络和用户的洞察,我们建立了机器学习模型,以筛选好的Bot,并阻止恶意Bot。
但Bot仍然是一个问题,我们新的Bot战斗模式将直接阻止Bot作者攻击客户。与此同时,我们不想加剧气候变化,并且正通过种树吸收碳来抵消Bot的碳成本,以及帮助建设一个更美好的未来(和互联网)。