攻击者是控制一个足够大的分布式集群来发起攻击,各种杂七杂八的包,什么都会有。根本不在乎你开的什么服务,也没那耐心分析你有什么服务。比如哪怕你根本没开UDP的任何服务,但他就是发一大堆UDP的包,把你带宽占满。还有啥办法。
十多年前的OS还没法应付大量TCP并发连接,于是那个年代有个SYN flood攻击,就是一大堆SYN包尝试握手。现代也有,效果大不如前,但是仍然在大流量下可以阻塞受害者的通信能力。
更现实的问题在于,机房的总带宽有限。当你的服务器IP段受到攻击时,他会直接找上级接入商将发给你的包在主干网上都丢掉。此时虽然知道自己正在被DDoS攻击,但攻击包根本就没到机房,更别说服务器,于是只能是守着服务器,毫无流量,等待。
上级接入商大多是垄断国企,根本没耐心跟你做任何深层次合作,直接丢包是最简单方便的方法。同时,即便此时攻击者停止了攻击,你也不知道。而想要上级接入商重新开启给你的包转发,动则就是个一天的流程。而一旦发现攻击还没完,就立刻又是丢包。
被攻击时,也火烧火燎的找办法。尝试将网站部署到云计算平台上,依靠对方提供的带宽冗余来顶。甚至可能只是拼短期带宽的费用。当时国内的云计算提供商试了好几家,最终都因为没有足够的带宽应对攻击而拒绝了我们。他们都是出于对果壳网的喜爱和免费帮忙的,能做到这一步也挺不容易了。
有人提到攻击弱点,真正这样花费精力去分析的攻击者其实不多见。不过大多攻击确实会避开一些明显抗攻击能力不错的点,比如很多网站的首页会做静态化,所以攻击首页就不划算。对CPU消耗太小了。
几个常见的弱点:
1、登录认证
2、评论
3、用户动态
4、ajax api
总之涉嫌写数据库,联表查询,缓存涧出的都是好目标。
所以,回答就是:没有啥好办法,耐心等待吧。
看了其他几个回答提供的方案,分别分析一下:
1、拼带宽:或者说拼软妹币,这不是一点点钱能搞定的,果壳网彼时只买了不足100M带宽,所在早期机房总带宽也不足40G,攻击带宽都没见过低于10G的(机房的人后来告诉我的)。假设某便宜机房(肯定不在北上广深),带宽价格为100元/M*月,每月按峰值计费。则要买10G带宽顶一下,需要的月费是100万,100万……
2、流量清洗&封IP:如前述,要这么做的前提是攻击包至少要到你的机房。而机房自保的措施导致了数据包根本到不了机房,无解
3、CDN服务:现代CDN提供商还没有完善的动态网页加速技术,所以结果就是,你充其量利用CDN保住静态化的主页可以访问,其他任何动态网站功能就只能这样了。
领取专属 10元无门槛券
私享最新 技术干货