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

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

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