首页 > 代码库 > linux服务器被挂马的解决办法(一)

linux服务器被挂马的解决办法(一)

linux服务器被挂马的解决办法()

 

现象:服务器网站出现偶尔打不开,并不频繁。在查找原因是使用ssh工具连接会经常断掉,无法开展工作。

解决过程:

还好使用其他服务器对另一个内网ip进行ssh连接,可以。首先怀疑外网ip所在的网卡问题。

如何查看流量过高:

1使用ifstat

wget http://distfiles.macports.org/ifstat/ifstat-1.1.tar.gz

ifstat -a 加入监控lo

2使用iftop监控那个端口流量

 p  可以显示连接端口

3使用nethogs监控每个进程流量

yumrpel

wgethttp://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum install nethogs

nethogs  eth0

 

3个工具使用效果对比:

1. ifstat

技术分享

技术分享

2.iftop

技术分享

3 nethogs

D USER    PROGRAM                                                                                                                                                                                 DEV        SENT      RECEIVED      

?    root     124.172.118.226:6750-14.18.143.59:80                                                                                                                                                               0.000       0.200 KB/sec

?    root    124.172.118.226:2508-14.18.143.59:80                                                                                                                                                               0.000       0.200 KB/sec

?    root    124.172.118.226:15291-14.18.143.59:80                                                                                                                                                               0.000       0.200 KB/sec

?    root    124.172.118.226:52445-14.18.143.59:80                                                                                                                                                               0.000       0.200 KB/sec

?    root    124.172.118.226:62124-14.18.143.59:80                                                                                                                                                              0.000       0.200 KB/sec

?    root    124.172.118.226:22214-14.18.143.59:80                                                                                                                                                              0.000       0.200 KB/sec

?    root    124.172.118.226:7915-14.18.143.59:80                                                                                                                                                               0.000       0.200 KB/sec

?    root    124.172.118.226:51793-14.18.143.59:80                                                                                                                                                              0.000       0.200 KB/sec

?    root    124.172.118.226:18692-14.18.143.59:80                                                                                                                                                              0.000       0.200 KB/sec

 

通过上面分析,造成网站打不开的原因就是有进程大量发送数据包到某个ip80端口,导致服务器网络阻塞,但是通过以上的工具,发现此木马相当的狡猾,无法发使用的那个进程。

 

在使用netstatss通过端口获取木马进程失败后

 

可以使用top工具,此木马在大量发包时肯定会造成资源的消耗

通过锁定发现了两个进程有大量的嫌疑:

技术分享

通过ps命令找到进程执行的目录:

/usr/bin/sshupdate-bootsystem-insserv

/tmp/GuiBger

通过持续观察发现时有agent进程一闪而逝,在使用find / -name agent

# ll /usr/bin/bsd-port/

总用量 1120

-rwxr-xr-x. 1 root root 1135000 12 25 11:20agent

-rwxr-xr-x. 1 root root       4 12 25 11:20 agent.conf

-rw-r--r--. 1 root root      69 12 25 11:50 conf.n

-rw-r--r--. 1 root root       0 10  9 19:36 getty

 

此时,相关的可以进程都找到了,通过测试,在网络阻塞是删除sshupdate-bootsystem-insservGuiBger两个进程后,网络流量立即正常。而agent则怀疑是与黑客的通信进程,用于接收命令(瞎猜的)或者监控上面连个进程。

 

找到这3个进程并不意味结束,因为他们很可以是开机自启动程序,所以要在找到他们的开机自起的配置文件,我通过一个脚本实现这个功能:

#!/bin/sh

echo > /tmp/find_init.log

function ergodic(){

         forfile in `ls $1`

         do

                   if[ -d $1"/"$file ] #如果 file存在且是一个目录则为真

                            then

                            ergodic$1"/"$file

                   else

                            localpath=$1"/"$file #得到文件的完整的目录

                            localname=$file       #得到文件的名字

                            #做自己的工作.

                            echo  $path 

                            rootkit_init=`cat$path | grep sshupdate | head -n 1`

                            if[ -z $rootkit_init ];then

                            echo  "sed -i ‘s#$rootkit_init##g‘ $path">>  /tmp/find_init.log

                            fi

                   fi

 

         done

}

INIT_PATH="/etc/init.d"

ergodic $INIT_PATH

cat /tmp/find_init.log

这个脚本功能很简单,通过遍历/etc/init.d目录所有文件,使用grep搜索进程名关键词,将含有这几个进程的文件找出来。

结果如下:

sed -i‘s#/usr/bin/sshupdate-bootsystem-insserv##g‘ /etc/init.d/DbSecurityMdt

sed -i‘s#/usr/bin/sshupdate-bootsystem-insserv##g‘ /etc/init.d/insserv

还真有自启动配置,迅速删除之

 

在删除这个木马命令时会遇到无法删除的问题,这个很简单:

lsattr /usr/bin/sshupdate-bootsystem-insserv

查看命令的影藏权限

-------i------e- sshupdate-bootsystem-insserv

发现被限制删除操作了

chattr -i  /usr/bin/sshupdate-bootsystem-insserv

取消影藏权限,然后再删除,完成。

 

最后总结,之所以被黑客在linux服务器上挂马,是因为方便开发上线产品,关闭了iptables,这个教训很深刻,所以使用iptables限制服务器的端口非常有必要,如果可能最好selinux开启。当然定时更换各账户密码也很重要!

 

 

 


本文出自 “顾少” 博客,请务必保留此出处http://2847513.blog.51cto.com/2837513/1599726

linux服务器被挂马的解决办法(一)