从 0 到 1:Linux 服务器应急排查实战指南

从 0 到 1:Linux 服务器应急排查实战指南

让数据更安全 德斯克安全小课堂 2025-02-12 03:31

0x01 引言

在服务器运行过程中,网络安全攻击频发,常见威胁包括 挖矿病毒、蠕虫传播、DDoS 攻击、后门程序等。这些攻击不仅影响系统稳定性,还可能造成数据泄露或业务中断。对于系统运维和应急排查人员而言,如何在最短时间内识别攻击迹象、精准定位问题来源,并迅速采取应对措施,是一项至关重要的技能。

0x02 排查思路

1)了解清楚事件发生时间点、事件有什么特征、服务器的用途、服务器上部署的应用组件、已做过那些应急措施,禁忌上来就一顿操作;

2)大概思考下能沾边的网络攻击特征,同时根据服务器版本以及服务器上部署的组件看看近期是否有nday漏洞,有时匹配上了可以节约一大部分时间;

3)根据已部署的安全设备,快速看看异常事件以及已攻击成功的事件;

4)上机排查,使用busybox套装防止发生预期以外的情况,使用磁盘备份(dd)进行整个备份,或手工备份日志以及一些易被覆盖的系统文件,如:.viminfo、history,使用LiME(Linux Memory Extractor)备份服务器内存,或者使用手工追加将进程、网络连接状态等进行备份,(虚拟化/云环境可直接拍摄快照);

5)根据前期了解的情况、事件特征进行排查,若排查到有一定的特征的异常文件或者进程时,可先到网上找找有没有相似案例,可以节约很多时间。

0x03 常见网络安全攻击特征

攻击类型 特征表现
挖矿病毒 – CPU / GPU 长时间 占用 100%– 异常进程(如xmrigkworkerddgs) – 持续对外连接 矿池地址stratum+tcp://
DDoS 攻击 – 服务器 带宽异常占满netstat显示大量SYN_RECVTIME_WAITps发现大量httpd/nginx进程
后门木马 隐藏进程ps进程列表找不到但top能看到 –crontab中出现可疑定时任务 – 端口监听异常 (ss -antp显示 root 运行的非标准端口)
蠕虫病毒 – 短时间内大量文件变动top显示异常高 I/O 负载 – 服务器对外疯狂扫描其他 IP
勒索病毒 – 文件被加密(扩展名.lock.encrypted) –/tmp目录下出现未知可执行文件 –ps发现wget/curl下载可疑文件
Webshell / 恶意代码 – 网站目录(/var/www/html/)出现陌生脚本文件– `grep -r eval
SQL 注入攻击 – 数据库mysqld进程 CPU 异常升高 – 网站日志出现大量 UNION SELECTOR 1=1语句
暴力破解 SSH /var/log/secure出现大量 failed login记录 –who发现陌生 IP 登录 –ss -antp发现22端口大量连接
DNS 劫持 resolv.conf被篡改,DNS 解析异常 –ping google.com解析 IP 变化 – 服务器 DNS 记录被改到8.8.8.8之外的未知 IP
恶意代理 / 隧道 ps发现socatnciodine等隧道工具 – 服务器对外大量443/80连接 –iptables规则被修改
ARP 欺骗 / 内网流量劫持 arp -a显示异常网关 MAC – 内网通信异常,流量到达错误 IP –tcpdump发现 ARP 报文激增

0x04 Linux数据传输

应急响应需要将相应工具上传到服务器,可使用的方式:

传输方式 适用场景 使用示例
SCP(安全复制协议)✅ 推荐 适用于内网或有 SSH 访问权限的服务器,支持加密传输 scp tool.tar.gz [email protected]:/tmp/
SFTP(安全文件传输)✅ 推荐 基于 SSH,适用于Windows 客户端上传 使用FileZillaWinSCP等客户端
rsync(高效增量同步)✅ 推荐 大文件同步,支持断点续传 rsync -avz tool.tar.gz [email protected]:/tmp/
Xshell / Xftp(图形化) 适用于Windows 远程管理 Xftp 上传文件到服务器
FTP(不安全,谨慎使用) 适用于无 SSH 但开放 FTP 端口的服务器 ftp 192.168.1.100
HTTP / Python Web 服务器✅ 推荐 适用于目标服务器可访问外网的情况 python3 -m http.server 8080
Wget / Curl(远程下载)✅ 推荐 适用于服务器能访问公网的情况 wget http://your-server.com/tool.tar.gz
Netcat(适用于封闭环境)✅ 推荐 适用于内网受限环境,可用于无 SSH 但有端口通信的服务器 发送端:nc -lvp 4444 < tool.tar.gz接收端:nc IP 4444 > tool.tar.gz
SMB 共享(Windows ↔ Linux) 适用于Windows 与 Linux 互传 Linux 挂载 SMB:mount -t cifs //192.168.1.100/share /mnt
U 盘 / 物理介质 适用于离线服务器 直接拷贝到 U 盘,然后mount /dev/sdb1 /mnt

0x05 应急排查方法

注:攻击者可能会替换系统关键命令(如ls、ps、netstat)来隐藏恶意进程或文件。若不使用busybox套装,建议使用如下命令查看命令是否被替换,以ls示例:

1、账户/登录/权限信息排查

注:主要用于检测系统是否存在异常用户、未授权访问、权限提升等安全隐患。

账户相关

1739088215_67a8615731cb05398bcf3.jpg!small?1739088190036

权限相关

1739088230_67a86166bb67a6390469a.jpg!small?1739088205716

登录相关

2、进程以及网络连接排查

注:进程和端口排查是检测恶意程序、后门、隧道、木马等异常行为的关键步骤。

网络相关

可疑点:

  • 是否有0.0.0.0:xxxx监听非常规外网端口

  • 连接到国外 IP

  • *进程名是否可疑

  • 大量TIME_WAIT连接

进程相关

其他补充:

deleted但仍在运行的恶意进程,即使攻击者删除了恶意程序文件,如果它仍在运行,文件可能被标记为(deleted)

可疑点:

  • 占用 CPU / 内存异常高的进程

  • 陌生或随机命名的进程(如xyz123、/tmp/.xyz)

  • 运行用户异常(如nobody、daemon)

3、任务计划排查

注:攻击者常通过 计划任务(Crontab) 或 系统服务 进行持久化,确保恶意程序在服务器重启后仍能运行。因此,任务计划排查是检测恶意后门、木马和隐藏任务的关键步骤。

1739088290_67a861a284ef6c6d9c51c.jpg!small?1739088265358

4、自启动排查

在应急响应中,自启动排查是发现恶意程序、后门、持久化攻击的重要步骤。攻击者可能通过多种方式实现系统启动后自动运行恶意代码。

检查 systemd服务

enabled:开机自启动,disabled:不开机启动,static:被其他服务依赖启动;

1739088302_67a861aeda891a79e7e49.jpg!small?1739088283273

可疑点:

  • 服务名称伪装成常见服务(如sshd.service、cron.service),但路径异常

  • 服务启动脚本在/tmp/、/dev/shm/、/var/tmp/目录中

其他自启动文件/配置

可疑点:

  • 自定义脚本命名模仿系统服务,如S99sshd

  • 脚本内容包含curl、wget、nc等下载/反弹 shell 工具

检查内核模块

可疑点:

  • 模块名模仿系统模块(如netfilter)

  • 模块路径在/lib/modules/之外

环境变量

可疑点:

  • 环境变量指向/tmp、/dev/shm等路径的异常文件

  • 环境变量含可以命令

  • 权限异常(ls -lah $SSH_AUTH_SOCK)

5、文件排查

在进行文件排查时,关键是识别系统中的异常文件、可能被篡改的文件、隐藏文件及新生成的文件。

1739088317_67a861bdf0ccb9ebefa09.png!small?1739088293505

补充:如果文件被删除且该文件正在被使用的情况下,通过lsof从/proc目录下恢复该文件的内容

1739088330_67a861caa03f56d2d4052.png!small?1739088305875

6、日志分析

日志文件
日志分析

1739088349_67a861dd06b3c83e8a438.jpg!small?1739088323922

0x06 隐藏后门以及排查方法

SSH Wrapper后门

攻击者通过替换合法的 SSH 服务(如 /usr/sbin/sshd),在其中嵌入恶意代码,实现后门访问。

排查方法:

验证/usr/sbin/sshd的完整性,查看其是否为脚本或被替换;

file /usr/sbin/sshd

如果sshd是脚本,检查其内容是否包含可疑代码。

cat /usr/sbin/sshd

端口复用

通过端口复用来达到隐藏端口、绕过防火墙的目的。

排查方法:通过端口扫描检查是否有端口复用,通过ss或者netstat无法检查出,发现端口复用后排查iptables以及相关服务配置是否被更改;

1739088357_67a861e5d450abd316ada.jpg!small?1739088333217

进程隐藏

管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。

cpu 使用率高,但是却找不到任何占用cpu高的程序

1739088374_67a861f6977f5904072e7.png!small?1739088349529

排查方法:

unhide是一个小巧的网络取证工具,能够发现那些借助rootkit,LKM及其它技术隐藏的进程和TCP / UDP端口。

1739088379_67a861fb6cae2248becd4.png!small?1739088354278

SUID Shell

Suid shell是一种可用于以拥有者权限运行的shell,使用普通用户登录就可以获取root权限。

1739088388_67a862044521a2eb11184.png!small?1739088363070

排查方法:

SSH公私钥免密登录

排查方法:查看/root/.ssh/authorized_keys是否被修改,find / -nameauthorized_keys。

软连接

软连接后门是一种 隐蔽性较强 的持久化后门方法,攻击者利用软链接 (ln -s) 指向关键文件或隐藏恶意程序,使其在特定条件下执行,达到 权限提升、命令劫持或绕过安全检查 的目的。

劫持/etc/ld.so.preload

ld.so.preload是 Linux 动态链接库预加载机制,攻击者可以创建软链接,注入恶意so文件:

系统所有动态链接的可执行程序都会加载/tmp/malicious.so,实现权限提升或隐藏恶意进程。

排查方法:

检查是否有关键目录的异常软链接,检查 /tmp、/dev/shm 等目录中的可疑软链接。

strace后门

攻击者利用strace工具,通过命令替换动态跟踪系统调用和数据,记录用户的敏感操作,如 SSH、SU、SUDO 等。

通过修改用户的环境配置文件(如.bashrc),为常用命令设置别名,加入strace跟踪。

排查方法:

查看.bashrc、.bash_profile等文件,查找异常的别名设置。

查找系统中是否存在可疑的隐藏日志文件

openSSH后门

攻击者可能替换/usr/sbin/sshd或/bin/ssh以植入后门,使其在认证阶段记录密码或允许特定后门密码登录。

排查方法:

PAM后门

PAM(可插拔认证模块)是 Linux 认证机制的重要组成部分。攻击者可以通过劫持 PAM 模块或修改 PAM 配置,实现无密码登录、隐藏用户、记录密码等后门。

0x07 实用排查/杀毒工具

0x08 总结

在本篇文章中,围绕 Linux 服务器应急排查进行了较为全面的探讨。从基础的网络安全攻击特征,到常见排查思路,再到深入的日志分析、后门检测等,每个环节都提供了实际可操作的方法和命令,旨在帮助运维、安全从业者提升应急响应能力。希望本文能够为运维、安全人员提供一些实战经验和思考方向,也期待大家在实践中不断总结、优化,共同提升应对安全事件的能力。

安全之路,道阻且长,愿共勉之