记一次公司服务器被当肉鸡的经历

195 阅读3分钟
  • 事故起因

    • 2023年4月21日晚上运维在群里说生产服务器磁盘满了(此刻还不知道问题严重性),群里后端和运维商量了一下,将文件迁移到比较大磁盘下,然后没分析原因就将此事搁置了。
    • 第二天,2023年4月22日,公司技术群里说阿里云拦截到了其他域名对我们服务器的请求,拦截的域名疑似色情网站,这时候我们才明白了,我们的服务器是被当做别人资源服务器了。
    • 对方大体的做法如下,为下面书写方便这里就把这个人称为水果哥吧:
      • 发现了商场小程序接口 /base/update/feedback/ 游客可以访问,可以上传数据。ps:这个接口本意是用于给使用小程序的人可以反馈一些意见;
      • 然后开始测试我们这个服务器的接口上传格式验证,如大小限制,文件名格式等,然后就开始写入文件。
      • 然后利用原本的这个接口返回数据格式,知道访问上传资源的url大致的拼接格式;
      • 然后在GitHub,建立一个项目,里面放html页面,html页面写入一个video播放器,src路径引入取回资源,GitHub.io可以发布静态页面的功能,就可以当做一个web视频网站在网上分发;
  • 事故影响

    • 从发现22日正式发现后,往回查历史,发现从16日0点开始,们资源服务器的请求数暴增,导致付费cdn服务被刷了很多流量,截止22日共6日共刷了3万元流量;
    • 21日资源服务器磁盘被写满,导致21日晚到22日上午这段时间上传图片丢失,没记录到;
    • 涉及停用的接口,修复期间内无法使用;
  • 事故处理

    • 对于接口 /base/update/feedback/ 立刻停止接口;
    • 阿里云开启防盗链,添加白名单;
    • 删除水果哥在服务器放的资源,避免一直非常高的请求。(这个删除后还一直能访问那些资源,才想起我们静态资源服务器cdn的也会有缓存,后面刷新了cnd后才无法访问那些资源);
    • 排查所有base/update类似接口,评估安全性,不符合安全和不会影响主要业务都暂时停止;
    • 我们静态资源使用的是阿里云的cdn,这个根据对之前的数据先限制了一个最高额度;
    • 完善对这部分游客可以上传资源接口进行一个临时资源访问token验证,结合小程序登录验证提高安全性,并对该接口加入更加多信息的日志;
    • 制定对后续上传接口改造计划,改为阿里云的oss上传,避免出现此次磁盘被突然塞满,其他上传接口都无法正常上传图片的情况;
  • 总结

    • 暴露了我们对服务器监控薄弱;
    • 收费的服务记得限额控制损失;
    • 清除资源记得如果cdn,cdn记得刷新;
    • 服务器资源记得做多机,异地备份;
    • 游客接口也需要做信息验证和次数限制与本人识别;