Linux服务器被入侵后的处理过程
突然,频繁收到一组服务器 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服务器被入侵后的处理过程的更多相关文章
- Linux服务器被入侵后的处理过程(转发阿良)
Linux服务器被入侵后的处理过程 突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况. 可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 ...
- linux 服务器更主板后无法识别网卡处理过程
linux 服务器更主板后无法识别网卡处理过程 服务器故障报修,主板坏,更换主板后无法识别网卡,ifconfig 查看只显示:lo loopback 127.0.0.1. 系统加载网卡驱动后会去读 ...
- Linux 主机被入侵后的处理案例
Linux主机被入侵后的处理案例 提交 我的留言 加载中 已留言 一次Linux被入侵后的分析 下面通过一个案例介绍下当一个服务器被rootkit入侵后的处理思路和处理过程,rootkit攻击是Lin ...
- 一次Linux服务器被入侵和删除木马程序的经历
转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wzlinux.blog.51cto.com/8021085/1740113 一.背景 晚上看到有台服 ...
- linux服务器出现严重故障后的原因以及解决方法
1.把系统安装光盘插入,重启机器,启动时迅速按下Del键,进入CMOS,把启动顺序改为光盘先启动,这样就启动了Linux安装程序,按F5,按提示打入Linux rescue回车,进入救援模式,接下来是 ...
- 一次linux服务器黑客入侵后处理
场景: 周一上班centos服务器ssh不可用,web和数据库等应用不响应.好在vnc可以登录 使用last命令查询,2号之前的登录信息已被清空,并且sshd文件在周六晚上被修改,周日晚上2点服务器 ...
- Linux服务器更换主板后,网卡识别失败的处理方法
1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...
- linux 服务器下入侵之后的日志清理
1.web日志的清理:access.log 和auth.log 位置在/var/log/下面. 2.系统日志存放在:/root/.bash_history
- 线上Linux服务器运维安全策略经验分享
线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...
随机推荐
- String 的两种实例化方式
String 的两种实例化方式 隐式实例化:直接赋值 public class Demo { public static void main(String[] args) { String s = & ...
- one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [3, 1280, 28, 28]], which is output 0 of LeakyReluBackward1, is at version 2;
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace o ...
- C#LeetCode刷题之#598-范围求和 II(Range Addition II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...
- C#LeetCode刷题之#645-错误的集合(Set Mismatch)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3887 访问. 集合 S 包含从1到 n 的整数.不幸的是,因为数 ...
- Vue element-ui el-table阻止行选事件
我们经常会在某个table末尾加上操作列来放置button来处理跳转和其他的逻辑 那么当点击button的时候同样也会执行在el-table 设置的 @row-click="handleRo ...
- 基于小程序云Serverless开发微信小程序
本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...
- python的一些使用体会
python刚开始接触,因为刚好有点需求,所以写了点小程序,一点点体会. 优点: 1. os.rename()方法不错,c#就没有这个方法 2.字符串的slice操作不错,取substring有时比较 ...
- Python 用DataFrame读 存 excel
读 代码: import pandas as pd e = r'D:\pywork\12\excel信息表.xlsx' df = pd.DataFrame(pd.read_excel(e)) 存 D. ...
- linux驱动之内核空间几种长延时的实现策略的优劣评估
本文转载自http://blog.chinaunix.net/uid-23769728-id-3084737.html 这里所谓的长延时,是指其实现时间延时的粒度可以在HZ这一水准上.<深入Li ...
- Linux的CentOs系统查看CPU个数、核心数、线程数
1.查看CPU物理个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 或 cat /proc/cpuinfo| grep "physi ...