官网被打挂、更新没挂:香港服务器该怎么分层
栏目里9月12日那篇讲的是暴露面,补丁全打了,门没关紧照样被打穿;9月22日那篇讲备份别和业务放一台机器。两篇说的都是"少暴露"。这篇换个方向:有些东西注定要暴露在外面,被打是早晚的事,那就得先想清楚,它被打挂的时候,还有什么不能跟着挂。
让我想到这个问题的,是Canonical在10月8日那次事故。
挂了4个小时,但没人装不上软件
10月8日,Canonical在Ubuntu Discourse确认网站基础设施正遭受持续DDoS攻击,ubuntu.com、canonical.com、博客和开发者子站,还有安全公告页和安全API,陆续打不开。按OMG! Ubuntu事后的更新,这些站点前后离线了4小时12分钟。本站全球新闻栏目10月13日那篇Canonical遭年内第二次DDoS攻击有完整经过,这里不重复。
值得多看一眼的是没挂的那部分。APT软件仓库、ISO镜像服务器、Launchpad、PPA、Snap Store、Ubuntu单点登录,整个过程都在正常提供服务。也就是说,全世界跑Ubuntu的服务器,这4个小时照样能apt update,照样能装软件。被打挂的,只是"给人看"的那一层。
对比今年5月那次就能看出差别。5月初Canonical遭遇的那场攻击,不光官网下线,Launchpad PPA、单点登录、邮件列表、Snap Store一起中断,有用户连更新都装不上。事后有黑客组织在Telegram上认领,说用的是一个号称能打出3.5Tbps的DDoS租用平台。5月之后Canonical做了复盘加固,10月这次的结果说明,把分发层和展示层隔开这件事是做到了。
同一个周末还有另一件事。10月12日,《战争机器:E-Day》的开发商确认玩家大面积掉线是DDoS造成的(见本站报道)。游戏和官网不一样,登录和对战服务器一挂,就是直接的用户流失。两件事放在一起,问题就很具体了:你的服务器上,哪些是挂了也就挂了的,哪些是一分钟都不能停的。
一台香港服务器上,也分得出四层
租香港服务器的中小团队,很常见的做法是一台机器包圆:官网、后台、API、安装包下载、数据库,共用一个IP。攻击者打的是官网,陪葬的是后台和API;有时候甚至不用攻击,一个爬虫把下载目录扫一遍,带宽就满了。
照Ubuntu的分法,可以拆成四层。
给人看的。 官网、博客、活动落地页。必须公开,最容易被盯上,但短时间离线损失最小。这一层的源站IP不该直接露在外面,前面挂一个香港高防IP,源站只收清洗后的流量,攻击流量在到机器之前就被挡掉。
给程序用的。 API、支付回调、游戏登录接口。不能停,但也不需要被所有人看见。独立IP,最好独立机器,按来源和频率做限制。它和官网最不该共享的,就是同一个入口。
分发。 安装包、更新文件、静态资源。学Ubuntu:镜像、CDN、多个来源,这一层本来就该按"随便打"来设计,打掉一个源还有别的源。
管理。 SSH、宝塔面板、数据库端口。不对公网开,走白名单或者内网。这一层根本不应该出现在攻击者的视野里。
四层分开,不一定要四台机器。一台香港服务器加一个高防IP,或者两台小配置分工,成本比官网离线4小时低得多。Radware今年初的报告里有个数字值得记住:多数高强度的应用层攻击持续不到60秒。这种攻击,等运维看到告警再切换已经晚了,清洗必须是自动的。
一个很省事的自查
把官网那个IP在防火墙上封半小时,看看后台还能不能登、API还能不能调、用户还能不能下载。能,说明分层做到了;不能,说明官网挂的那天,其他东西也会一起挂。这个测试比任何防护峰值数字都更能说明问题。
攻击频发的游戏、金融、电商业务,可以把"给程序用的"那一层直接放在香港高防服务器上,省掉自己拼方案的功夫;普通业务用一台香港服务器配高防IP就够。无论哪种,先把层分开,再谈防多少G。