生产环境-linux-网站被挂木马攻防经历

安全与方便始终是对立的,然而运维人员忽视系统安全方面的建设,带来的后果将是非常严重的,以下是一台未上线服务器入侵后的攻防经历。

一、出现异常,排查原因

发现异常是通过远端监控脚本发现访问网站时断时续,使用ssh工具连接会经常断掉连接,无法开展工作。

使用其他服务器对另一个网卡ip进行ssh连接,可以登录服务器,初步怀疑网卡异常或者流量异常。

分别使用ifstat、iftop、nethogs查看连接异常网卡流量信息(对几个流量分析工具进行对比,各有千秋):

1使用ifstat

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

cd ifstat-1.1 ./configuremake make install  都是老套路

ifstat -a 加入监控lo

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

p  可以显示连接端口

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

yum换rpel源

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

yum install nethogs

nethogs  eth0

效果展示ifstat:

可以看到服务器流量异常时,流量的变化情况。

效果展示iftop:

 

可以看到哪个PID进程导致流量过高

效果展示nethogs:

二、查找真凶

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

在使用netstat、ss通过端口获取木马进程失败后(后面才知道netstat、ps等命令已经被木马感染)

可以使用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-insserv、GuiBger两个进程后,网络流量立即正常。而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
取消影藏权限,然后再删除,完成。

通过查看数据的表结构,发现木马是从数据库渗透进服务器的,因为没有上线,方便开发测试在密码强度上使用了弱密码,所以被黑客破解了mysql的root账户密码,在mysql注入了木马,一步一步渗透到服务器。数据库方面处理就不详细介绍了:

  1. 检查生产库的表结构,删除多余表。
  2. 然后备份所有生产库。
  3. 停止mysql
  4. 删除datadir目录所有文件
  5. 重启mysql
  6. 导入此前备份数据库

四、彻底扫除尾巴与隐患

通过上面的步骤已经能解决服务器被黑客作为攻击工具的问题了,但是系统是否还有木马隐藏,是否安全还需要加个问号。

作者要介绍的方法是,使用linux系统的杀毒软件,作者使用的是avg,还是蛮好用的,被木马感染的netstat、ps等命令和影藏文件就是通过avg扫描出来的。

简单介绍下avg的安装和使用

avg杀毒软件{

下载地址:http://free.avg.com/us-en/download-free-all-product

启动 service avgd start

更新:avgupdate

扫描:avgscan 加“要扫描的目录地址” 比如说sudo avgscan /etc

复制代码

-a 扫描内部档案

-l 自动愈合受感染的对象

-t 自动删除受感染的对象

-u 自动移动感染对象到隔离

作者扫描时:avgscan /

avg会列出可以文件:找出删除即可,如果无法删除,上文有提过,先查看隐藏权限

五、总结

最后总结下,之所以被黑客在linux服务器上挂马,是因为方便开发上线产品,关闭了iptables,数据库使用了弱密码,这个教训很深刻,所以使用iptables限制服务器的端口非常有必要,如果可能最好selinux开启。当然定时更换各账户密码也很重要!同时加强linux安全防护一定做到事前,在被黑客入侵后处理会更麻烦,知道系统安全加强到一定程度,黑客很难入侵系统。

因本人对安全方面涉及不深,此篇文章只是记实阐述我的处理经过,很多地方经验欠缺,如有大神,不吝赐教

虚心学习才能进步,知识共享共同进步

时间: 2024-11-13 08:17:58

生产环境-linux-网站被挂木马攻防经历的相关文章

一般生产环境LINUX服务器配置

1.生产环境LINUX服务器系统版本的选择 选择CentOS6.5版本64位的LINUX操作系统 CentOS (Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于红帽的Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成.由于出自同样的源代码,因此和红帽商业版的RHEL系统用着同样的高度稳定性.两者的不同,在于CentOS并不包含红帽的商业支持和一些RHEL商业版隐藏的

生产环境Linux二进制安装配置MySQL

生产环境Linux二进制安装配置MySQL 一.环境检查rpm -qa |grep libaio #如果没有安装libaio则需要安装.df -hmount /dev/sr0 /mnt二.安装过程1)上传安装程序通过FTP/SFTP上传安装包2)创建创用户,组,创建目录groupadd mysqluseradd -r -g mysql -s /bin/false mysqlmkdir -p /mysql/data/3306/data这里的3306是MySQL默认端口号,/mysql/data目录

生产环境Linux安装

大多公司在部署服务时,因为Windows上服务过多,内存,CPU占用过高时,服务会出现假死,或者挂掉等情况,因此,没有特殊情况,首选都是在Linux上部署服务,下面将以VM演示生产环境Linux的安装. 首先,通过VMware创建虚拟机,若是第一次或者新手刚玩VM虚拟机,可以找找别的教程学学怎么创建虚拟机,这里直接演示Linux安装. 开启虚拟机后,进入安装界面,此时如图有两个选择: 第一个选项是直接安装,第二个是检查验证Linux完整性再进行安装,耗时会很久,所以通常选择第一个选项进行安装,接

生产环境linux服务器系统安全配置

第一章  账户安全及权限 一.  禁用root以外的超级用户 1.  检测方法: cat /etc/passwd   查看口令文件,文件格式如下 login_name:password:user_ID:group_ID:comment:home_dir:command 若user_ID=0,则该用户拥有超级用户的权限.查看此处是否有多个ID=0 2.  检测命令: cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$' 3.  备份方法:

【生产环境部署】部署项目到生产环境Linux下

以前自己写过一个开源的项目,没部署到线上环境,借此机会熟悉下线上部署的流程 1.Linux上安装数据库MySQL,创建一个数据库database 名 Mxonline 2.使用远程工具 Navicat Premium 登录Linux数据库上,并把本地已经跑好的数据库表同步传输到 Mxonline上 3.数据库传输好后,在Linux上搭建Python的虚拟环境 在Linux系统的opt目录创建Python虚拟环境,一般虚拟环境创建在opt目录不然会有权限问题 再将 本地开发的项目project 文

为laravel5.1生产环境linux从源代码安装PHP

laravel5.1正式发布,该版本号称是第一个LTS的版本,它对环境的要求也比较高,至少要PHP5.59以上. 现在网上找了很久,只能自己从头安装新版本的PHP yum install libmcrypt libmcrypt-devel   注意需要安装这些lib wget http://cn2.php.net/get/php-5.6.10.tar.bz2/from/this/mirror 获取PHP代码 tar xvfj PHP5.6.tar.bz2 cd ext/mcrypt 到mcryp

.Net Core Linux centos7行—发布程序到生产环境

实验demo现在需要发布到生产环境,发现在发布的时候要考虑到不一致的几个地方. 1.各类配置文件线下,线上不一致. 2.绑定的url不一致,可能是域名不一致,也可能是schema不一致(http,https) ? ? 配置文件的不一致问题,可以使用环境配置来解决.系统默认定义了3个:Development, Staging, Production appsettings.json 开发:appsettings.Development.json 线上:appsettings.Production.

ASP网站挂木马怎么办?

运行环境如下: 服务器操作系统:Win2003/2008 Web应用软件:IIS 6.0/7.0 运行问题:学院有几个Asp网站在访问的时候显示:An error occurred on the server when processing the URL. Please contact the system administrator.或者报其他的错识,或者是运行非常缓慢,并且会在网站的根目录下或是文件夹下多出一个名为"global.asa"文件,一般还是隐藏文件属性,要通过显示隐藏

企业生产环境不同业务的Linux分区方案

企业生产环境不同业务的Linux分区方案 1.常规分区 /boot   100M swap    内存的1.5倍(若内存大于16G,swap分配8-16G即可) /           剩余所有硬盘空间 2.DB及存储(有大量的重要数据) /boot   100M swap    内存的1.5倍(若内存大于16G,swap分配8-16G即可) /           50-200G /data    剩余所有硬盘空间 注:一般有重要数据的业务,要尽可能的把数据所在的分区单独分出来. 3.门户网站