【杂谈】谈谈个人站如何应付DDoS/CC攻击

发布于 / 信息应用 / 32 条评论

最近一段时间因为学业比较忙,加上没什么想写的,一直没有更新,刚才主备切换的通知又来了,感觉有点可以写的了。

如果是细心的朋友可能会发现,这段时间本站的一些数据在某一时段会发生变化(比如最新的评论、文章离奇失踪啦之类的……),访问速度也会一定程度下降。这不是灵异事件啊o(* ̄▽ ̄*)o,截至发稿这是本站这段时间第三次被d了,因为备用镜像的数据每日更新一次,如果是攻击前几个小时的就没有同步过来。

下面进入正题(开始胡诌),作为已经选择备案回国的各位,想必都是正经想把站点做好的,愿意接受一些制度的监管。但是速度换来的代价就是你无法去抵御任何层级的DDoS攻击。比如本站的阿里云轻量应用服务器,峰值流量保持在20m/s只需要一分钟左右就会进入黑洞。

查看被攻击时的监控日志,这样的流量,很多freeboot的免费LDAP攻击就能做到,攻击持续时间很短,流量也很小,峰值也就200Mbps。

由于黑洞制度,打死国内的个人站非常容易,比较大的DDoS平台一般是不允许向国内发包的。freeboot提供的这种攻击成本过于低廉,加上攻击者一般比较闲,在你几个小时黑洞清洗之后他再来一次,你又是几个小时的黑洞。“黑洞”机制也一定程度上助长了这些低级攻击者的嚣张气焰。

很多国内站长被连续攻击的时显得手足无措,我的一个朋友被针对之后甚至注销了备案最后直接搬到了国外。其实完全不必这样,有攻击是说明有人开始在意你的网站,他想用这种简单粗暴的方法来破坏你。

攻击者他的目的想让你的网站无法访问,那你一定要在第一时间应当恢复你的网站予以正面回应。任何攻击都是有成本的,攻击者一般不会持续频繁地对你发起攻击,在保持服务正常的前提下,慢慢玩就可以了。


一、监测在线情况

当你被攻击之后像轻量这种不具有云盾的服务器,是没有攻击提醒的。如何第一时间获取到攻击信息,就需要依赖第三方服务。博主的推荐是知道创宇的云监控,每月免费提供1000条手机短信提醒。

https://jk.yunaq.com/

另外一个推荐是DNSPod,除此之外其实以前的360云监控也挺好的,可惜人家不做免费用户了……


二、主备DNS切换

受到攻击进入黑洞,那么接下来我们需要切换DNS解析到备用的源站。像CloudXNS(已经收费了)和DNSPod都能够提供宕机检测和自动切换功能,源站挂掉能自动切换DNS解析到设置的备用源站。

另外有能力你可以自己用各家DNS的API写个宕机切换的脚本,也很容易。其实切DNS的话,就算手动,也就是手机上点两下就能做到的。


三、建立备用站

主站和备用站之间可以使用Rsync保持同步,但是一般没必要。运行一个计划任务每天备份一次源站到对象存储就够了,有时间手动部署上去,镜像站的内容没必要完全与源站时刻同步。

①选择合适的服务器

其实这种20m/s的流量,对于动辄G口的美/日/新等互联网中心区域都是非常正常的流量。香港的CN2一般不行,但大厂像Azure这种本身就具有一定的高防属性,可以轻松应付一般的DDoS攻击。

所以应当选择日本/新加坡AWS、美西CN2回程、香港Azure之类作为服务器,国内访问尚可而且具备一定的防Freeboot这种攻击的能力。

当然这样的备份站也是不能抵御CC攻击的,后面再详细讲它

②合理使用CloudFlare

CloudFlare这个巨良心的企业应该站长们都是知道的,套上CF基本可以无视80%以上的攻击,缺点是到国内的线路不算太好。

如果选择CF,那你的源站一定要放在北美(美西最佳),因为CF对联通电信的回源节点大多在北美,若选源在亚太会绕很大一圈。

另外针对这种断断续续的攻击,请用CF Partner去CNAME接入,这样更加灵活。如果你的站启用了https,记得去CF的控制面板将SSL的模式调成Full模式。


四、防止源站IP泄露

如果你选择了CDN,国内的如果被C有时候还会加重攻击……而且北上广的BGP私以为动态资源没啥套CDN的意义,走一层中转反而速度还会降。

如果你想日常用国内的CDN,那你就得保护好源站咯

源站泄露一般两种方式,一种是SMTP的邮件头(没错,你SMTP发信邮件头里会包含源站头信息),解决方法我看是有拿iptables直接转发到高防服务器的;另一种是扫IP的默认证书(专门有网站干这种事),如果直接https请求一个IP,它会把默认部署的证书返回给请求一方,这个证书就包含了域名。这种解决也很容易,设置一个无效的证书,在nginx vhost的listen参数设置default_server,就是listen 443 default_server这样。

另外就是防CC,这个CF的话可以开五秒盾并且配置好PageRules(能用的到开五秒盾的不多)。直接源站的话你可以配置WAF(最近宝塔不是有了个第三方的免费WAF),自己改改规则别用默认的ε=ε=ε=(~ ̄▽ ̄)~

网上关于WAF的lua也很多,自己善于使用Google去找找,你会有收获的。


五、极限模式

当你被屮到极致的时候,ddcc混合双打,甚至连CF都打穿到源站了,这说明对面下血本跟你来真的了(当然我估计我是等不到这一天了o(* ̄▽ ̄*)o)

一般情况下而言这种攻击成本比较高,针对破站这种没价值的网站应该不会持续太久的。

①选择有硬件防火墙的服务器

OVH、Voxility抗国外的量都很足,价格比较亲民(OVH Cloud最小的实例才3.5刀吧),缺点到国内比较差。想好一些就选CeraNetworks的,他家只卖独立服务器,想要低价的你就买分销的吧。

当然这些都还是得有经济实力支撑的,能被打成这样说明你站应该挺值钱的……

②静态化+CloudFlare全站缓存

CloudFlare提供Always Online服务,WP有很多插件能够让所有页面直接生成html,全部缓存到CF之后源站关机,基本上就处于死猪不怕开水烫的模式了……

当然缓存成静态就算源站暴露也完全不怕C了……


六、结语

其实不管出于什么都好,ddos都是一种浪费带宽的行为。11.24接近全天电信无法访问GitHub就是因为电信到NTT的互联被打爆了,连TCP都无法握手,那个国内方向过去的流量估计能到30Gbps以上。

还有朋友担心备案核查,其实赶上核查会通知你,说明情况就没问题了。我也咨询过客服,客服的回应是虽然解析切出去一段时间,你也必须保证至少有一个二级域名网站在接入商,并且有一定量的访问。

想说的就这些,都是些雕虫小技,希望诸位大佬多多指教。

转载原创文章请注明,转载自: Luminous' Home » 【杂谈】谈谈个人站如何应付DDoS/CC攻击

  1. 还有那些跑ip的,比如censys.io,可以去申请一个免费的ip证书(用文件方式验证,zerossl就可以做到)。然后把直接访问ip的流量全都空掉,配合日志记录和fail2ban美滋滋。还有如果知道服务器和CDN提供商操作防火墙的api的话,可以联动封禁哦,一封封一段,减轻服务器软件防火墙的压力,让网关那里硬件去处理。

  2. 另外,cf的五秒盾网上有绕过方法,建议还是选择验证码。
    我给我的CDN和服务器加了UA检查,CDN匹配黑名单就返回403,服务器检查到黑名单UA或者检查到直连(套了CDN还想直连?)就nginx return 444。
    其实我想丢弃请求、返回连接超时的,但不知道怎么搞,只好求其次返回空内容了。

  3. 之前cos桶就被人D了6.1T 心痛啊(╥╯^╰╥)

    1. @Zhou216 啊……根据实际情况设置限速和限额啊……虽然等到发现还是会破产……
      1. @Luminous 直接-4750.08¥ 难受
        1. @Zhou216 联系客服说明腾讯云未能及时停机可以免除一部分的费用吧,不过想要继续用肯定得付几百块了……
          1. @Luminous 放心 一点都不会给您免除的 需要自己承担所有费用 (客服会告诉你这些都是真实请求,不会给免除
  4. 我一开始建站也考虑过ddos,由于备案的DNS历史记录已经直接把源站IP暴露了,也就无所谓了,倒是担心CDN被刷流量,就弄了CDN+OSS(阿里云)的方案限流<(  ̄^ ̄)

    1. @于文 阿里的OSS和CDN都没有免费额度,鹅厂这方面要大方很多
      1. @Luminous 喜欢全套完整的23333,烧钱了再再说= =,我主站CDN都没上,5M够了,访问量低的情况下CDN也不比源站快(虽然可以预热到L2节点,或者用17ce之类的网站预加载),主站QPS 5 也算够用了。
  5. 基本上最关心的地方都覆盖到了,还是比较全面的,并且也没那么复杂,有了这些基础知识和概念,当真遇到DDoS的时候应该不会感到慌乱了. 另外就保护源站IP而言,如果源站IP已经不慎暴露了,此时在源服务器上对HTTP(s)协议设置CDN的IP地址列表的白名单也是可行的.

    1. @夏目 如果获得了源站IP还是DDoS来的快,就算北美打到10G绝大多数主机商都会给你空路由掉
  6. 请教一下,如果站点开了cdn,碰巧遇到一个闲人拿你练手,那……服务器企不是不会进入黑洞?因为cdn缓存分担了流量

  7. 学习了 有矛就有盾 话说一个分享自己经历和一些经验的博客 还真有人闲着没事干打着玩啊…

    1. @心淡 成本太低,而且有时候有些人太闲……
  8. 被D原因可能是别人闲着无聊,拿一些站点来进行测试,开发工具的具体性能如何。。
    github上有大量现成脚本,敲几个命令就完事了,难点在于僵尸网络。巨大的流量,势不可挡。

    1. @礼拜五 大量的DDoS也是有成本的,如果到了那种程度,防护也就只能用钱砸了。单纯的DDoS OVH/Voxility这种带有前端流量清洗的就能够解决300G以下的攻击了。
  9. 话说我也经常被打,后来索性直接上了高防,直接硬扛,目前还没被打死过。

    1. @Water 唉,国内高防成本太高了
  10. 我也用阿里云轻量和阿里云CDN 感觉随便打打就爆
    一直没空做防护 也没钱((((
    看完了文章写的很棒
    不过我才知道电信到日本NTT只有30Gbps 难怪常年丢包

    1. @haojunmei 阿里轻量电信去程切CUG之后挺好的,一般也没人打。NTT到电信准确说是一共45G的点对点电路。
  11. 感觉略恐怖……搭个博客还会挨打么(

    1. @千玖夜 不知道惹到谁了,哈哈哈(≧▽≦) 不过也无所谓了
  12. 好像hexo在GitHub上搭个人博客稍微安全一点。一直觉得DDoS攻击很无聊,用一种浪费资源的方式进行没有价值的攻击。

    1. @天心度 Hexo就是有局限性( ̄▽ ̄)"
  13. 好像我换了 hexo 之后就再也没考虑过这些东西了…不过感觉折腾这些都好厉害,想起自己以前网站还被挂过两次木马真的是心累

    1. @七夏浅笑 DDoS的话国内的服务器很容易就黑洞了…… 挂马这种你只能尽量保证软件都是最新的吧,然后别装乱七八糟的东西…… 反正CloudFlare超级好用!!!!!
      1. @Luminous 我也不知道怎么被挂马的,当时都是更新了的,我太菜啦
  14. 很好奇这种个人站被D,是不是动了谁的蛋糕……之前的求生和mc服务器日常被D,个人站倒是免受遇难

    1. @SPtuan 我也搞不懂为啥有人锤我这站…… 估计是惹到谁了吧,好在量不大,随便防一下就过去了……
  15. 对于我这种。当笔记用的博客,只有我一个人看。404就404吧。慢慢DD

    1. @sooele 是,不管他让他打一段时间没趣也就自己放弃了2333333