Linux应急响应排查手册
Linux应急响应排查手册
概述
Linux系统作为服务器领域的主力操作系统,承载着大量的Web服务、数据库和基础设施。由于其开源特性,攻击者对Linux系统的攻击手法也层出不穷。在应急响应中,Linux排查需要覆盖用户管理、进程分析、计划任务、网络连接、文件系统等多个维度,才能全面掌握系统的安全状态。
Linux排查的核心优势在于其透明性——大部分系统行为都通过文件和日志记录,熟练掌握命令行工具可以高效地完成排查工作。与Windows不同,Linux的持久化机制相对集中,主要围绕crontab、systemd服务、SSH配置和bash初始化脚本展开。
本文将从实战角度出发,详细介绍Linux系统应急响应中的关键排查项目,帮助安全人员快速定位威胁并进行处置。
核心概念
用户与登录排查
首先检查系统中的用户账户情况。cat /etc/passwd 查看所有用户,重点关注 UID 为 0 的用户(应仅有 root)、有登录 shell 的用户(shell 不为 /sbin/nologin 或 /bin/false)以及最近新增的可疑用户。last 和 lastb 命令分别查看成功和失败的登录记录,w 命令查看当前登录用户。
检查是否存在 SSH 后门用户:查看 /etc/passwd 中是否有异常的 UID/GID、检查 ~/.ssh/authorized_keys 文件中是否存在未授权的公钥、查看 /etc/ssh/sshd_config 是否被修改(如允许 root 直接登录、修改端口等)。
使用 find / -perm -4000 -type f 2>/dev/null 查找 SUID 文件,攻击者可能设置 SUID 位来实现权限提升。对比正常系统的 SUID 文件列表,发现新增的应立即审查。
进程排查
使用 ps auxf 以树形结构查看所有进程,关注以下异常:进程名伪装成系统进程但路径异常、CPU 或内存占用持续偏高的进程、命令行参数包含可疑内容(如 base64 编码的命令)、从 /tmp 或 /dev/shm 等临时目录启动的进程。
/proc 文件系统提供了进程的详细信息,ls -la /proc/<PID>/exe 可查看进程的可执行文件实际路径,cat /proc/<PID>/cmdline 获取完整命令行。lsof -p <PID> 可查看进程打开的所有文件和网络连接。
使用 netstat -tlnp 或 ss -tlnp 查看监听端口,与已知的服务端口进行对比。未识别的监听端口可能是后门服务,需要进一步分析其对应进程。
计划任务排查
crontab 是 Linux 下最常用的定时任务机制,排查需要覆盖多个位置:crontab -l(当前用户的 crontab)、cat /etc/crontab(系统级 crontab)、ls -la /etc/cron.d/(cron.d 目录)、ls -la /var/spool/cron/(各用户的 crontab 文件)。
此外还要检查 systemd 定时器:systemctl list-timers --all。以及 anacron 配置:cat /etc/anacrontab。恶意计划任务通常具有以下特征:执行从网络下载的脚本、写入反弹 shell 命令、任务创建时间与入侵时间吻合、任务文件权限异常。
排查时不要忽略 at 命令创建的一次性任务,使用 atq 查看等待执行的队列。
文件系统排查
文件系统排查重点关注异常文件和篡改行为。使用 find / -mtime -3 -type f 查找最近 3 天内修改的文件,find /tmp -type f 查看临时目录中的文件,find / -name ".*" -type f 查找隐藏文件。
检查关键系统文件是否被篡改:rpm -Va(RHEL/CentOS)或 debsums -c(Debian/Ubuntu)验证系统包的完整性。对比关键命令(如 ps、netstat、ls)的哈希值,攻击者可能替换这些工具来隐藏恶意活动。
检查 /etc/ld.so.preload 文件,如果非空则可能存在 LD_PRELOAD 型 rootkit。使用 lsmod 查看加载的内核模块,对比已知正常模块列表发现可疑的内核级后门。
日志分析
Linux 系统日志是应急响应的重要信息来源。关键日志文件包括:/var/log/auth.log 或 /var/log/secure(认证日志)、/var/log/syslog 或 /var/log/messages(系统日志)、/var/log/cron(计划任务日志)和 /var/log/lastlog(最后登录信息)。
分析认证日志时重点关注:大量的 SSH 暴力破解尝试(Failed password)、非工作时间的登录行为、来自异常 IP 地址的登录、su 或 sudo 命令的使用记录。使用 journalctl 命令可以对 systemd 日志进行更灵活的查询和过滤。
Web 服务的访问日志(如 /var/log/nginx/access.log)和应用日志也需要纳入排查范围,它们可能记录了 Web 攻击的痕迹。
实战要点
- 使用Rootkit检测工具:部署 chkrootkit 或 rkhunter 进行自动化 rootkit 检测,它们可以识别已知的 rootkit 特征和常见的后门手法,是手动排查的有效补充。
- 验证系统工具完整性:在排查开始时,首先要确认 ps、netstat、ls 等基础工具未被替换。可以使用静态编译的 busybox 或从可信源获取的工具副本进行排查。
- 对比基线发现差异:维护一份系统正常状态的基线快照(包括文件哈希、进程列表、网络连接、crontab 等),排查时与基线对比可以快速发现异常。
- 关注 LD_PRELOAD 和 LD_LIBRARY_PATH:检查环境变量和
/etc/ld.so.preload,攻击者可能通过动态链接器劫持实现进程注入和行为隐藏。使用readelf -d检查可疑 ELF 文件的动态依赖。 - 排查内核级后门:通过
dmesg检查内核日志,lsmod查看模块列表,对比/lib/modules/下的模块文件。可疑的内核模块可能实现网络后门、进程隐藏等功能。
总结
Linux应急响应排查需要对操作系统底层机制有深入理解,熟练运用命令行工具进行多维度的排查分析。从用户账户到进程管理,从计划任务到文件系统,每个环节都可能隐藏着攻击者的痕迹。建立系统化的排查流程和工具集,是高效完成应急响应的基础。
建议在日常工作中维护系统的安全基线,定期进行安全巡检,并将排查经验总结为自动化脚本,以提高应急响应的效率和准确性。