这我可太懂了
解决方案
-
静态网站:对于不刚需互动的服务,使用完全静态的部署方式,把计算任务分配到客户端 原则:客户端能做的,就不要让服务端做,把计算任务分给客户端或者第三方服务,静态服务不怕打也不怕渗透
例:星火应用商店的各项服务基本都是在用户本地实现的,基础服务完全不依赖交互
-
请求透传,禁止CDN缓存:抛弃CDN带来的加速,要求每个请求都回源,每个IP都过筛,使用WAF来鉴别CC攻击和DDoS攻击,自动封禁IP并加入数据库,回源这一点非常重要,CDN很难做到动态封禁,就算是有IP封禁也有数量限制,就算有请求验证也不支持自定义,必须每个请求都回源+合法性验证,才能避免被刷流,这里推荐 雷池 WAF 可以自动获取恶意IP库
-
更换IP并禁止泄漏:到服务商更换干净的IP,或者使用多个跳板隧道,然后确保所有的请求都必须使用VPN或者经过CDN访问,不开任何不必要的端口,防止源机被扫到,让攻击只能打到CDN,而CDN只会传合法请求,SYN攻击和UDP Flood攻击就都无效了
-
大文件分离+CORS验证:图片,视频,软件包等大文件易被刷流,同时并不是那么刚需实时性,使用外部连接提供。如星火的应用列表中,json是通过国内CDN提供的,图片却使用单独的CF Page提供,尽管加载会稍微慢一些,但配图的加载速度并不是刚需,这样做可以杜绝被刷流——因为流量是免费的CF提供
原则:能被刷流的不要放按流量付费服务,尽量不得不放按量付费服务的,尽可能地降低大小和加验证
-
客户端有效性验证:通过特定的算法计算出客户端标识,可以采用GPG等方式让服务端验证客户端/浏览器的合法性(雷池WAF免费提供浏览器客户端验证功能),拒绝一切未经验证的请求,只返回静态页面,配合禁止CDN缓存可以大大降低被攻击的影响
-
优化业务流程,多机备份服务:服务进行多点备份,尽可能低成本地完成服务。比如反馈服务,可以做成多点接收请求,再返回给核心服务,只要接收请求端有一个没有倒,服务就不会异常,而新增请求端是可以动态下发的,也可利用serverless服务进行部署来大批量地开启和关闭服务,大量更换节点以分散攻击流量
今天想转点不一样的东西给大家看,不是行业新闻,也不是技术分享,就是一段心酸的往事,相信社区老用户们今年都经历过了,哈哈
网站刚上线,就被 DDoS 攻击炸了!
今天是一个值得纪念的日子,你打开一罐可乐,看着自己刚刚上线的小网站,洋洋得意。
这是你第一次做的网站,上线之后,网站访问量突飞猛进;没过多久,你就拿到了千万的风投,迎娶了女神,走上了人生巅峰。。。
害,原来是喝醉了啊。。。你发现刚才那一切竟然都是你的幻想!
这时你突然收到了一封邮件:
虽然你之前就听说过 DDoS 攻击,但没想到这么快就发生在了自己的头上。
DDoS(分布式拒绝服务)攻击是一种通过制造大量恶意流量打向目标服务器,导致其资源耗尽、服务中断或无法正常响应用户请求的网络攻击方式。
曾经你以为,DDoS 没什么可怕的,大不了攻击时网站不提供服务,攻击结束后再重启服务不就好了?
但现实给了你一巴掌,没想到云服务器平台直接把你的服务器 封禁了 12 小时 !你脊背有些发凉了:攻击者只需攻击几十秒,竟然就能让你的服务器老老实实瘫痪半天。
你不甘心,决定运用你学过的专业知识进行反击。
你给服务器程序增加了一个请求 IP 黑白名单,并且能够对每个 IP 的请求频率进行统计,只要发现单个 IP 请求过快过多,系统就会自动把该 IP 拉黑,就不用处理该 IP 的请求了。
你信心满满,又开始了对未来的幻想。。
结果没多久,你又收到了同样的邮件,你的服务器 IP 又被封堵了!而且这次 封禁了 24 小时 !
坏了,你意识到自己犯了一个错误。DDoS 攻击根本不需要向你的应用程序发送恶意请求,而是可以通过直接发送大量的网络流量(比如 UDP 包、ICMP 请求等)到服务器,从而消耗服务器的带宽和资源。也就是说,攻击的目标是直接影响服务器的网络层和传输层,不需要经过应用层。
那一瞬间,你发如雨下,突然意识到,自己的后端技术学得再好,有什么用?DDoS 来了,自己还是没办法解决。
不过你不甘心,天将降大任于斯人也,必先苦其心志劳其筋骨,伤其服务器。。。你继续搜索防御方案,发现 Cloudflare 提供了免费的、号称不限量的 DDoS 防护服务!于是你满怀希望地将它接入网站。
之后,有些用户访问网站时,就会看到这朵小黄云,减少了机器请求攻击:
这下,你长呼了一口气,让攻击者和 Cloudflare 斗智斗勇吧~
可没想到,接下来的几天,不断有用户反映:猪站长啊,你这网站打开速度也太慢了!
原来免费版本的 Cloudflare 在国内的节点数量有限,要从国外节点加载网站文件,导致国内用户访问速度变慢了。
于是你在网上查了一些攻略,发现有一些开源仓库确实可以找到国内优选的加速节点,但对网络运营商还是有一定限制,而且谁知道这些节点又能撑多久呢?
正当你犹豫不决时,你又又又又又收到了服务器封堵的邮件!
你一脸懵逼:不是已经接入 CloudFlare 防护了么?
等等,攻击者已经知道了服务器本身的 IP 地址,完全可以绕过 CloudFlare,直接攻击到服务器啊!
这就好比你造了一面墙,但攻击者直接绕过去:
你有些头痛了,干脆一不做二不休,花点儿钱上更好的防护服务?于是你上网搜了一下大公司专业的高防服务器,发现价格竟然在几万 ~ 几十万不等!
你看了看自己 “薄如蝉翼” 的钱包,瞬间放弃了这个念头。
你开始怀疑是不是自己选错了方向,或者该做的也许并不是去拼防护,而是去做点儿别的事情?
首先,你想到了切换一个平台作为源站,只要保证服务器不会因为攻击而导致长时间封禁,这样即使被攻击了也能快速恢复。但是换到哪个平台呢?这时你想到了你的好朋友鱼皮,他曾经也用了一些平台,比如 Vercel。但你听说,他当时在 Vercel 上的网站因为被攻击得太严重,直接被平台封禁了账号,属实是老倒霉蛋了。
通过调研,你发现可以使用云托管之类的容器部署平台,可以将应用程序部署到多个不同的节点上,被封禁的概率小了很多。
但治根不治本,你想了想,只要保护好自己的源站服务器 IP 地址不被泄露,是不是就可以了呢?
于是,你更换了个新的服务器 IP。这次,不直接将网站域名解析到服务器 IP,而是接入了一个大厂的 CDN 服务,将域名解析到 CDN 服务,再让 CDN 服务从你的服务器获取网站文件。这样一来,攻击者无法直接得到服务器的 IP 地址,只能看到 CDN 节点的 IP。
CDN 一般是按照流量计费的,不出意外的话,价格比高防可低了太多。
那如果,出意外了呢?
没过几天,你发现自己的云服务账户欠费了!
原来,攻击者疯狂请求你的 CDN 盗刷流量,产生了高额的流量费用,第一次使用 CDN 的你,根本没有料到这点!
这次,你给 CDN 配置了单 IP 访问频率限制、最大消耗流量的限制和自动告警,比如 5 分钟内流量超过 5 G 时,就自动停止 CDN 服务。
这样一通操作之后,你又恢复了些信心。但没想到,接下来等待你的,是一场无休止的攻击循环。
攻击者攻击了你的 CDN => 触发 CDN 的用量封顶防护,自动关闭服务 => 你重新打开 CDN 服务、并且通过 CDN 配置拉黑了之前攻击者的 IP => 攻击者又使用新的 IP 攻击 CDN。。。
你的选择
你的故事还没有结束,接下来,你会怎么做呢?
你的结局
A. 怒砸巨款,买一年的 DDoS 安全防护
你决定不再 “省小钱,吃大亏”,干脆砸几万块钱,买一个更加专业的防护服务。你的网站终于在大流量攻击下依然稳定运行,用户也稳定增长,但一年后,你的网站只盈利了不到 1 万,血亏!
B. 关闭网站,不做了
看到 DDoS 攻击一波又一波地袭来,你虽然无数次尝试过调整策略,但身心俱疲,最后你决定放弃,关掉这个网站。
虽然稍有不甘,但你意识到,想一个人做好、运营好网站真的太不容易,你也更加理解鱼皮曾经的感受,选择加入鱼皮,帮他一起开发 编程导航 。
C. 找专业人士求助
你意识到自己的网络安全知识是缺斤少两的,于是决定请一位专家来帮你做 DDOS 防护。专家跟你说了很多的专业名词和理论,什么零信任架构、IDS、IPS、态势感知、流量清洗、蜜罐之类的,但最终并没有给你实质性的帮助,因为你也没有足够的资金去实现那些理论。
D. 找警察叔叔求助
你认为攻击者已经触犯了法律,于是决定报警。但没想到,由于你并没有受到巨大的金额损失,警方表示对此案件的关注度较低。而且 DDoS 攻击通常是由大量分布在全球各地的受害主机发起的,很难被追踪和定位。
你很难过,但也意识到了,这才是现实。
E. 想办法拉赞助
既然解决不了 DDoS 问题,何不去找找投资者或合作伙伴,拉个 “大力支持” 的赞助?说不定他们会为你提供免费的 DDOS 防护服务呢!
于是,你将网站开源,持续写文章介绍自己的网站。最终被一位年轻的富二代看上,他不仅没有给你提供赞助,还直接让公司的程序员搬走了你的开源代码,自己上线了个网站。
转载自博客园子:网站刚上线,就被 DDoS 攻击炸了!
原文作者:程序员鱼皮
以上故事如果与deepin社区前段时间经历雷同,那纯属巧合