突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况。
可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 SSH 登陆系统,不幸的事,由于网络堵塞,登录不上或者卡死。
一、排查问题
反应是想马上通知机房运维人员切断该服务器外部网络,通过内网连接查看。可是这样一来流量就会消失,就很难查找攻击源了。
于是联系机房协助解决,授权机房技术登录到系统,先通过 w 命令查看是否有异常用户在登录,再看看登录日志 /var/log/auth.log,预料之中,日志已经清空;后使用工具找出那个连接占用流量大,我使用了 iftop 工具。
机房技术发来拍照,看到本地一直通过 http 方式向 104.31.225.6 这个 ip 发送数据包,而且持续不断。
那好,先把这个 ip 给屏蔽了试试:
iptables –A OUTPUT –d 104.31.225.6 –j DROP
奇迹出现,瞬间流量下去,现在也可以正常登录系统。
过一会儿~ 不幸的事情发生了,流量又上来了,擦!什么情况!心情顿时紧张起来。
又赶紧联系机房技术,告知他执行上次屏蔽 ip 操作。
机房技术发来拍照,这次傻眼了,目的 ip 变了,这可咋搞,不可能一个个封吧!
静下心来,仔细想了下,本地向外发包,那本地肯定会有程序来发!
二、查找攻击源
先通过netstat工具过滤端口,查看运行的进程ID:
netstat –atup |grep 15773
结果什么都没有,再换个端口试试,同样的效果!
让机房技术观察了下连接状态,原来是短连接,端口很快会释放,所以才看不到端口的连接状态。
正常长连接来说,可以使用 lsof –i :15773 这样方式找到 PID,再 lsof –p PID 找到打开的相关文件。
好吧!决定先切断外部网络,内网 SSH 进入系统,先找到这个发包的程序!
先通过 netstat –antup 查看有无开放可疑的端口或者连接。
再通过 ps –ef 查看有无可疑的进程。
仔细盘查,无可疑情况。
难道是植入了 rootkit 木马程序?说不好,试试看吧!
想要判断系统有没有植入了 rootkit 可以使用 md5sum 校验执行文件判断,先找个同版本操作系统,获取到这个工具执行文件的 md5 值,再获取可疑的工具执行文件 md5 值,比较两个值是否相同,如果相同说明这个工具是可信任的,如果不相同很有可能是被替换的。
另外,一般工具可执行文件大小都在几十K到几百K。
其实我没有用md5方式来判断工具是否可信任,因为这台操作系统比较老,完全相同版本操作系统不好找,稍微有点差别,工具就有可能已被更新,md5 值不同。
先执行了 du –sh /bin/lsof 查看,发现大小 1.2M,明显有问题。
所以尝试把正常系统里的 netstat、ps 等工具二进制文件上传到被黑的系统里,替换掉原有的,果然,奇迹出现了~
三、清理木马程序
执行 ps –ef 后,发下下面有几行可疑程序。在这里,本想截图的,可惜 SSH 客户端给关了,没留下截图。
记忆中,大概是这样的:
pid /sbin/java.log
pid /usr/bin/dpkgd/ps –ef
pid /usr/bin/bsd-port/getty
pid /usr/bin/.sshd
接下来,逐步看看这些进程。
怎么会有个 java.log 的执行文件在运行呢?找同事是不是他们跑的,说是没有。那好,先杀掉进程并把文件移动到别的目录再看看。
/usr/bin/dpkgd/ps –ef 这个进程怎么像是我执行的命令呢?仔细一看,命令的路径有问题,不是 /bin/ps,进入此目录下查看。
擦,还有几个,基本可以确定这些工具是被替换了。。。
还有一个 getty 执行文件,正常系统下没有运行这个,估计又是黑客留下的,杀掉进程,删除目录。宁可错杀一百,也不放过一个!
.sshd 进程?明显很可疑,难道是 ssh 后门,杀掉!
目前这些异常进程都已经被处理掉。
再执行 ps –ef 命令看下,奇怪,java.log 进程又起来了,难道有自启动设置?于是到了 /etc/init.d 下查看,有个异常可执行文件,正常系统里没有,打开看了下,果然是自动启动木马程序的脚本。
把这两个脚本删除,再删除java.log文件,文件不再生成,进程也不再运行了!
好了,可以开启外网了,观察了一会网络流量不再飙升了。
四、总结
ls /usr/bin/dpkgd/ #黑客替换的工具(netstat lsof ps ss),系统自带的工具正常不会在这个目录下,并且也不可用。
/sbin/java.log #判断是发包程序,删除后会自动生成。
/usr/bin/bsd-port #判断是自动生成 java.log 或着后门程序。
/usr/sbin/.sshd #判断是后门程序。
如果还有其他木马程序怎么办?
如果是 XSS 攻击,应用层漏洞入侵怎么办?
针对这些问题,好方式就是备份数据,重装系统,干净利落。
但从我们公司角度来说,暂时不能重装系统,业务比较复杂,跑的业务比较多,还没摸清楚,准备慢慢迁移数据,再观察下吧!
黑客趁机入侵的原因:
运维人员网络安全意识低,安全策略落实少;
上线前没有对暴露外部的应用进行安全扫描;
没有安全测试人员,没有关注漏洞新动态,不能及时发现漏洞;
等…。
针对这次攻击,总结下防护思路:
Linux 系统安装后,启用防火墙,只允许信任源访问指定服务,删除不必要的用户,关闭不必要的服务等;
收集日志,包括系统日志,登录日志,程序日志等,对异常关键字告警,及时发现潜在风险;
针对用户登录信息实时收集,包括登录时间,密码重试次数以及用户执行命令记录等;
对敏感文件或目录变化进行事件监控,如 /etc/passwd、/etc/shadow、/web、/tmp (一般上传文件提权用)等;
进程状态监控,对新增的进程(非业务和系统进程)监控并通知;
对上线的服务器系统、Web 程序进程安全漏洞扫描。