从 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%– 异常进程(如xmrig 、kworker 、ddgs ) – 持续对外连接 矿池地址(stratum+tcp:// ) |
DDoS 攻击 | – 服务器 带宽异常占满–netstat 显示大量SYN_RECV 、TIME_WAIT –ps 发现大量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 SELECT或 OR 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 发现socat 、nc 、iodine 等隧道工具 – 服务器对外大量443 /80 连接 –iptables 规则被修改 |
ARP 欺骗 / 内网流量劫持 | –arp -a 显示异常网关 MAC – 内网通信异常,流量到达错误 IP –tcpdump 发现 ARP 报文激增 |
0x04 Linux数据传输
应急响应需要将相应工具上传到服务器,可使用的方式:
传输方式 | 适用场景 | 使用示例 |
---|---|---|
SCP(安全复制协议)✅ 推荐 | 适用于内网或有 SSH 访问权限的服务器,支持加密传输 | scp tool.tar.gz [email protected]:/tmp/ |
SFTP(安全文件传输)✅ 推荐 | 基于 SSH,适用于Windows 客户端上传 | 使用FileZilla 、WinSCP 等客户端 |
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、账户/登录/权限信息排查
注:主要用于检测系统是否存在异常用户、未授权访问、权限提升等安全隐患。
账户相关
权限相关
登录相关
2、进程以及网络连接排查
注:进程和端口排查是检测恶意程序、后门、隧道、木马等异常行为的关键步骤。
网络相关
可疑点:
-
是否有0.0.0.0:xxxx监听非常规外网端口
-
连接到国外 IP
-
*进程名是否可疑
-
大量TIME_WAIT连接
进程相关
其他补充:
deleted但仍在运行的恶意进程,即使攻击者删除了恶意程序文件,如果它仍在运行,文件可能被标记为(deleted)。
可疑点:
-
占用 CPU / 内存异常高的进程
-
陌生或随机命名的进程(如xyz123、/tmp/.xyz)
-
运行用户异常(如nobody、daemon)
3、任务计划排查
注:攻击者常通过 计划任务(Crontab) 或 系统服务 进行持久化,确保恶意程序在服务器重启后仍能运行。因此,任务计划排查是检测恶意后门、木马和隐藏任务的关键步骤。
4、自启动排查
在应急响应中,自启动排查是发现恶意程序、后门、持久化攻击的重要步骤。攻击者可能通过多种方式实现系统启动后自动运行恶意代码。
检查 systemd服务
enabled:开机自启动,disabled:不开机启动,static:被其他服务依赖启动;
可疑点:
-
服务名称伪装成常见服务(如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、文件排查
在进行文件排查时,关键是识别系统中的异常文件、可能被篡改的文件、隐藏文件及新生成的文件。
补充:如果文件被删除且该文件正在被使用的情况下,通过lsof从/proc目录下恢复该文件的内容
6、日志分析
日志文件
日志分析
0x06 隐藏后门以及排查方法
SSH Wrapper后门
攻击者通过替换合法的 SSH 服务(如 /usr/sbin/sshd),在其中嵌入恶意代码,实现后门访问。
排查方法:
验证/usr/sbin/sshd的完整性,查看其是否为脚本或被替换;
file /usr/sbin/sshd
如果sshd是脚本,检查其内容是否包含可疑代码。
cat /usr/sbin/sshd
端口复用
通过端口复用来达到隐藏端口、绕过防火墙的目的。
排查方法:通过端口扫描检查是否有端口复用,通过ss或者netstat无法检查出,发现端口复用后排查iptables以及相关服务配置是否被更改;
进程隐藏
管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。
cpu 使用率高,但是却找不到任何占用cpu高的程序
排查方法:
unhide是一个小巧的网络取证工具,能够发现那些借助rootkit,LKM及其它技术隐藏的进程和TCP / UDP端口。
SUID Shell
Suid shell是一种可用于以拥有者权限运行的shell,使用普通用户登录就可以获取root权限。
排查方法:
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 服务器应急排查进行了较为全面的探讨。从基础的网络安全攻击特征,到常见排查思路,再到深入的日志分析、后门检测等,每个环节都提供了实际可操作的方法和命令,旨在帮助运维、安全从业者提升应急响应能力。希望本文能够为运维、安全人员提供一些实战经验和思考方向,也期待大家在实践中不断总结、优化,共同提升应对安全事件的能力。
安全之路,道阻且长,愿共勉之。