记录一次VPS被黑后长记心的过程

昨天去看了下我在海星云上不怎么用的那台 VPS,然后发现了流量超出被暂停了, 被暂停了是看不到每天流量进出口监控,所以我发了工单问了下是什么情况, 大概就是 3 月 3 号的时候突然的 VPS 出口流量很多, 估计是被用来做肉鸡然后去 DDoS 别人了吧。

客服在看了流量是别黑没的之后好心的给我加了 400G,然后要求我在一个小时内解决掉被挂上的马。

对于我这种运维小白来说,根本没有解决这种问题的经验,现在回头想下应该留一个快照之后研究用。 没有了实战环境那就学着从多个方面来提升 VPS 的安全程度就好了。 通过阅读资料我了解到了以下这些保证服务器安全的方法:

  1. SSH 相关安全;
  2. 防火墙相关安全;
  3. rootkit 相关安全。

在重新安装系统之后,我把本地的 SSH-Key 也替换了一遍,之前是 RSA 的 SSH Key, 现在换成了 ED25519 公、私钥更短,但是更加安全,是 RSA 安全性的10倍, 更换了本地 SSH Key 之后我开始设置 VPS 上的 SSH 配置,SSH 配置修改了以下几部分。

  1. 替换默认 22 端口,改为其它端口;
  2. 创建新用户,加入 sudo 用户组,用户密码用 1Password 生成保证唯一;
  3. ssh-copy-id 给新建的用户添加上 SSH 公钥;
  4. 禁止 root 用户登录;
  5. 3 次密码失败等待,10 次密码失败使用 fail2ban ban IP。

完成 SSH 相关安全配置之后就开始配置防火墙 iptables 的配置对我来说还挺繁琐的,所以我就用 ufw 来进行防火墙的配置了, ufw 配置起来和各种云服务的防火墙配置感觉类似,allow 端口或者 deny 端口就好了。 配置防火墙需要注意的是一定要先把 SSH 的端口打开,不然忘记这个可真的就要翻车了。 然后就是需要哪些端口再打开哪些端口,其他的一律禁止就好了。 我现在就只打开了 SSH 的端口和 80 端口,毕竟是新装的系统,装了个 nginx 测试下防火墙的效果, 并且 nginx 之后还是会用到的。

rootkit 是我刚从鸟哥的网站上了解到的内容,鸟哥网站上关于 rootkit 相关的内容其实有些旧了, 看下了解下什么是 rootkit,如何来应对就好,实际遇到问题的时候还是多参考官方手册就能解决掉绝大多数的问题。

检查VPS当中是否有 rootkit 主要用 RootKit Hunter 这个软件,这个软件在使用之前一定要运行 rkhunter —propupd 命令来更新软件 md5 等数据库信息,保证数据库信息最新,避免一些不必要的 Warning。

完成 SSH、防火墙、rootkit 相关安全配置之后其实服务器的安全程度就不错了,之后再注意及时打暴露的服务的补丁应该就可以了。