一、应急响应概述
当 Linux 服务器出现异常行为(CPU/内存异常、可疑进程、网络连接异常等)时,需要按照标准化流程进行应急处置,快速定位问题、遏制影响、恢复服务并留存证据。
二、应急响应流程
1. 初步识别与研判
1.1 异常现象确认
系统负载异常升高(top、htop)
可疑进程占用资源
异常网络连接
文件被篡改或删除
定时任务异常
用户账户异常登录
1.2 初步排查命令
# 查看系统负载和进程top-cps auxf# 查看网络连接netstat -antlpss -antlp# 查看登录用户wlastlastb # 失败登录记录# 查看定时任务crontab -lcat /etc/crontabls-la /etc/cron.d/ls-la /var/spool/cron/# 查看开机启动项systemctl list-unit-files --type=service | grep enabledchkconfig --list# CentOS 6
2. 现场保护与证据固定
2.1 立即执行
✅ 记录当前时间:date
✅ 保存进程信息:ps auxf > /tmp/ps_info.txt
✅ 保存网络连接:netstat -antlp > /tmp/net_info.txt
✅ 保存登录记录:last > /tmp/last_info.txt
✅ 对可疑文件进行备份(勿删除)
2.2 系统快照(如有条件)
# 虚拟机快照# 或使用 LiME 进行内存取证(需提前准备)insmod lime.ko "path=/tmp/mem.lime format=lime"
2.3 重要文件备份
# 备份关键系统文件tar -czvf /tmp/system_backup_$(date +%Y%m%d_%H%M%S).tar.gz \ /etc/passwd /etc/shadow /etc/sudoers \ /etc/ssh/sshd_config /etc/crontab /var/spool/cron/ \ /etc/init.d/ /etc/systemd/ /etc/rc.local
3. 威胁排查与定位
3.1 恶意进程排查
# 查看所有进程及其命令行参数ps auxfps-eo pid,user,args --forest# 查看进程打开的文件lsof -p <PID># 查看进程的可执行文件路径ls-l /proc/<PID>/exels-l /proc/<PID>/cwd # 工作目录ls-l /proc/<PID>/fd # 文件描述符# 查看隐藏进程(对比 /proc 和 ps 输出)ls /proc | grep-E'^[0-9]+$' | sort > /tmp/proc_pids.txtps-eo pid | tail -n+2 | sort > /tmp/ps_pids.txtdiff /tmp/proc_pids.txt /tmp/ps_pids.txt
3.2 网络连接排查
# 查看所有网络连接netstat -antlpss -antlp# 查看进程监听端口lsof -i# 查看特定端口的进程lsof -i :<PORT>netstat -antlp | grep <PORT># 检查可疑外连netstat -antlp | grep ESTABLISHED
3.3 可疑文件排查
# 查找最近修改的文件find / -type f -mtime-7-ls2>/dev/null# 查找最近24小时内创建的文件find / -type f -ctime-1-ls2>/dev/null# 查找 SUID/SGID 文件(提权后门)find / -perm-4000-type f -ls2>/dev/nullfind / -perm-2000-type f -ls2>/dev/null# 查找隐藏文件find / -name".*"-type f 2>/dev/null# 查找可疑脚本find / \( -name"*.sh"-o-name"*.py"-o-name"*.pl"-o-name"*.php" \) \-mtime-30-ls2>/dev/null# 检查常见 Webshell 目录find /var/www /home -type f -name"*.php"-mtime-72>/dev/null
3.4 定时任务排查
# 用户定时任务for user in$(cut -f1 -d: /etc/passwd); doecho"=== $user ===" crontab -u$user-l2>/dev/nulldone# 系统定时任务cat /etc/crontabls-la /etc/cron.d/ls-la /etc/cron.daily/ls-la /etc/cron.hourly/ls-la /etc/cron.monthly/ls-la /etc/cron.weekly/ls-la /var/spool/cron/# 检查 anacroncat /etc/anacrontab
3.5 启动项排查
# Systemd 服务systemctl list-unit-files --type=service--state=enabledls-la /etc/systemd/system/ls-la /lib/systemd/system/# Init.d 脚本ls-la /etc/init.d/# RC 本地启动cat /etc/rc.localls-la /etc/rc.d/# 用户自启动项ls-la ~/.config/autostart/ls-la /home/*/.config/autostart/
3.6 用户账户排查
# 检查特权用户awk-F: '$3==0 {print $1}' /etc/passwd# 检查有密码的用户awk-F: '($2!="" && $2!="x") {print $1}' /etc/shadow# 检查 sudo 权限cat /etc/sudoersls-la /etc/sudoers.d/# 检查 SSH 密钥ls-la /root/.ssh/cat /root/.ssh/authorized_keysls-la /home/*/.ssh/cat /home/*/.ssh/authorized_keys 2>/dev/null# 检查可疑账户cat /etc/passwd | grep-v nologin | grep-vfalse3.7 日志分析
# 系统日志tail -100 /var/log/messagestail -100 /var/log/syslog# 安全日志(登录、sudo等)tail -500 /var/log/secure # RHEL/CentOStail -500 /var/log/auth.log # Debian/Ubuntu# SSH 日志grep-i"failed\|accepted\|invalid" /var/log/securegrep-i"failed\|accepted\|invalid" /var/log/auth.log# 用户命令历史cat ~/.bash_historycat /home/*/.bash_history 2>/dev/null# Web 服务器日志(如有)tail -500 /var/log/nginx/access.logtail -500 /var/log/apache2/access.loggrep-i"eval\|base64\|exec\|shell" /var/log/nginx/access.log
4. 威胁遏制与清除
4.1 隔离网络(视情况)
# 禁用网络接口ifconfig eth0 down# 或ip link set eth0 down# 配置防火墙阻断外连iptables -A OUTPUT -d <恶意IP> -j DROPiptables -A OUTPUT -p tcp --dport <恶意端口> -j DROP# 保存防火墙规则iptables-save > /tmp/iptables_backup.rules
4.2 终止恶意进程
# 终止进程kill-9 <PID># 终止进程树kill-9-$(ps -o pgid= -p <PID> | tr -d ' ')# 防止进程重启(检查定时任务、启动项)
4.3 删除恶意文件
# 先备份可疑文件(用于后续分析)mkdir-p /tmp/malware_backupcp <可疑文件> /tmp/malware_backup/# 计算文件哈希(用于威胁情报查询)md5sum <可疑文件>sha256sum <可疑文件># 删除恶意文件rm-f <恶意文件路径># 删除恶意定时任务crontab -e# 编辑删除rm-f /etc/cron.d/<恶意任务文件># 删除恶意启动项systemctl disable <恶意服务>rm-f /etc/systemd/system/<恶意服务>.servicesystemctl daemon-reload# 删除恶意用户userdel -r <恶意用户名>
4.4 清除后门
# 清除 SSH 后门密钥vim /root/.ssh/authorized_keysvim /home/*/.ssh/authorized_keys# 清除 SUID 后门chmod u-s <可疑SUID文件># 检查并清除内核模块后门lsmod | grep <可疑模块名>rmmod <可疑模块名>
5. 系统恢复与加固
5.1 修复漏洞
5.2 加固措施
# SSH 加固vim /etc/ssh/sshd_config# PermitRootLogin no# PasswordAuthentication no# Port <非默认端口># 配置防火墙白名单iptables -A INPUT -s <信任IP> -j ACCEPTiptables -A INPUT -j DROP# 禁用不必要的服务systemctl disable <服务名># 安装入侵检测工具(可选)yum install -y rkhunter chkrootkitrkhunter --checkchkrootkit
5.3 密码重置
重置所有可能泄露的密码
重置 SSH 密钥
重置数据库密码
5.4 监控与告警
# 安装监控工具yum install -y aide # 文件完整性监控aide --initaide --check# 配置日志监控# 考虑部署 ELK、Wazuh 等 SIEM 系统
6. 事件总结与报告
6.1 事件报告内容
事件概述:发现时间、发现方式、影响范围
攻击时间线:入侵时间、攻击者行为、持续时间
攻击手段:利用的漏洞、植入的后门、持久化方式
影响评估:受影响系统、数据泄露情况、业务影响
处置措施:遏制措施、清除措施、加固措施
改进建议:预防措施、监控改进、流程优化
6.2 威胁情报共享
三、常用工具
1. 文件分析
# 文件类型识别file <文件名># 字符串提取strings <文件名># 文件哈希md5sum <文件名>sha256sum <文件名># 查看文件时间属性stat <文件名>
2. 网络分析
# 抓包分析tcpdump -i eth0 -w capture.pcaptcpdump -i eth0 port <端口># 查看流量统计iftopnethogs
3. 进程分析
# 进程树pstree -p# 进程资源占用pidstat -p <PID># 系统调用跟踪strace -p <PID>
4. 专业工具
| 工具 | 用途 |
|---|
| Volatility | 内存取证 |
| LiME | 内存采集 |
| chkrootkit | Rootkit检测 |
| rkhunter | Rootkit检测 |
| ClamAV | 开源杀毒 |
| YARA | 恶意代码识别 |
| CrowdStrike | EDR平台 |
| Wazuh | SIEM平台 |
📌 声明:本文仅供安全研究与学习使用,请勿用于非法用途。应急响应过程中请遵守相关法律法规,保护用户隐私和数据安全。