• 关于DOS/DDOS攻击和防御


    关于DOS攻击

    • DOS攻击也叫做拒绝服务攻击
    • 其原理是
      • 模拟正常用户访问,但访问量巨大
      • 大量占用服务器资源,服务器负载和网络带宽等资源总是有限的
      • 当攻击发生的时候,服务器就会影响正常用户的访问,就无法为其提供服务
      • 在用户看来是服务器的服务挂了,其实是服务器在应付攻击者发来的巨量请求
    • 其类型有
      • 1 ) 根据TCP协议的半连接:TCP半连接
      • 正常是三次握手,攻击者只发起一次,服务器只能被迫等待攻击者的下次连接
      • 当攻击发生时,服务器产生了很多半连接来占用资源
      • 2 ) HTTP连接, 看起来就是一个正常的请求,它真的是在请求你的服务
      • 但是你服务的容量是有限的,无法应付过多的请求
      • 3 ) DNS攻击,如果服务器防御能力很强,能把很多非法的请求拒之门外
      • 那么攻击者可能会转而攻击你的DNS域名解析服务器,一般DNS访问负载很小
      • 一般而言访问负载不会那么的大,攻击DNS是非常有效的攻击手段
    • 在DOS的基础上还会有一种攻击叫做DDOS
      • 大规模分布式拒绝服务攻击
      • DOS一般会只有少量几台机器发起攻击
      • DDOS可能会有大量的机器进行攻击,其流量可达几十到上百G
        • 这些流量是分布的,通过肉鸡和代理
        • 极难防御,无法分辨哪些是正常流量哪些是攻击流量
        • 如果通过一些特别高级的知识来区分,但是也没有有效防御的手段

    相关攻击案例

    • 游戏上架前受到大规模攻击,游戏私服互相DDOS攻击
    • 攻击不下来,改换成攻击DNS服务器,导致DNS服务器下线
      • 数十万网站DNS解析瘫痪,因为很难响应,一些软件后台疯狂断网重连进行中
      • 为DNS更添加了一些流量,雪上加霜,导致国内多省断网
    • 这是一件非常恶性的事件

    如何防御

    • 其实防御难度极大,但仍旧可以做一些事情,比如
      • 硬件防火墙,尝试过滤一些流量
      • 交换机和路由器相应的流量过滤机制
      • 流量清洗:笼统说法,包括防火墙和路由器,交换机都可能会做
        • 具体是进行流量分析,找到特征分别攻击流量和正常流量
      • 高防IP(商业服务): 云服务厂商提供的服务
        • 当受到攻击的时候,它会给你一个ip,让你的域名指向这个ip
        • 用户和攻击者都会访问这个ip, 这个ip后面对应的是大规模的流量清洗服务
        • 会把攻击流量拦截留下正常的流量,同时云服务厂商提供非常大的带宽
        • 这样更能应对DDOS攻击
    • 其实这些防御办法都是有限的防御方案,在开发的时候我们也应该进行预防
      • 1 ) 重视轻逻辑和拆分重逻辑
      • 服务器的承载能力越高,能够承受的攻击也就越大
      • 这样,我们可以在开发的时候避免重逻辑的业务
      • 也就是,当用户访问的时候应该能够快速完成这个逻辑
      • 当逻辑做到足够轻的时候,能够承载的访问能力也就越大,被攻陷可能性就会小很多
      • 如果存在一些耗时严重的逻辑,可以把业务拆分,通过排队机制来处理,常见的是使用异步框架
      • 2 ) 当遇到失败的情况时,应该快速失败,快速返回,减少重试的次数
      • 因为负载越高的时候,加大尝试次数,就越有可能导致失败
      • 3 ) 防雪崩的机制
      • 比如重试越多,失败越多,这样只能恶性循环
      • 从机制上来说就是,快速失败,快速返回
      • 清楚了解系统的负载,当请求数快要达到极限的时候,就要拦截一些请求,就不会崩掉
      • 4 ) 有损服务
      • 允许业务不正常,允许不完美,当一个服务崩掉不影响其他服务
      • 5 ) 通过CDN服务
      • 将一些静态的文件分发到CDN上去,减少服务器负载
      • 对动态请求,CDN表现还不是很理想,如果有的话,尽可能使用CDN服务
  • 相关阅读:
    Android MVI架构的深入解析与对比
    案例题——需求分析
    2023-09-06力扣每日一题-摆烂暴力
    云原生Docker镜像管理
    《研发效能(DevOps)工程师》课程简介(三)丨IDCF
    如何将一三两行数据中电话号码相同的数据(标签-spark)
    2023年亚太杯APMCM数学建模大赛ABC题辅导及组队
    离散数学:图的基本概念
    react-antd项目,一个多tab页面,共用一个title相同的table表格,并且在切换tab时实现数据更新
    Django后端开发——mysql数据库连接遇到的问题及解决
  • 原文地址:https://blog.csdn.net/Tyro_java/article/details/125399187