案例描述

服务器遇到大流量攻击的处理过程。早上接到 IDC 的电话,说我们的一个网段 IP 不停的向外发包,应该是被攻击了,具体哪个 IP不知道,让我们检查一下。

按理分析及解决办法

首先我们要先确定是哪台机器的网卡在向外发包,还好我们这边有 zabbix 监控,我就一台一台的检查,发现有一台的流量跑满了,问题应该出现在这台机器上面。

我登录到机器里面,查看了一下网卡的流量,我的天啊,居然跑了这个多流量。

这台机器主要是运行了一个 tomcat WEB 服务和 oracle 数据库,问题不应该出现在 WEB 服务和数据库上面,我检查了一下 WEB 日志,没有发现什么异常,查看数据库也都正常,也没有什么错误日志,查看系统日志,也没有看到什么异常,但是系统的登录日志被清除了,

我赶紧查看了一下目前运行的进程情况,看看有没有什么异常的进程,一查看,果然发现几个异常进程,不仔细看还真看不出来,这些进程都是不正常的。

这是个什么进程呢,我每次 ps -ef 都不一样,一直在变动,进程号一一直在变动中,我想看看进程打开了什么文件都行,一时无从下手,想到这里,我突然意识到这应该都是一些子进程,由一个主进程进行管理,所以看这些子进程是没有用的,即便我杀掉他们还会有新的生成,擒贼先擒王,我们去找一下主进程,我用 top d1 实时查看进程使用资源的情况,看看是不是有异常的进程占用 cpu 内存等资源,发现了一个奇怪的进程,平时没有见过。这个应该是我们寻找的木马主进程。

我尝试杀掉这个进程, killall -9 ueksinzina ,可是杀掉之后 ps -ef 查看还是有那些子进程,难道没有杀掉?再次 top d1 查看,发现有出现了一个其他的主进程,看来杀是杀不掉的,要是那么容易杀掉就不是木马了。

我们看看他到底是什么, ”which obgqtvdunq” 发现这个命令在 /usr/bin 下面,多次杀死之后又重新在 /usr/bin 目录下面生成,想到应该有什么程序在监听这个进程的状态也可能有什么定时任务,发现进程死掉在重新执行,我就按照目前的思路查看了一下 /etc/crontab 定时任务以及 /etc/init.d启动脚本,均发现有问题。

可以看到里面有个定时任务 gcc4.sh ,这个不是我们设定的,查看一下内容更加奇怪了,这个应该是监听程序死掉后来启动的,我们这边把有关的配置全部删掉,并且删掉 /lib/libudev4.so 。

在 /etc/init.d/ 目录下面也发现了这个文件。

里面的内容是开机启动的信息,这个我们也给删掉。

以上两个是一个在开机启动的时候启动木马,一个是木马程序死掉之后启动木马,但是目前我们杀掉木马的时候木马并没有死掉,而是立刻更换名字切换成另一个程序文件运行,所以我们直接杀死是没有任何用处的,我们目的就是要阻止新的程序文件生成,首先我们取消程序的执行权限并把程序文件成成的目录 /usr/bin 目录锁定。

chmod 000 /usr/bin/obgqtvdunq

chattr +i /usr/bin

然后我们杀掉进程 ”killall -9 obgqtvdunq” ,然后我们在查看 /etc/init.d/ 目录,看到他又生成了新的进程,并且目录变化到了 /bin 目录下面,和上面一样,取消执行权限并把 /bin 目录锁定,不让他在这里生成,杀掉然后查看他又生成了新的文件,这次他没有在环境变量目录里面,在 /tmp 里面,我们把 /tmp 目录也锁定,然后结束掉进程。

到此为止,没有新的木马进程生成,原理上说是结束掉了木马程序,后面的工作就是要清楚这些目录产生的文件,经过我寻找,首先清除 /etc/init.d 目录下面产生的木马启动脚本,然后清楚 /etc/rc#.d/ 目录下面的连接文件。

后来我查看 /etc 目录下面文件的修改时间,发现 ssh 目录下面也有一个新生成的文件,不知道是不是有问题的。

清理差不多之后我们就要清理刚才生成的几个文件了,一个一个目录清楚,比如 ”chattr -i /tmp”,然后删除木马文件,以此类推删除 /bin 、 /usr/bin 目录下面的木马,到此木马清理完毕。

快速清理木马流程

假设木马的名字是 nshbsjdy ,如果 top 看不到,可以在 /etc/init.d 目录下面查看

1 、首先锁定三个目录,不能让新木马文件产生

chmod 000 /usr/bin/nshbsjdy

chattr +i /usr/bin

chattr +i /bin

chattr +i /tmp

2 、 删除定时任务及文件以及开机启动文件

删除定时任务及文件

rm -f /etc/init.d/nshbsjdy

rm -f /etc/rc#.d/ 木马连接文件

3 、杀掉木马进程

killall -9 nshbsjdy

4 、 清理木马进程

chattr -i /usr/bin

rm -f /usr/bin/nshbsjdy

处理完成之后再一次检查一下以上各目录,尤其是 /etc 目录下面最新修改的文件。

5 、如果是 rootkit 木马,可以用下面的软件进行检查

软件 chkrootkit :

软件 RKHunter :

安装都非常简单,我使用 RKHunter 简单检查了一下,没有发现什么重大问题,但是这也并不表示没有什么问题,因为我们的检测命令也是依赖一些系统的命令,如果系统的命令被感染那是检测不出来的,最好是系统的命令备份一份检查,再不行就备份数据重装喽。

作者:飓风网络安全

linux服务器对外打包处理的更多相关文章

  1. 使用Maven打包项目并上传到Linux服务器

    Maven打包: 项目右键Run as-->Maven build...-->  出来下面的界面,注意红色部分的填写,Goals填写package表示打包,下面的Skip Tests表示打 ...

  2. jenkins+svn完整打包并上传到linux服务器上

    因为公司用的是svn版本管理工具并且部署在了windows服务器上,所以测试环使用jenkins需要部署两套环境, 一套是在本地windows服务器,jenkins从svn下载代码完成打包并上传到li ...

  3. Jenkins 部署打包文件 并通过SSH上传到 linux服务器

    编译 发布 打包成zip文件 dotnet clean : dotnet的命令清除解决方案 dotnet build : dotnet的命令重新生成 dotnet publish .\Hy.MyDem ...

  4. springboot项目打包成jar包在Linux服务器默认80端口运行

    springboot项目端口设置 在application.properties文件 server.port=80 在application.yml文件 server: port: 80 然后在ide ...

  5. 在linux服务器下日志提取的python脚本(实现输入开始时间和结束时间打包该时间段内的文件)

    1.需求:近期在提取linux服务器下的日志文件时总是需要人工去找某个时间段内的日志文件,很是枯燥乏味,于是乎,我就想着用python结合linux指令来写一个日志提取的脚本,于是就有了以下脚本文件: ...

  6. netcore一键部署到linux服务器以服务方式后台运行

    @font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...

  7. 如何临时发布部署Cocos小游戏到Linux服务器,让别人能在微信打开

    两个星期前,我们发布了第一个小游戏教程: 教程:制作一个小游戏送给喜欢的TA(不会编程也能学会哦) 上周有好几位小伙伴在b站催更,呃,作为小透明,收到催更信息后还是很激动的!竟然有同学在看我们的小教程 ...

  8. linux 中文件权限和磁盘管理、linux服务器项目如何部署

    chmod chmod 421 xx.txt //4=r,2=w,1=x df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k ...

  9. jprofiler_监控远程linux服务器的JVM进程(实践)

    几天前写了一篇文章,jprofiler_监控远程linux服务器的tomcat进程(实践),介绍了使用jprofiler怎样监控远程linux的tomcat进程,这两天想了想,除了可以监控tomcat ...

随机推荐

  1. 自己开发图表插件,脱离echart

    前言 由于公司业务需要做一些图标来展示一些数据,之前都是用百度的echart.js.这次放弃使用它转而自己开发是有几个原因1.echart文件太大,有些功能用不到2.echart样式不易扩展3.需求简 ...

  2. Dashboard登录成功后 RuntimeError: Unable to create a new session key.

    openstack按照官网docs部署horizon后,使用admin账号密码登录,但网页提示未知错误. 查看/var/log/httpd/error_log 提示这个:RuntimeError: U ...

  3. javaWEB与Session

    HttpSession(*****)1. HttpSession概述  * HttpSession是由JavaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端!!!  * ...

  4. java学习常遇问题及解决方案

    eclipse中的项目运行时不出现run as→java application选项? 解决方案☞必须有正确的主方法,即public static void main(String[]args){}

  5. 自适应滤波:最小均方误差滤波器(LMS、NLMS)

    作者:桂. 时间:2017-04-02  08:08:31 链接:http://www.cnblogs.com/xingshansi/p/6658203.html 声明:欢迎被转载,不过记得注明出处哦 ...

  6. JAVA加密算法系列-BASE64

    package ***; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encode ...

  7. Java ---自定义标签(二)

    上篇文章的最后,我们自定义了一个带属性的标签,并使用它完成了一个简单的案例.其实到这我们已经可以看出来,前端jsp页面只需要写一个类似html语法的标签,就可以完成将集合中的数据取出来并展示这么相对复 ...

  8. oralce set

    1         SET TIMING ON 说明:显示SQL语句的运行时间.默认值为OFF. 在SQLPLUS中使用,时间精确到0.01秒.也就是10毫秒. 在PL/SQL DEVELOPER 中 ...

  9. Linux SvN操作

    Linux svn管理工具的12个命令实践 2010-08-25 10:50 佚名 icycling.cublog.cn 字号:T | T 目前,绝大多数开源软件都使用svn作为代码版本管理软件.本文 ...

  10. JS&Jquery中的遍历

    JavaScript中的遍历: 1.for 遍历 var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++) {   ...