突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况。

可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 SSH 登陆系统,不幸的事,由于网络堵塞,登录不上或者卡死。

1、排查问题

第一反应是想马上通知机房运维人员切断该服务器外部网络,通过内网连接查看。可是这样一来流量就会消失,就很难查找攻击源了。

于是联系机房协助解决,授权机房技术登录到系统,先通过 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 变了,这可咋搞,不可能一个个封吧!静下心来,仔细想了下,本地向外发包,那本地肯定会有程序来发!

2、查找攻击源

先通过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 等工具二进制文件上传到被黑的系统里,替换掉原有的,果然,奇迹出现了~

3、清理木马程序

执行 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文件,文件不再生成,进程也不再运行了!

好了,可以开启外网了,观察了一会网络流量不再飙升了。

4、总结

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 程序进程安全漏洞扫描。

附:安全运维经验

Linux服务器被入侵后的处理过程的更多相关文章

  1. Linux服务器被入侵后的处理过程(转发阿良)

    Linux服务器被入侵后的处理过程   突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况. 可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 ...

  2. linux 服务器更主板后无法识别网卡处理过程

    linux 服务器更主板后无法识别网卡处理过程   服务器故障报修,主板坏,更换主板后无法识别网卡,ifconfig 查看只显示:lo loopback 127.0.0.1. 系统加载网卡驱动后会去读 ...

  3. Linux 主机被入侵后的处理案例

    Linux主机被入侵后的处理案例 提交 我的留言 加载中 已留言 一次Linux被入侵后的分析 下面通过一个案例介绍下当一个服务器被rootkit入侵后的处理思路和处理过程,rootkit攻击是Lin ...

  4. 一次Linux服务器被入侵和删除木马程序的经历

    转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wzlinux.blog.51cto.com/8021085/1740113 一.背景 晚上看到有台服 ...

  5. linux服务器出现严重故障后的原因以及解决方法

    1.把系统安装光盘插入,重启机器,启动时迅速按下Del键,进入CMOS,把启动顺序改为光盘先启动,这样就启动了Linux安装程序,按F5,按提示打入Linux rescue回车,进入救援模式,接下来是 ...

  6. 一次linux服务器黑客入侵后处理

     场景: 周一上班centos服务器ssh不可用,web和数据库等应用不响应.好在vnc可以登录 使用last命令查询,2号之前的登录信息已被清空,并且sshd文件在周六晚上被修改,周日晚上2点服务器 ...

  7. Linux服务器更换主板后,网卡识别失败的处理方法

    1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...

  8. linux 服务器下入侵之后的日志清理

    1.web日志的清理:access.log 和auth.log 位置在/var/log/下面. 2.系统日志存放在:/root/.bash_history

  9. 线上Linux服务器运维安全策略经验分享

    线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...

随机推荐

  1. android基本操作

    1.页面跳转 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androi ...

  2. 15、Facade 外观模式

    什么是Facade模式 随着系统越来越复杂,我们需要把细节隐藏起来,给客户端提供一个统一的接口.在这种需求下facade模式诞生了.该模式比较简单,我们只需要在系统变得复杂把它运用上来,这样底层跟客户 ...

  3. ROS 八叉树地图构建 - 使用 octomap_server 建图过程总结!

    构建语义地图时,最开始用的是 octomap_server,后面换成了 semantic_slam: octomap_generator,不过还是整理下之前的学习笔记. 一.增量构建八叉树地图步骤 为 ...

  4. C#LeetCode刷题之#55-跳跃游戏(Jump Game)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3674 访问. 给定一个非负整数数组,你最初位于数组的第一个位置. ...

  5. SpringBoot实现本地存储文件上传及提供HTTP访问服务

    笔者计划为大家介绍分布式文件系统,用于存储应用的图片.word.excel.pdf等文件.在开始介绍分布式文件系统之前,为大家介绍一下使用本机存储来存放文件资源. 二者的核心实现过程是一样的: 上传文 ...

  6. golang 总结库

    前言 这个是用来进行总结学习的,相当于自学笔记 记录的东西,是随时更新的, 有些东西,可能就是记录下,并不一定代表他一定能解决问题 不要做纯粹的文字的搬运工,要多做灵感整理 我看文章会看好多,所以常常 ...

  7. 怎么写简历,简历才不会被丢到非洲&#127757;

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 最近的三歪朋友圈可以看到很多的字节.腾讯的同学都 ...

  8. AS报错:gradle project sync failed

    情形一: Android studio下突然报错: gradle project sync failed.Basic functionality(e.g.editing,debugging) will ...

  9. Linux C++实现一服务器与多客户端之间的通信

    通过网络查找资料得到的都是一些零碎不成体系的知识点,无法融会贯通.而且需要筛选有用的信息,这需要花费大量的时间.所以把写代码过程中用到的相关知识的博客链接附在用到的位置,方便回顾. 1.程序流程 服务 ...

  10. 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解

    本文是精讲响应式WebClient第2篇,前篇的blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 在上一篇文章为大家介绍了响应式IO模型和WebClient的基本 ...