我是一个计算机安全知识基本为0的新手。
前天23:52,开发环境 centOS 7 服务器出现了一个占用cpu188%的进程,杀掉进程之后会自动重启,并且服务器上所有web应用,浏览器访问时浏览器的cpu占用率也达到了100%。这种现象一看就怀疑是服务器被攻击,中了挖矿木马。
很遗憾没有在当时截下图来,在此我记录一下我是怎么应对的。
进程是root用户打开的,因此可以判断是root用户被黑了。
首先为了防止进一步被攻击,打开原先关闭的防火墙,删除ssh所有已经认证的key,修改ssh端口,禁止root远程登录。
# 打开服务器防火墙
systemctl start firewalld
# 删除ssh认证
rm -rf ~/.ssh/*
修改ssh端口是运维同事帮忙弄的,没仔细研究怎么弄。
而禁止root远程登录,需要修改/etc/ssh/sshd_config
vim /etc/ssh/sshd_config
修改 PermitRootLogin将yes改为no
然后重启sshd服务
service sshd restart
到这一步,基本上就防止了被进一步攻击了,接下来解决服务器上的木马。
首先查看定时任务
crontab -e
发现一大堆定时任务,还是乱码。没法看,那就看日志吧
vim /var/log/cron
看到了罪恶的根源
既然定时任务有问题,那就清掉吧,反正我们服务器没有自己写的定时任务。
crontab -r
然后搜一下shz.sh
这个文件
find / -name shz.sh
找到了文件在/etc/shz.sh
但是,用 root 用户居然说我没删除权限,上网搜一下是因为有 -i 属性,验证一下。
lsattr /etc/shz.sh
确实是有-i属性。
然后修改属性
chattr -i /etc/shz.sh
然后删除文件就行了。
以上步骤做完几个小时服务器都是稳定的,大概是能解决了问题。
接下来是web项目的挖矿脚本,在浏览器打开web项目,打开控制台,发现几条神奇的访问记录,包括了:
- 一个短连接
- 一个短连接重定向之后的js脚本
- 若干条websocket请求
看js源码也可以发现源码中就做了websocket请求,并且指向的是一个矿池 https://xmr.omine.org/
好吧,台湾的矿池,莫非是湾湾同胞搞的鬼。
总之这只不过是web项目级别的注入脚本,重新部署就行了,web容器都不用重装。
就此解决这次挖矿木马了。
2018.10.29 更新
在服务器正常运行8到9小时后,再度沦陷了。由于已经开启了防火墙,因此接下来锁定到防火墙开放的端口。但是。。开发环境服务器的防火墙好像有点扯。
不知道是谁添加了这么多端口,首先一个个删掉吧。。
把防火墙清理了一下,然后这次认真观察了定时任务
crontab -e
然后发现定时任务中的数据非常奇怪,都是应用中用 Redis 做缓存存放的一些数据,然后搜了一下有没有 shz.sh
这个文件,还真有。
也就是说,服务器被黑很有可能跟 Redis 有关。
上网找到了这篇文章,基本上就是这个原因了 Redis 未授权访问缺陷可轻易导致系统被黑
想了一下我们 Redis 的 auth 也确实够简单的。。
那么首先把 Redis 端口也从防火墙白名单去掉,因为开发环境 Redis 无需暴露到公网。然后把 Redis 的 keys 全清了。
然后,以前因为开发人员的偷懒,所有应用都是用 root 用户部署的。。为了安全性,重新创建了一个 deploy 用户,然后重新安装部署应用。
暂时解决问题了,再观察两天看看吧。