DDOS攻防战:凌波微步与七伤拳
前阵子(2022-06-22)有自称ACCN的黑客组织采用DDOS方式攻击我司游戏服务器。最终导致游戏连续几天出现无法登陆连接的情况,攻击期间游戏服务彻底瘫痪,他们以此勒索公司交“保护费”。不过考虑到贼人不存在信用,有了第一次勒索难免第二次和第三次,我们选择了拒交保护费和这帮人硬刚。我在此记录下抗争历程,希望为后来者提供一些资料或者启发。
<img src="https://product.liyiru.top/uploads/1e3e41b50b0bc4e7973e04e2dc28378e.png"/>
第一回合:首先这帮黑客选择了我们的游戏登陆服务器和日志服务器流量猛攻。由于游戏登陆服务器是裸ip且是单服务器不存在负载所以几乎没有任何防御手段,我查看了服务器网络安全组发现端口全开,只能先关闭除了必要的服务以外所有的端口。但是阿里云在检测到攻击后自动把服务器打入了黑洞90分钟,期间游戏完全瘫痪不可访问。这一回合完败。
第二回合:在公司确立要硬刚后我们开始找公司更有开发经验的同事交流了下,结论是要买DDOS高防,只能烧钱应对。我们看了下阿里云的DDOS高防服务,一个月最低防护也要4w以上,一年的高防好点的要98w显然目前是负担不起。随后我们申请了阿里的D高防体验一天。不过由于公网ip没有换,第二波攻击到来的时候高防仅仅是检测到攻击,依然被黑洞90分钟。第二回合也是完败。
第三回合:<b>凌波微步</b>。有了前面两次的失败总结下经验我开始催游戏放弃裸ip采用域名解析方式接服务器,然后把公网ip换了。因为这是最基本的防御,然后新创建了一个网络实例和一台传统负载均衡。我的假设是黑客是拿到客户端抓包后看到是裸ip直接攻击的ip,这样换了ip应该就能躲过一次攻击。果不其然,第三回合他们发起攻击后我就开始切换登陆服务的ip并且停掉暴露的网络ip。这次挂掉了的是日志服务,游戏主要服务也存在有玩家掉线的情况,但相比第二回合好很多。第三回合板回两成,也是算失败。这次终于见到了成效,也发现了这个自称ACCN的组织很懒散,根本不像真的黑客。没有实时跟踪游戏ip来进行攻击,不知道是肉鸡数量不够还是忙于攻击其他游戏,我更倾向于他们懒得每次攻击都去抓包查看新的游戏服务ip。总结起来多创建几个公网ip等到他们通知攻击的时候直接切换公网ip并关闭正在受攻击的ip是有效的,相当于你打我就躲,让你打不找,像<b>凌波微步</b>。
第四回合:<b>七伤拳</b>。根据前面的经验发现我们还是能一定程度上多开攻击,那么能否反击呢。从常规思考来看是不可能的,首先攻击者基本都是攻击服务+肉鸡,发起攻击的人躲在暗处发攻击指令就可以了。从这个角度来看是只能挨打的。不过我思考一晚后提出几个假设:
1>> 国内网络环境相比海外还算比较干净,因为肉鸡大部分是有公网ip的服务器,国内的云服务监控相对更严,有肉鸡行为的机器在国内往往会被警告关停。那么肉鸡应该很大部分来自海外。
2>> 肉鸡要保证自己的攻击来源来自世界各地来防止攻击流量被过滤清洗,且攻击指令不会太复杂冗长。
基于以上假设加上前面游戏服务更新上了域名,我开始尝试用域名解析DNS的解析路线来做文章。因为域名解析的时候可以选择解析路线,只要把不同的路线解析到不同的IP上再配合网络日志流量分析就能分析出发起攻击的肉鸡的大致区域分布,然后把攻击比较猛烈的区域(主要是海外路线)解析ip记录为127.0.0.1。让他们发起攻击的时候攻击的是自己。这样做就相当于<b>七伤拳</b>,跟攻击路线一起来的真实玩家会连不上游戏,会损失一部分玩家,但是同路线的肉鸡发起攻击的时候攻击到的是肉鸡自己。先伤已,再伤人。果然,第四回合这套组合拳打下来服务基本就稳定了,美中不足的是会有个别玩家反映连不上,这群玩家挂了vpn或者本来就是海外玩家的居多。这回合平手,也可以算个小小的胜利。因为后续几天终于有了短暂的安宁。
总结起来其实DDOS在国内其实也不是完全没有招架之力,只是想要省心安全度过除了花钱似乎也只能自己琢磨跟犯罪份子斗智斗勇了。最后想说一句,不要向恶势力低头,抗争到底!
更多>>