服务器中了两次门罗币xmrig挖矿病毒,相关的文件名字叫过log、ntools等等,一次比一次厉害。在此记录一下杀毒全过程,为了永久解决这个问题,也寻找了常见的安全防护方法,为后来作参考。
一、安全防护设置
中病毒的一大重要原因是安全防护没有做到位。
四个比较简单,但是又非常有效的安全防护方式如下:
1、禁止以root 用户的身份进行 SSH 连接
进入到这个文件当中,进行设置
sudo nano /etc/ssh/sshd_config
进去之后找到 PermitRootLogin
将这一部分注释打开,后面的 prohibit-password 修改为 no
Ctrl+X 退出,保存 yes,再退出。
重启 SSH 服务
sudo systemctl restart ssh.service
这样禁用 SSH 以 root 用户身份登录就完成了!
使用 root 用户身份去登录,显示不被允许,说明已经成功。
2、开启防火墙
开启防火墙
sudo ufw enable
设置防火墙开机自启动
sudo systemctl start ufw
3、修改 SSH 端口
SSH 的默认端口是 22,将端口改掉,进一步安全。
还是编辑这个文件
sudo nano /etc/ssh/sshd_config
找到 Port 22 部分
取消注释,将 22 进行修改,改成任意不需要的端口,比如 2222
修改防火墙,让防火墙允许端口 2222
sudo ufw allow 2222/tcp
查看防火墙状态
sudo ufw status
重启 SSH 服务,完成!
sudo systemctl restart ssh.service
4、禁用 SSH 账号密码登录,改用密钥登录
以免用户密码被暴力破解
在本地机(想要连接服务器的本地机)中使用如下命令,生成 SSH 密钥对(已经生成过可以跳过)
ssh-keygen -t rsa
之后就一路回车就好。如下图就是创建成功了
创建后的密钥对位于~/. ssh/
然后,将本地公钥上传到服务器当中
ssh-copy-id 用户名@地址
这样就是添加成功了
然后到服务器端再次使用如下命令
sudo nano /etc/ssh/sshd_config
将 PasswordAuthentication 这一部分注释取消,后面修改为 no,来禁止密码登录
同样 ctrl+X,yes,保存退出。
重启 SSH 服务
sudo systemctl restart ssh.service
大功告成!
二、挖矿病毒查杀流程
1、查找 CPU 高占用率的进程
先尝试使用 top 或者 htop 能否查到进程。
如果失败,尝试使用
sudo btop
如果依然失败,使用 sysdig 这个包
sudo sysdig -c topprocs_cpu
可以查找到隐藏进程。
2、寻找进程文件
(如果上一步已经发现执行文件,就不用再进行这一步了,这一步是无法看到对应执行文件)
(如果使用 sysdig 来找到的进程,一般可能无法直接找到对应的执行文件)
去/proc/下面找对应的执行文件
cd /proc/进程号/
ls -l
找到 exe->xxxxxxx 链接位置,如果依然无法找到,使用下面的方法。
找不到不用慌,为了防止它下新的“崽”,先不急着 kill 进程,先找对应的自启动任务和定时任务。
1)查找定时任务
在 linux 系统当中,定时任务一般存放在/etc/cron. xxxxxx 类似的文件夹当中
比如,在我们的系统中,就是存在有
/etc/cron.weekly
/etc/cron.hourly
/etc/cron. monthly
/etc/cron.d
这四个文件夹
依次进入四个文件夹排查
cd /etc/cron.weekly
最终在四个文件夹下分别发现了不同的可疑定时任务
在 weekly 下面看到一个可疑文件 mI2HsIlW
在 hourly 下面看到一个可疑文件 EQdIN2mt
在 monthly 下面看到一个可疑文件 GirOvV6G
在 d 下面看到一个可疑文件 KusCsL9f
这四个文件的内容全部都是
*/1 * * * * root /bin/ap3kicB7 1 1
全部都是在定时启动这个文件,这样我们就找到了对应的文件。
2)查找开机自启动任务
sudo systemctl list-unit-files --type=service | grep enabled
看到这个名字很奇怪,大概率也是有问题的
查看文件内容,里面的内容如下,果然还是和 ap3kicB7 有关
[Unit]
Description=service
After=network.target
[Service]
Type=simple
ExecStart=/bin/ap3kicB7
RemainAfterExit=yes
Restart=always
RestartSec=60s
[Install]
WantedBy=multi-user.target
3、全面清杀
找到对应文件过后,将这个文件上传到微步进行检测,看看是否有问题。
果然有问题,是 xmrig 挖矿程序!
可以看到它还禁用了防火墙。
先按照之前第一部分安全防护的步骤,禁用以 Root 用户形式进行 SSH,防止它进行什么其他操作,然后安全打开防火墙!
1)全面搜索定时任务、自启动任务、开机自启动任务等等
全盘搜索含有 ap3kicB7 文件内容的文件
sudo grep -r "ap3kicB7" / 2>/dev/null
发现除了上述文件之外,果然还有高手!
/usr/lib/systemd/system/o8cKn4y5.service
不出意外,里面的内容还是与 ap3kicB7 有关!
[Unit]
Description=service
After=network.target
[Service]
Type=simple
ExecStart=/bin/ap3kicB7
RemainAfterExit=yes
Restart=always
RestartSec=60s
[Install]
WantedBy=multi-user.target
2)查找刚刚微步找到的 xmrig 挖矿程序
我是用了多种方式来查找。
搜索 xmrig 文件名
find / -name xmrig
成功找到对应文件,查看文件内容,发现开篇使用 PROGPOW 这个包,经过搜索发现,这是一个挖矿专用的包,是过挖矿时候的 PoW 认证用的
然后直接再次全盘搜索“PROGPOW”,以免存在其他名字的漏网之鱼!
sudo grep -r "PROGPOW" / 2>/dev/null
3)全部删除
将所有查找到的文件依次全部删除。
sudo rm 文件名称
如果发现 sudo 无法将对应文件删除,大概率使用 chmod 修改文件权限也没有用。
那是该文件因为被保护了,防止被 root 用户删除。
使用 lsattr 查看文件属性,i 是被保护,防止被 root 用户删除。
lsattr
发现果然有i属性,导致我们无法删除。
使用 chattr 修改文件属性,去掉 i 属性
chattr -i 文件名
全部都删除过后,发现服务器已经恢复正常,且等待许久没有程序自启动!
注:
还有一个寻找自启动文件的方法,但是密密麻麻全是文本,不熟练可能不太好找,我之前是失败了
kill 进程,等待定时任务启动,寻找对应文件
sudo kill -9 进程
查看日志
sudo journalctl -e
总结
做好防护是第一位!!!
一定要做好防护!!!