【攻防系列】服务器被攻击的过程与应对:一场持续两个多月的攻防战

随笔2个月前发布 林为
26 0 0

原创 程序员笔记

在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,而亚洲云则提供了更稳定的服务。选择服务器时,不应只看服务商的规模,还要考虑实际的服务质量和响应速度。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...