最近一段时间因为学业比较忙,加上没什么想写的,一直没有更新,刚才主备切换的通知又来了,感觉有点可以写的了。
如果是细心的朋友可能会发现,这段时间本站的一些数据在某一时段会发生变化(比如最新的评论、文章离奇失踪啦之类的……),访问速度也会一定程度下降。这不是灵异事件啊o(* ̄▽ ̄*)o,截至发稿这是本站这段时间第三次被d了,因为备用镜像的数据每日更新一次,如果是攻击前几个小时的就没有同步过来。
下面进入正题(开始胡诌),作为已经选择备案回国的各位,想必都是正经想把站点做好的,愿意接受一些制度的监管。但是速度换来的代价就是你无法去抵御任何层级的DDoS攻击。比如本站的阿里云轻量应用服务器,峰值流量保持在20m/s只需要一分钟左右就会进入黑洞。
查看被攻击时的监控日志,这样的流量,很多freeboot的免费LDAP攻击就能做到,攻击持续时间很短,流量也很小,峰值也就200Mbps。
由于黑洞制度,打死国内的个人站非常容易,比较大的DDoS平台一般是不允许向国内发包的。freeboot提供的这种攻击成本过于低廉,加上攻击者一般比较闲,在你几个小时黑洞清洗之后他再来一次,你又是几个小时的黑洞。“黑洞”机制也一定程度上助长了这些低级攻击者的嚣张气焰。
很多国内站长被连续攻击的时显得手足无措,我的一个朋友被针对之后甚至注销了备案最后直接搬到了国外。其实完全不必这样,有攻击是说明有人开始在意你的网站,他想用这种简单粗暴的方法来破坏你。
攻击者他的目的想让你的网站无法访问,那你一定要在第一时间应当恢复你的网站予以正面回应。任何攻击都是有成本的,攻击者一般不会持续频繁地对你发起攻击,在保持服务正常的前提下,慢慢玩就可以了。
一、监测在线情况
当你被攻击之后像轻量这种不具有云盾的服务器,是没有攻击提醒的。如何第一时间获取到攻击信息,就需要依赖第三方服务。博主的推荐是知道创宇的云监控,每月免费提供1000条手机短信提醒。
另外一个推荐是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以上。
还有朋友担心备案核查,其实赶上核查会通知你,说明情况就没问题了。我也咨询过客服,客服的回应是虽然解析切出去一段时间,你也必须保证至少有一个二级域名网站在接入商,并且有一定量的访问。
想说的就这些,都是些雕虫小技,希望诸位大佬多多指教。
还有那些跑ip的,比如censys.io,可以去申请一个免费的ip证书(用文件方式验证,zerossl就可以做到)。然后把直接访问ip的流量全都空掉,配合日志记录和fail2ban美滋滋。还有如果知道服务器和CDN提供商操作防火墙的api的话,可以联动封禁哦,一封封一段,减轻服务器软件防火墙的压力,让网关那里硬件去处理。
另外,cf的五秒盾网上有绕过方法,建议还是选择验证码。
我给我的CDN和服务器加了UA检查,CDN匹配黑名单就返回403,服务器检查到黑名单UA或者检查到直连(套了CDN还想直连?)就nginx return 444。
其实我想丢弃请求、返回连接超时的,但不知道怎么搞,只好求其次返回空内容了。
之前cos桶就被人D了6.1T 心痛啊(╥╯^╰╥)
我一开始建站也考虑过ddos,由于备案的DNS历史记录已经直接把源站IP暴露了,也就无所谓了,倒是担心CDN被刷流量,就弄了CDN+OSS(阿里云)的方案限流<(  ̄^ ̄)
基本上最关心的地方都覆盖到了,还是比较全面的,并且也没那么复杂,有了这些基础知识和概念,当真遇到DDoS的时候应该不会感到慌乱了. 另外就保护源站IP而言,如果源站IP已经不慎暴露了,此时在源服务器上对HTTP(s)协议设置CDN的IP地址列表的白名单也是可行的.
请教一下,如果站点开了cdn,碰巧遇到一个闲人拿你练手,那……服务器企不是不会进入黑洞?因为cdn缓存分担了流量
学习了 有矛就有盾 话说一个分享自己经历和一些经验的博客 还真有人闲着没事干打着玩啊…
被D原因可能是别人闲着无聊,拿一些站点来进行测试,开发工具的具体性能如何。。
github上有大量现成脚本,敲几个命令就完事了,难点在于僵尸网络。巨大的流量,势不可挡。
话说我也经常被打,后来索性直接上了高防,直接硬扛,目前还没被打死过。
我也用阿里云轻量和阿里云CDN 感觉随便打打就爆
一直没空做防护 也没钱((((
看完了文章写的很棒
不过我才知道电信到日本NTT只有30Gbps 难怪常年丢包
感觉略恐怖……搭个博客还会挨打么(
好像hexo在GitHub上搭个人博客稍微安全一点。一直觉得DDoS攻击很无聊,用一种浪费资源的方式进行没有价值的攻击。
好像我换了 hexo 之后就再也没考虑过这些东西了…不过感觉折腾这些都好厉害,想起自己以前网站还被挂过两次木马真的是心累
很好奇这种个人站被D,是不是动了谁的蛋糕……之前的求生和mc服务器日常被D,个人站倒是免受遇难
对于我这种。当笔记用的博客,只有我一个人看。404就404吧。慢慢DD