强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
继上次Redis服务器被劫持风暴(高校云平台(十三):Redis服务器被劫持风波)过后十多天后,病毒对我们总是恋恋不舍,又一次的来到我们身边;有了上次的经验后,这次处理起来虽然也有些波折,但是相对来说迅速很多;下面是这次解决的整体流程,希望会对读者有所启发。
一、发现病毒: 1、被通知: 2017年3月07日18点左右,第三方托管服务商通知我们我们有一台机器(为了方便表示以YYY代替),这台服务器中病毒,大量发包。 2、在服务器上查看现象: (1)利用命令ifconfig,查看网络收发包情况: 其中ipconfig查询统计的收发包是从这次开机起统计,利用man ipconfig 看说明:
(2)利用命令:uptime -s 查询246开机的时间,发现10个小时左右发送241G这么多,同时利用ifconfig命令看局域网其他服务器发现开机比246早的发包也很少基本上没上G级的 (3)不断利用ifconfig查看收发包情况,发现246大概以1s 0.1G左右速度在发送包 (4)另外通过Zabbix监控246的数据(部分)
二、寻找病毒根源: 1、并非病毒猜想: (1)依据: 由于Maven的私服在该机器上,猜测是Jenkins部署的影响,测试把YYY服务器断网(YYY机器是托管在上的一台虚拟机)在物理机上将其断网,发现Jenkins发布项目一直不成功,确定Jenkins构建需要从YYY私服上下载相应包; (2)验证: 向拖管商确认是大量向外网发包而不是局域网,另外私服上的包总共没有这么大的量级,这样排除了Jenkins发布影响; 2、病毒导致: (1)依据:发包如此频繁,中病毒的迹象; (2)验证: A.利用命令:netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 查看和YYY建立连接的情况: B.通过上图发现除了局域网中机器外还有两个可疑外网机器(137.59.18.147 和172.247.116.109)和其进行连接 C利用命令:netstat -ntlp 查看相应的进程,发现可疑进程MXQJVVDNF D.利用命令:ll /proc/43993 查看相应的文件,发现可疑文件dataa E.利用命令:ls /tmp/查询可疑目录下的文件,发现可疑文件 F.根据gates.lod在网上搜索到关于病毒文章--一次Linux服务器被入侵和删除木马程序的经历 G.至此验证是中病毒 (3)追踪: A.核查服务器发现果然大部分博客中描述的病毒文件在YYY上都能找到 B.检查病毒的行踪,利用命令:ps -ef 发现病毒一些行踪 三、采取的解决方案: 1、将两个可疑IP(137.59.18.147和172.247.116.109)拉入黑名单 (1)拉入黑名单命令: iptables -I INPUT -s 137.59.18.147 -j DROP iptables -I INPUT -s 172.247.116.109 -j DROP
(2)扩展命令: A.查看黑名单中都有谁命令: iptables –L B.将某个IP从黑名单(在此以137.59.18.147为例)中去除命令: iptables -D INPUT -s 137.59.18.147 -j DROP 2、按照博客内容进行清理病毒文件 (1)所删除病毒文件 /usr/bin/bsd-port/ getty (bsd-port目录也清除) /etc/rc.d/init.d/DbSecuritySpt /etc/rc.d/rc1.d/S97DbSecuritySpt /etc/rc.d/rc2.d/S97DbSecuritySpt /etc/rc.d/rc3.d/S97DbSecuritySpt /etc/rc.d/rc4.d/S97DbSecuritySpt /etc/rc.d/rc5.d/S97DbSecuritySpt /etc/rc.d/rc6.d/S97DbSecuritySpt /root/pyth /tmp (dataa gates.lod moni.lod) (2)用ps -ef 查询所有进程,并用kill -9 PID将异常进程杀死 四、总结: 1、对命令的再理解:netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n (1)检查是否被攻击时用该命令查询会有两种情况 A.连接数特别多,如下图中的第1列的数字代表连接数,一般二三十以内为正常,成千上万为异常;
B.可以发现可疑IP,虽然连接数少但是可能是发送大量数据,本次遇到就是这种情况 C.遇到上述情况用命令(在此以IP为137.59.18.147为例,将其拉入进黑名单)iptables -I INPUT -s 137.59.18.147 -j DROP (2)对该命令所查出的连接数的研究 A.出现情况:用命令将两个可疑IP拉入黑名单,用该命令查发现连接数仍然是1 B.做相关实验:用一个IP(在此用XXX来表示)远程上YYY用该命令查询发现和XXX连接数为1,用XXX机器再ping YYY再用命令查发现有2个连接数,这时停止ping后发现连接数变为1,再在YYY上用命令iptables -I INPUT -s XXX -j DROP将XXX拉入黑名单,此时XXX机器立马不能对YYY进行操作,再在YYY上用命令查发现还是1个连接数 C.说明该命令查询的是在拉入黑名单之前的连接数 2、服务器安全一些建议: (1)服务器打开防火墙,如果有应用需要外部访问,采用开端口形式 (2)关闭服务器不必要外网映射,另外即使非得映射也不要用使用服务的默认端口 (3)服务器密码要设置复杂些,另外需要隔一段时间进行变化 (4)Linux系统上装一些杀毒软件
1、时常保持一颗好奇心;
2、多思考多总结,每经历一次在安全意识上提升一点;
3、感谢陈总,娜姐,和浩哥一起来搞。
当年的春天 认证博客专家 分布式 Spring Redis 6年Java互联网研发经验,坐标北京;擅长微服务和中间件。