[color=rgba(0, 0, 0, 0.75)]一、发现先搜了下网上有没有相似经历的,发现B站有个up主发了视频 记一次服务器被挖矿的经历和排查 。简单看了下他的视频,有个比较清晰的思路了。
使用命令查看当前进程 ps -a发现有一些奇怪的进程,但又不确定是哪个。
网站上监控服务器资源显示突然被占用了很多资源。
top:查询通过CPU使用量找一下,查询当前的进程使用资源状况。 toptop以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。
可以看到进程xmrig占用了大量CPU资源,百度也可以搜到xmrig是个挖矿病毒。 二、排查百度了一下,好麻烦,安全意识不够强吧。
先查询xmrig病毒的文件地址 ls -l /proc/进程ID/exe
[color=rgba(0, 0, 0, 0.75)]> lrwxrwxrwx 1 root root 0 Jul 11 13:04 /proc/3934534/exe -> /root/.cfg/xmrig
[color=rgba(0, 0, 0, 0.75)]查到隐藏的地址,cd命令进不去,找不到地址也无法删除。后来发现是一个重定向的地址。用另一个语句查询 find / -name xmrig
[color=rgba(0, 0, 0, 0.75)]> /var/lib/docker/overlay2/860d7d30e33967a65150a3f93c5994a9077e1906e0f9ccda73ee1008803b92f1/merged/root/.cfg/xmrig
> /var/lib/docker/overlay2/860d7d30e33967a65150a3f93c5994a9077e1906e0f9ccda73ee1008803b92f1/diff/root/.cfg/xmrig
[color=rgba(0, 0, 0, 0.75)]
找到两条病毒的信息,进入到文件夹下发现是开的docker容器,原来是容器内被病毒入侵了。
前两天开了一个docker容器搭建python环境,将容器ssh通过openssh映射到公网端口上了,密码设的比较简单(123456),so被攻击了。这个是将docker容器端口开放出来的博客 pycharm远程连接服务器docker容器内python环境 。
到这里其实我可以直接将docker容器删了重新启动一个就行了,看了网上的教程,练练手。
矿狗还把我服务器密码给改了(虽然只是docker容器),好气! 三、清除依旧查询xmrig病毒的文件地址 top
[color=rgba(0, 0, 0, 0.75)]> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 11347 root 20 0 2440420 2.0g 4012 S 201.0 14.0 2399:29 xmrig
[color=rgba(0, 0, 0, 0.75)]ls -l /proc/11347/exe
[color=rgba(0, 0, 0, 0.75)]> lrwxrwxrwx 1 root root 0 Jul 11 07:18 /proc/11347/exe -> /root/.cfg/xmrig
[color=rgba(0, 0, 0, 0.75)]这次通过cd进入文件可以看到多个病毒文件 cd /root/.cfg/ls
[color=rgba(0, 0, 0, 0.75)]> bios.txt ps xmrig
[color=rgba(0, 0, 0, 0.75)]其中bios.txt是三个ip(172.18.0.1-3)。
直接将整个病毒的文件夹删除 rm -rf /root/.cfg杀死进程 kill -9 11347至此病毒清理完毕了,服务器恢复正常。
这里我没遇到定时任务的问题,因为病毒一般来说都比较顽固,在其他问题中介绍下。 四、其他问题其他博客提到了有定时任务的问题,粘在这里参考吧。 1.定时任务crontab通过 crontab -l 发现没有定时任务,但是会重新启动
cd /etc/ 查看crontab文件发现有隐藏的定时任务
通过rm删除文件时 rm -rf /etc/crontab ,没有权限 chattr -ia /etc/crontabrm -rf /etc/crontab删除后在./etc目录下多看几个crontab文件,发现病毒备份了多个定时任务,只要不是自己的定时任务 直接删文件就好了 2.定时任务25.删除定时任务 rm -rf /var/spool/cron
6.删除ssh认证信息 rm -rf ./ssh/
7.原因,有可能是redis等程序导致,
8.尽量使用内网链接,不要暴露端口号或者外网地址 3.禁用root远程登录禁用 root 远程登录的方法(用其它用户su过去): sudo vi /etc/ssh/sshd_config关闭 root 远程登录
Find PermitRootLogin and set to no: PermitRootLogin no重启 ssh 服务 sudo service ssh restart |