网站LOGO
博客 | 棋の小站
页面加载中
2月21日
网站LOGO 博客 | 棋の小站
记录学习,心得,状态,生活。
菜单
  • 热评
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    使用CDN和云存储的站长们,你们得注意了
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    使用CDN和云存储的站长们,你们得注意了

    · 原创 ·
    闲聊杂谈 · 思考
    共 3468 字 · 约 5 分钟 · 396

    文章
    摘要

    文章讨论了近期一位使用阿里云压力测试服务攻击政府服务器的个人被判刑的新闻,并结合另一站长的CDN被盗刷流量案例,强调了使用CDN和云存储时需注意隐藏的费用和防范措施。通过模拟攻击测试CDN的耗费情况,作者指出若放任高频次访问可能导致昂贵的费用,特别是在遭受攻击时。文章提出加强CDN和云存储的防护措施,如IP访问限频、带宽峰值限制、https请求峰值限制,并建议开启预警功能。最后,推荐了免费的CDN和云存储服务,如CloudFlare和又拍云,并呼吁大家重视网络攻击问题,不攻击公益网站,保护网络生态。

    缘起一:最近看到了一个新闻:一个人因长期使用阿里云的压力测试服务攻击政府的服务器被判刑。

    缘起二:在主题售后群中,我看到又有一个站长的CDN被盗刷流量,欠了阿里云3000块钱。

    CDN和云存储被盗刷CDN和云存储被盗刷CDN和云存储被盗刷CDN和云存储被盗刷

    我们都知道,CDN,内容分发网络,通过将服务器上的资源缓存到多个节点中,当用户访问资源时,不由服务器直接返回资源,而是返回离用户最近的或者速度最快的那个节点的资源。云存储,又可以被称为云对象,对象存储,可以将服务器的静态资源存储在存储桶中,得益于云存储的高带宽,这些资源可以不从服务器上下载,以加快资源加载速度。众多厂商的CDN和云存储都采用预付费+后付费,我们在购买这些服务时可能只会关注它们低廉的表面价格,而忽略了它们的隐藏价格。我们购买了这些服务的套餐之后,在套餐包含内的流量和https请求数是免费的,但超出套餐包含的量就需要按量付费了。这些价格往往是昂贵的,虽然日常的请求数只会产生少量的费用,只有几块钱,但如果遭遇攻击,或被恶意盗刷,产生的价格往往是昂贵的。虽然这些厂商的扣费是实时的,但厂商并没有设置在账户欠费停止这些服务。这些按量计费的CDN或云存储仍继续服务,于是欠费就越来越多。像上方的站主,峰值带宽达到了11Gbps,而阿里云的CDN按量付费是按照峰值带宽计算的。所以各位在使用CDN和云存储时,要考虑到这个问题。一般的厂商,CDN和云存储都会有一些访问限制,比如IP访问限频设置,带宽峰值限制,https请求峰值限制,还可以开启预警,在请求数或流量达到阈值时报警,或自动关停。

    阿里云的CDN和https请求数预付费定价阿里云的CDN和https请求数预付费定价

    我们不妨来测试一下CDN在遭遇高频次访问时,若放任这样的访问会发生什么事情。

    初始访问流量和带宽初始访问流量和带宽

    在【CDN总流量】中可以看到,中国境内的访问量为0GB,我们为一个域名套上一个CDN,然后给这个域名做一个简单的访问页。通过开发者控制台可以看到这个网页的大小约为2MB。这个网页是纯静态的,因此在访问时不会占用服务器资源,因为我们只是想单纯测试一下CDN的并发。

    简单的访问页简单的访问页

    然后我们写一段Python代码,运行半小时,观察它对CDN的影响情况。

    python 代码:
    from multiprocessing import Process, freeze_support
    
    from requests import get
    num = 0
    
    class DoProcess(Process):
        def __init__(self, *args, **kwargs):
            super(DoProcess, self).__init__(*args, **kwargs)
            self.start()
    
        def run(self):
            do()
    
    def do():
        global num
        while True:
            get('https://test.qi1.zone')
            num += 1
            print(f'已发送{num}次请求')
    
    if __name__ == '__main__':
            freeze_support()
            processes = [Process(target=do) for _ in range(8)]
            for process in processes:
                process.start()
    这段代码实际上应该为全局变量num加上一个进程锁以输出准确的值,但那样会大大降低发送请求的效率。在实际运行时,每一个相同的数大概会输出8次,正是进程的数量。

    这段代码会开启电脑中CPU的八个核心不断地访问这个URL,以模仿cc攻击。我用了两台电脑,大概运行了半小时,我们可以从控制台得到访问的情况。

    在模拟攻击后CDN的耗费情况在模拟攻击后CDN的耗费情况

    在下方的折线图中可以看到两个峰值。第一次峰值是我使用阿里云的免费压力测试模拟攻击了一分钟时产生的,当时攻击后CDN的耗费流量是50MB左右。第二次峰值就是我使用这段Python代码模拟攻击时产生的,可以看到,最高峰值达到了18Mbps,流量达到了2.83GB。

    让我们做一个简单的计算,假设CDN对于所有访问都是包容的,不会防御任何CC攻击、DDoS攻击,对大量访问不作任何反应,即使欠费了也不关停,没有各种浏览器缓存,只是单纯地计算这个值。

    在谷歌搜索一下【DDoS攻击的规模一般是多大】,得到如下图的答案。

    查询DDoS攻击的一般规模查询DDoS攻击的一般规模

    我们学校的带宽是15MBps,我家的带宽可达120MBps,而我们从谷歌中得到的答案是几十MBps,那我们假设攻击者的带宽固定是45MBps。在上述示例中,我伪造了2个设备,不停地发送请求,但实际上肯定没有这么少。这里假设同时请求的用户数为100个,并攻击半小时,计算一下比例关系。ip数量的比例为100÷2=50,攻击时长相同,峰值带宽比例为45÷15=3,那么总流量就是3×50×2.8GB=420GB。半小时盗刷420GB,这还是小攻击。

    在文章开头的那位站长,在主题群中说他除了开启防盗链,再也没有开启其他措施,连告警都没有设置。若攻击者正趁着我们睡觉的时间,趁着我们无瑕顾及CDN的时间,对我们的CDN发送大量请求,那么后果可想而知。

    我们的服务器带宽很低,对用户很不友好,那我想开启CDN加速,但又要防恶意盗刷,这很矛盾。解决很简单,加高服务器的带宽(服务器包含流量包的仍要注意防盗刷),要么对CDN做些什么。

    CDN提供了很多防护措施,可以规避一部分的盗刷,比如前面提到的IP限频、带宽限速、流量告警。其中有些厂商的流量告警功能也包含自动关停CDN。记得开启这些功能。

    云存储也是这样。当然,我们也可以使用免费的CDN或云存储。最推荐的免费的CDN当然是大名鼎鼎的CloudFlare了,还带防DDoS。CloudFlare官方博客称它们成功化解了史上规模最大的DDoS攻击,此次攻击的带宽峰值达2.54 Tbps,但CloudFlare有成千上万Tbps的带宽,还远远超出这次攻击的带宽峰值。免费的云存储当然非又拍云莫属。你只要加入又拍云联盟,在页面底部添加一个简单的超链接,就可以享受10GB的免费云存储。

    我希望各位能重视起来网络攻击,当你将网页做出来并发布到其他地方,你就要做好你的网页被坏人觊觎起来的准备。也在此呼吁各位不要攻击公益网站,它们的运营者自费运营这些网站供他人使用,极大方便了我们。攻击这些人网站的那些人,你们的良心不疼吗?

    声明:本文由 (博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    现在已有

    18

    条评论
    发一条!
    1. 头像
      云晓晨CatchYun
      • 等级:Lv.5
      • 角色:首页 · 好友
      • 在线:本月

      我的小破站cdn一直都是白嫖的

      · · · 山东-济南
      1. 头像

        没有后付费就行

        · · · 河北-秦皇岛
    2. 头像
      白雾茫茫丶
      • 等级:Lv.2
      • 角色:访客
      • 在线:三月内

      我的内心好痛,啥时候我成了反面教材了

      · · · 广东-深圳
      1. 头像

        哈哈哈,那天看到阿里云的压力测试就想写了,恰好看到你在群里说,更想写了。

        · · · 河北-秦皇岛
    3. 头像
      网安冷墨寒
      • 等级:Lv.3
      • 角色:技术 · 好友
      • 在线:三月内

      你文章开头的摘要我猜是借助AI的 是用的什么软件呀 chatgpt吗

      · · · 海外
      1. 头像

        是滴,手动发给ChatGPT让它帮我生成。

        · · · 河北-石家庄
    4. 头像
      Teacher Du
      • 等级:Lv.5
      • 角色:首页 · 好友
      • 在线:本月

      所以我不喜欢使用那种后付费的,尤其没有流量限制,将会严重被刷流量。

      · · · 北京-北京
      1. 头像

        嗯杜老师的评论我没看到,确实,大厂的CDN我现在也不敢用,免费的又不够,真是为难

        · · · 河北-石家庄
    5. 头像
      Dabenshi
      • 等级:Lv.2
      • 角色:访客
      • 在线:三月内

      之前看到过类似报道,现在基本都有机制了吧,像腾讯:欠费状态会立即通知,保留2小时缓冲,2小时候未冲正,会停止加速服务。

      · · · 北京-北京
      1. 头像
        Dabenshi

        有是有,但是也不是百分百能识别出来,有的还是24小时保护期。

        · · · 河北-秦皇岛
    6. 头像
      obaby
      • 等级:Lv.4
      • 角色:综合 · 好友
      • 在线:本月

      不用大厂 cdn,另外大厂的 oss,cos 也有可能被刷量。

      · · · 山东-青岛
      1. 头像
        obaby

        其实我感觉也没必要这样,做好防护措施就行了。关键现在所有厂商都不会关了后付费,这才是最恶心的。

        · · · 河北-秦皇岛
        1. 头像
          Leonus
          • 等级:Lv.1
          • 角色:访客
          • 在线:三月内

          你真正用才几个钱,被刷一次多少钱。大厂为什么是大厂

          · · · 陕西-安康
          1. 头像
            Leonus

            哈哈,就是可以随心所欲控制用户消费。说的难听点,说不上攻击就是他们本身发起的。

            · · · 河北-秦皇岛
    7. 头像
      八咫烏
      • 等级:Lv.3
      • 角色:访客
      • 在线:三月内

      15T,阿里云+七牛云,一共9000多。

      · · · 辽宁-沈阳
      1. 头像
        八咫烏

        都是重量级。我估计你们以后都会留个心眼的。

        · · · 河北-秦皇岛
    8. 头像
      终成
      • 等级:Lv.3
      • 角色:访客
      • 在线:本月

      我在几个月前腾讯云被刷13T,5k多账单,一个友链站点前几天又拍云被刷近20T,产生4.8k的账单。现在我是换到了多吉云,也设置了较低的阈值。一般来说只有使用境外的机器才敢这么大规模的攻击,如果是国内机器发起的,大概率能找到人,我现在的处理方式是,要么将站点境外解析到本地127.0.0.1,要么境外解析到CF,能很大程度避免恶意攻击流量,也可以保证国内及境外的正常访问

      · · · 海外
      1. 头像
        终成

        这些开启CDN的站长们,要加强一下安全意识了,要么就开个SCDN,要不就做好防护措施。

        · · · 河北-秦皇岛
    博客logo 博客 | 棋の小站 记录学习,心得,状态,生活。
    ICP 冀ICP备2023007665号

    🕛

    本站已运行 299 天 10 小时 30 分

    🌳

    建站:Typecho 主题:MyLife

    👁️

    今日访问量:1576 昨日访问量:1607
    棋の小站 © 2024.
    网站logo

    博客 | 棋の小站 记录学习,心得,状态,生活。
     
     
     
     
    壁纸