06-Linux服务器应急排查实战指南
参考资料:
- 网络安全行业门户:https://www.freebuf.com/
引言
在服务器运行过程中,网络安全攻击频发,常见威胁包括 挖矿病毒、蠕虫传播、DDoS 攻击、后门程序等。这些攻击不仅影响系统稳定性,还可能造成数据泄露或业务中断。对于系统运维和应急排查人员而言,如何在最短时间内识别攻击迹象、精准定位问题来源,并迅速采取应对措施,是一项至关重要的技能。
1. 排查思路
1)了解清楚事件发生时间点、事件有什么特征、服务器的用途、服务器上部署的应用组件、已做过那些应急措施,禁忌上来就一顿操作;
2)大概思考下能沾边的网络攻击特征,同时根据服务器版本以及服务器上部署的组件看看近期是否有nday漏洞,有时匹配上了可以节约一大部分时间;
3)根据已部署的安全设备,快速看看异常事件以及已攻击成功的事件;
4)上机排查,使用busybox套装防止发生预期以外的情况,使用磁盘备份(dd)进行整个备份,或手工备份日志以及一些易被覆盖的系统文件,如:.viminfo、history,使用LiME(Linux Memory Extractor)备份服务器内存,或者使用手工追加将进程、网络连接状态等进行备份,(虚拟化/云环境可直接拍摄快照);
5)根据前期了解的情况、事件特征进行排查,若排查到有一定的特征的异常文件或者进程时,可先到网上找找有没有相似案例,可以节约很多时间。
2. 常见网络安全攻击特征
攻击类型 | 特征表现 |
---|---|
挖矿病毒 | - 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 报文激增 |
3. Linux数据传输
应急响应需要将相应工具上传到服务器,可使用的方式:
传输方式 | 适用场景 | 使用示例 |
---|---|---|
SCP(安全复制协议)✅ 推荐 | 适用于内网或有 SSH 访问权限的服务器,支持加密传输 | scp tool.tar.gz user@192.168.1.100:/tmp/ |
SFTP(安全文件传输)✅ 推荐 | 基于 SSH,适用于Windows 客户端上传 | 使用FileZilla 、WinSCP 等客户端 |
rsync(高效增量同步)✅ 推荐 | 大文件同步,支持断点续传 | rsync -avz tool.tar.gz user@192.168.1.100:/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 |
4. 应急排查方法
注:攻击者可能会替换系统关键命令(如ls
、ps
、netstat
)来隐藏恶意进程或文件。若不使用busybox套装,建议使用如下命令查看命令是否被替换,以ls示例:
1 |
|
4.1 账户/登录/权限信息排查
注:主要用于检测系统是否存在异常用户、未授权访问、权限提升等安全隐患。
账户相关
1 |
|
权限相关
1 |
|
登录相关
1 |
|
4.2 进程以及网络连接排查
注:进程和端口排查是检测恶意程序、后门、隧道、木马等异常行为的关键步骤。
网络相关
1 |
|
可疑点:
- 是否有
0.0.0.0:xxxx
监听非常规外网端口 - 连接到国外 IP
- *进程名是否可疑
- 大量
TIME_WAIT
连接
进程相关
1 |
|
其他补充:
deleted
但仍在运行的恶意进程,即使攻击者删除了恶意程序文件,如果它仍在运行,**文件可能被标记为(deleted)
**。
1 |
|
可疑点:
- 占用 CPU / 内存异常高的进程
- 陌生或随机命名的进程(如
xyz123
、/tmp/.xyz
) - 运行用户异常(如
nobody
、daemon
)
4.3 任务计划排查
注:攻击者常通过 计划任务(Crontab) 或 系统服务 进行持久化,确保恶意程序在服务器重启后仍能运行。因此,任务计划排查是检测恶意后门、木马和隐藏任务的关键步骤。
1 |
|
4.4 自启动排查
在应急响应中,自启动排查是发现恶意程序、后门、持久化攻击的重要步骤。攻击者可能通过多种方式实现系统启动后自动运行恶意代码。
检查 systemd服务
1 |
|
enabled:开机自启动,disabled:不开机启动,static:被其他服务依赖启动;
可疑点:
- 服务名称伪装成常见服务(如
sshd.service
、cron.service
),但路径异常 - 服务启动脚本在
/tmp/
、/dev/shm/
、/var/tmp/
目录中
其他自启动文件/配置
1 |
|
可疑点:
- 自定义脚本命名模仿系统服务,如
S99sshd
- 脚本内容包含
curl
、wget
、nc
等下载/反弹 shell 工具
检查内核模块
1 |
|
可疑点:
- 模块名模仿系统模块(如
netfilter
) - 模块路径在
/lib/modules/
之外
环境变量
1 |
|
可疑点:
- 环境变量指向/tmp、/dev/shm等路径的异常文件
- 环境变量含可以命令
- 权限异常(
ls -lah $SSH_AUTH_SOCK
)
4.5 文件排查
在进行文件排查时,关键是识别系统中的异常文件、可能被篡改的文件、隐藏文件及新生成的文件。
1 |
|
补充:如果文件被删除且该文件正在被使用的情况下,通过lsof从/proc目录下恢复该文件的内容
4.6 日志分析
日志文件
1 |
|
日志分析
1 |
|
5. 隐藏后门以及排查方法
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权限。
排查方法:
1 |
|
SSH公私钥免密登录
排查方法:查看/root/.ssh/authorized_keys
是否被修改,find / -nameauthorized_keys
。
软连接
软连接后门是一种 隐蔽性较强 的持久化后门方法,攻击者利用软链接 (ln -s) 指向关键文件或隐藏恶意程序,使其在特定条件下执行,达到 权限提升、命令劫持或绕过安全检查 的目的。
劫持/etc/ld.so.preload
ld.so.preload
是 Linux 动态链接库预加载机制,攻击者可以创建软链接,注入恶意so
文件:
1 |
|
系统所有动态链接的可执行程序都会加载/tmp/malicious.so
,实现权限提升或隐藏恶意进程。
排查方法:
1 |
|
检查是否有关键目录的异常软链接,检查 /tmp、/dev/shm 等目录中的可疑软链接。
strace后门
攻击者利用strace
工具,通过命令替换动态跟踪系统调用和数据,记录用户的敏感操作,如 SSH、SU、SUDO 等。
通过修改用户的环境配置文件(如.bashrc
),为常用命令设置别名,加入strace
跟踪。
排查方法:
查看.bashrc
、.bash_profile
等文件,查找异常的别名设置。
1 |
|
查找系统中是否存在可疑的隐藏日志文件
1 |
|
openSSH后门
攻击者可能替换/usr/sbin/sshd
或/bin/ssh
以植入后门,使其在认证阶段记录密码或允许特定后门密码登录。
排查方法:
1 |
|
PAM后门
PAM(可插拔认证模块)是 Linux 认证机制的重要组成部分。攻击者可以通过劫持 PAM 模块或修改 PAM 配置,实现无密码登录、隐藏用户、记录密码等后门。
1 |
|
6. 实用排查/杀毒工具
1 |
|
