记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案一、事情缘由前段时间给大家录制《玩转Docker》教学视频,链接请参阅https://www.bilibili.com/video/BV1BK4y1A78M,为了更好的演示,就在阿里云搞了一个云服务器,自己本地连接。 云服务器到手之后,为了可以让自己本地可以连接到阿里云服务器上就做了如下操作: 开放了ssh(port:22)端口:为了远程连接使用。 开放了剩余的其他所有端口:录制教学视频时启动了相关容器,容器的一些固定端口6379等映射到了宿主机的随机端口上,为了能从公网访问到容器的内容,就开放

大家好,又见面了,我是你们的朋友全栈君。

一、事情缘由

  • 前段时间给大家录制《玩转Docker》教学视频,链接请参阅https://dongshao.blog.csdn.net/article/details/116593404,为了更好的演示,就在阿里云搞了一个云服务器,自己本地连接。
  • 云服务器到手之后,为了可以让自己本地可以连接到阿里云服务器上就做了如下操作:
    • 开放了ssh(port:22)端口:为了远程连接使用。
    • 开放了剩余的其他所有端口:录制教学视频时启动了相关容器,容器的一些固定端口6379等映射到了宿主机的随机端口上,为了能从公网访问到容器的内容,就开放了这些端口(这是隐患)。

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

二、原因排查

  • 录制教学视频时做了一些相关演示案例,例如在云服务器中搭建了含有Redis/Nginx等服务的容器(但是Redis服务并没有设置密码),如下图所示

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 好家伙,就在我搭建完这些容器之后,后面云服务器就开始给我报警了。首先是CPU暴涨(这也算是挖矿的基本特征),如下图所示

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 接着就是安全警告

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 打开一看,没错,redis被攻进来了(教学视频介绍Docker 3大网络的时候,把容器的6379端口直接映射到宿主机上了)

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 分析原因:恶意攻击访问本地服务,上传了相关恶意脚本。
  • 报警报了一两天,一开始我也没在意,后来我忍不住了,我能让你在我面前玩???那就开整,干死你。

三、找出挖矿机器目的地(新加坡)

  • CPU暴涨,那肯定是后台有恶意程序在跑了,先top命令查看一下,果然,两个常见的挖矿病毒,crypto和pnscan
top

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 这些恶意程序一般都存在/usr/share目录下,查看若然都在里面,执行下面的命令把这些相关程序都删除了
# 查看
ls -l /usr/share | gre cry
# 删除
sudo rm -rf /usr/share/*crypto*
# 确认下是否删除完成
ls -l /usr/share | gre cry
# 查看
ls -l /usr/share | gre scan
# 删除
sudo rm -rf /usr/share/*scan*

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 再来查看一下网络情况,程序肯定是把本机的一些数据往外面传了,结果发现这个家伙把我本地好多的命令全部都改了,气死我了,例如下面netstate命令把我的可执行权限给删了。
# 查看网络相关信息
netstat -aptn
sudo netstat -aptn

# 查看netstat命令在哪里
which netstat
whereis netstat

# 查看一下netstat程序的相关信息
ls -l /bin/netstat

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 如上图所示,netstat没有x权限(可执行权限),那就用chmod给它加下x权限,结果发现netstat不能赋值可执行权限,如下所示:
sudo chmod +x /bin/netstat
lsattr /bin/netstat

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 从上图的lsattr命令可以看到,/bin/netstat有一个i权限,表示这个文件不可以被修改,也就是说不能被赋予可执行权限。这里介绍2个命令:
    • lsattr:查看文件的相关属性。
    • chattr:与lsattr对应,用来设置文件相关属性。
  • 解决方法就是使用chattr命令来更改,把其i属性去除,结果如下所示,chattr命令不能执行,原因也是chattr没有可执行权限
# 将netstat命令的i属性去除
sudo chattr -i /bin/netstat
# 查看chattr
ls -l /usr/bin/chattr

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 接着就用chmod给chattr去赋值可执行权限,结果发现chattr也有i属性,不能被赋值权限,唉。
# 赋值可执行权限
sudo chmod +x /usr/bin/chattr
# 查看chattr属性
lsattr /usr/bin/chattr

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 哦吼,这下怎么办?chattr既不能赋值权限,也不能更改自己的属性。后来想到一种办法:
    • 我的另一台机器上有chattr命令,那就把另一台机器上的chattr命令拷贝到这台被攻击的机器上。
    • 因为另一台机器上的chattr命令是好的,所以拿过来可以直接使用。
  • 输入下面的命令,把另一台机器上的chattr命令拷贝到本地,保存名为~/chattr_tmp,然后用chattr_tmp去除有问题的chattr命令的i属性(可能有点绕),如下所示:
# 将0.0.0.0机器上的/usr/bin/chattr拷贝到本地,保存为~/chattr_tmp
sudo scp ubuntu:0.0.0.0:/usr/bin/chattr ~/chattr_tmp

# 查看一下,确认是可以执行的
ls -l ~/chattr_tmp

# 使用~/chattr_tmp去除/usr/bin/chattr的i属性
sudo /home/dongyusheng/chattr_tmp -i /usr/bin/chattr

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 上面执行完成之后就可以给chattr赋予可执行权限了,如下所示:
# 查看chattr的i属性被去除
lsattr /usr/bin/chattr
# 赋予可执行权限
sudo chmod +x /usr/bin/chattr
# 查看权限,已经可执行了
ls -l /usr/bin/chattr

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 下面使用chattr去除netstate的i属性,去除之后赋予其可执行权限,如下所示:
sudo chattr -i /bin/netstat
sudo chmod +x /bin/netstat
ls -l /bin/netstat

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 接着查看网络信息,可以看到,crypto正在往一个IP为172.104.165.191的机器上传输数据呢,IP一查是新加坡的机器。
sudo netstat -aptnl

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

四、删除恶意进程

  • 下面删除这些恶意进程,结果kill的时候发现kill命令也没有可执行权限,最后只好用跟上面一样的方法给kill命令赋予可执行权限

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

whereis kill
sudo ls -l /bin/kill
sudo chmod +x /bin/kill
lasttr /bin/kill
sudo chattr -i /bin/kill
lsattr /bin/kill
sudo chmod +x /bin/kill
sudo ls -l /bin/kill

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • kill命令可以使用之后,杀掉这2个进程
sudo kill -9 657 604

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

 

  • 杀掉之后查看再次查看进程,可以看到CPU恢复正常,程序没了
top

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

五、删除容器镜像

  • 接着检查本地的容器情况(容器已经被我停止运行了,这是后面截的图片),这家伙给我构建了一个容器,里面曾跑过脚本。
# 停止运行容器
sudo docker stop 5e3defeb058c

# 查看本地所有容器, 不论是否正在运行
sudo docker ps -a

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 再查看镜像,这家伙给我构建了一个镜像
# 查看本地所有镜像
sudo docker images

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 我就尝试着删除这个容器,结果失败了,因为有内容被链接挂载。
# 删除容器, 删除之前需要先停止运行该容器
sudo docker rm 5e3defeb058c

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 来到容器的目录下,找到这个容器相关的内容
cd /var/lib/docker/containers
sudo find . | grep 5e3defeb058c

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 找到之后全部删除,一点不留情。
sudo rm -rf 5e3defeb058cd75b39740cd1584945f9a822a022b2a7c3bf025ee027017edb0f
sudo rm -find . | grep 5e3defeb058c

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 然后再次删除容器还是不可以。

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 没办法,只能重启docker进程。下面重启docker进程,发现service程序没有可执行权限,果断给其赋值可执行权限,然后再重新启动,结果还是错误,显示systemctl程序不能执行。
sudo service docker restart
whereis service
sudo chattr -i /usr/sbin/service
sudo chmod +x /usr/sbin/service
sudosudo service docker restart

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 那就果断给systemctl程序再赋予可执行权限,指挥重启docker服务,成功。
whereis systemctl
ls -l /bin/systemctl
sudo chattr -i /bin/systemctl
sudo chmod +x /bin/systemctl
sudosudo service docker restart

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 再次查看容器,哈哈哈哈哈哈,容器没了。
# 查看所有容器
sudo docker ps -a

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 容器没了就可以删除镜像了,如下所示,镜像也删除成功。
# 查看镜像
sudo docker iamges
# 删除镜像
sudo docker rmi b4a24c6be971
# 确认是否删除成功
sudo docker iamges

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

六、结束语

  • 搞了我半天这个东西,在这里给大家总一下整个流程:
    • 第1步:云服务器告警,受到攻击。
    • 第2步:进入服务器排查,发现有恶意程序。
    • 第3步:删除恶意程序,虽然在删除的时候发现很多命令被篡改,不过在我的小聪明下解决了这些命令问题。
    • 第4步:查看容器也被攻击,删除容器和相关镜像。
  • 这里也给大家一些在使用云服务器时的相关建议:
    • 一些重要的端口不要随便开放。
    • 如果迫不得已端口需要开放,请配置好相关密码,密码尽量不要太简单,要不然容易被暴力破解。
    • 如果云服务器不使用了,也没有功能要用,尽量关机。
  • 这里我云服务器关闭了相关重要的端口,先暂时开发ssh:

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

  • 另外,Docker教学视频录制完成之后,我准备重启装一下云服务器,后面不随意开放端口了。
  • 最后给自己打个广告,视频讲的还不错的https://www.bilibili.com/video/BV1BK4y1A78M
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132528.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)

    Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)看论文时,经常看到矩阵,但在记忆里又看到数组。那么问题来了,矩阵和数组分别是什么?二者有什么区别?看论文时,经常看到矩阵,但在记忆里又看到数组。那么问题来了,矩阵和数组分别是什么?二者有什么区别?在数学上,定义m×n个数(i=1,2…,m;j=1,2,…n)排成的m行n列的数表示为m行n列的矩阵,并且用大写加粗黑色字母表示。…

  • python提取时间段日期_timestamp时间戳

    python提取时间段日期_timestamp时间戳在python开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。在python里,在网上介绍的很多方法,得到的时间戳是10位。而java里默认是13位(milliseconds,毫秒级的)。下面介绍python获得时间戳的方法:1、10时间戳获取方法:>>>importtime>>>t=time.tim…

  • 算法之记忆化搜索_艾宾浩斯记忆曲线的算法实现

    算法之记忆化搜索_艾宾浩斯记忆曲线的算法实现记忆化搜索其实就是暴力搜索的过程中保存一些已经计算过的状态(思想类似于动态规划,保存计算过的状态),在暴力搜索的过程中利用这些计算过的状态从而减少很大程度上的计算,从而达到时间复杂度上的优化。1【问题描述】 小明想知道,满足以下条件的正整数序列的数量: 1.第一项为n; 2.第二项不超过n; 3.从第三项开始,每一项小于前两项的差的绝对值。 请计算,对于给定的n,有多少种满足条件的序列。【输入格式】 输入一行包含一个整数n。【输出格式】 输出一个整数,表示答案。答案可能很大

  • 跟踪算法(一)光流法跟踪

    跟踪算法(一)光流法跟踪COPYFROM:http://blog.csdn.net/crzy_sparrow/article/details/7407604BTW:原文作者是我学习的榜样!本文目录:     一.基于特征点的目标跟踪的一般方法     二.光流法     三.opencv中的光流法函数    四.用类封装基于光流法的目标跟踪方法     

  • 什么是Lambda架构?

    什么是Lambda架构?写在前面本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和文献引用请见100个问题搞定大数据理论体系解答1.Lambda架构定义了一套面向大数据应用的模式和准则。更重要的是,它允许同时查询历史数据和实时新增的数据,并且获得期望的分析视图。2.处理历史数据(批处理)和实时数据。3.技术无关和通用性。Lambda架构是一种通用的模式,完全不依赖于任何技术,而且任何技术只要能满足需求,都可以在Lamb

  • 编写socket套接字的步骤_windows7任务栏组成部分

    编写socket套接字的步骤_windows7任务栏组成部分详细内容请见书Windows程序设计珍藏版1081页或请见文章:https://www.jianshu.com/p/066d99da7cbd

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号