原创 程序员笔记
在2024年4月遭遇了一场前所未有的网络攻击,持续了两个多月。本文将详细记录这场攻击的过程、我们的反应以及快速处理的具体细节。
2024年4月,站点开始断断续续地收到各种攻击,主要集中在工作高峰期。攻击者每天准时发起攻击,使用的主要手段是CC攻击,平均每小时1000万次左右,偶尔还会夹杂DDoS攻击,导致服务器频繁崩溃。
人机校验与邮箱黑名单
初始阶段,站点的账号注册使用自建邮局,没有上人机校验和邮箱黑名单,导致接口被刷爆。攻击者利用我们的邮件接口向政府部门邮箱发送大量验证码。我们迅速增加了邮箱白名单和人机校验,漏洞得以修复。
垃圾消息污染
攻击者转而瞄准摸鱼聊天室的即时通讯功能,使用高并发刷屏。我们采用了AC算法替代DFA算法,提高了敏感词过滤的精准度和效率,并结合koa-ratelimit中间件进行限速,暂时防住了攻击。
消息发送的漏洞
攻击者发现了MQTT没有鉴权的问题,直接绕过了敏感词过滤机制。我们增加了ID鉴权,并修复了昵称设计和用户ID校验的漏洞。
后端爆炸
攻击者发现接口没有做数据合法性校验,导致后端频繁崩溃。我们引入了joi插件进行数据合法性校验,并在前端增加了token校验和混淆代码,迷惑攻击者。
上WAF
由于纯粹的CC攻击导致服务器资源消耗严重,我们尝试部署雷池WAF,但由于服务器性能不足,WAF崩了,业务也受到影响。
持续性CC攻击
我们采用了多线程和负载均衡的方法,复制入口文件并在不同端口运行,暂时缓解了CC攻击的压力。
反击
朋友尝试使用gzip炸弹进行反击,成功让攻击者暂停了两个小时,但随后攻击更加猛烈。
低成本解决方案:高防CDN
最终,我们选择了高防CDN作为解决方案,设置CC频率限制、IP地区和请求头规则,成功防御住了攻击。
在这场攻防战中,我们也反思了自身的问题。最初,我们在处理攻击者发送垃圾广告时,态度过于激烈,导致结仇。作为官方,我们应该平静对待,封号拉黑即可,不应与用户对骂。
其他经验分享
我们还发现,不同云服务商的应对策略有所不同。阿里云和腾讯云在遭遇攻击时会封IP,而亚洲云则提供了更稳定的服务。选择服务器时,不应只看服务商的规模,还要考虑实际的服务质量和响应速度。