记一次服务器数据被删除的恢复-losf 数据恢复

公司的主控的 Redis 是之前别人搭的, 用 root:root 启动并且监听了公网 IP, 没有加密码。被黑客扫描到并利用 漏洞 删除了服务器中的数据文件,涉及数据库代码文件等。
登陆服务器后发现文件都被删除了,df -h 发现磁盘占用并没有减少。结合之前清除 nginx 日志的经历,应该是 MySQL 服务还在运行中,所以文件没有立即释放。
经过与 TG 群里的大佬沟通学习, 最后通过 losf 查看到了已删除但未被释放的文件,再通过 proc 内的文件句柄 用 cp命令拷贝到原目录。经过数小时的拷贝,数据库数据总算恢复了。幸好给代码做了 git 仓库,不然代码要回滚好几个版本。之后迁移到新的服务器。
几点经验及教训:

  1. 一定要对服务器进行备份 (虽然现在也没做,但是关键数据还是要做备份的)
  2. 要采用最小权限原则进行服务的部署, 避免 root 启动及公网直接访问
  3. 对敏感命令进行限制如 rm -rf 命令
  4. 一定不要重启服务器
  5. 付款也无法找回数据 (我们的数据库大概 300G 左右,黑客说付款可以找回数据,但是经过观察流量图并没有这么大的流量进行通信)
  6. 各个领域认识人是多么的重要

Logged in as Instrye. Logout »