
核心要点(TL;DR)
- 隔离优先:立即下线或限制访问,防止恶意代码扩散与数据泄露。
- 取证关键:备份日志、进程、网络连接与恶意文件,保留证据链。
- 恢复彻底:重装系统或回滚干净备份,修改所有密码并修补漏洞。
- 事后加固:部署WAF与文件监控,建立定期扫描与应急演练机制。
凌晨收到监控告警:网站首页被插入赌博暗链,搜索引擎已标记“危险”。作为运维,你需要在最短时间内控制损失、清除后门并恢复业务。本文基于真实应急案例,拆解隔离、取证与恢复的完整流程,提供可落地的命令与检查清单,帮助你在高压下有序操作。
一、立即隔离:切断攻击者通道
发现挂马后,首要目标是阻止恶意代码继续传播和攻击者进一步渗透。隔离不是简单关站,而是有策略地限制访问。
- 暂停Web服务:
systemctl stop nginx或systemctl stop httpd,避免恶意页面继续被访问。 - 限制网络访问:通过防火墙仅允许管理IP访问SSH,例如
iptables -A INPUT -p tcp --dport 22 -s 你的IP -j ACCEPT,然后iptables -P INPUT DROP。 - 保留现场:不要立即删除文件或重启服务器,先对关键目录做快照或备份,例如
tar czf /backup/webroot_$(date +%F).tar.gz /var/www/html。
若业务允许,可将域名解析指向维护页面,避免用户访问被感染内容。
二、取证分析:定位入侵路径与后门
取证是为了还原攻击链,找到漏洞入口和遗留后门。以下操作需在隔离环境下进行,避免破坏证据。
1. 检查异常进程与网络连接
ps aux --sort=-%cpu | head -20 netstat -antp | grep ESTABLISHED lsof -i :80
关注可疑进程名(如随机字符串)、异常外连IP。使用 ls -l /proc/<PID>/exe 查看进程真实路径。
2. 分析Web日志
查找攻击者上传或访问webshell的记录:
grep -E "(eval|base64_decode|shell_exec)" /var/log/nginx/access.log
grep -i "POST /uploads/" /var/log/nginx/access.log | awk '{print }' | sort | uniq -c | sort -nr重点关注短时间内大量POST请求、异常User-Agent或访问不存在的路径。
3. 扫描恶意文件
使用工具快速定位:
find /var/www -type f -mtime -7 -name "*.php" -exec grep -l "eval(" {} \;
find /var/www -type f -perm -4000 -ls也可使用ClamAV扫描:clamscan -r /var/www --remove=no。
4. 检查持久化后门
- 计划任务:
crontab -l和ls -l /etc/cron.* - 启动项:
systemctl list-unit-files --state=enabled - SSH密钥:
cat ~/.ssh/authorized_keys - 隐藏账户:
awk -F: '==0 {print }' /etc/passwd
将发现的恶意文件、日志片段打包备份,记录时间线。
三、彻底清除与恢复业务
清除必须彻底,否则很快会再次被入侵。推荐两种恢复方式:
| 方式 | 操作 | 适用场景 |
|---|---|---|
| 重装系统 | 备份数据后重装OS,重新部署应用 | 入侵严重、后门难以根除 |
| 干净备份恢复 | 使用入侵前的备份还原,并修补漏洞 | 有可靠备份且漏洞已修复 |
恢复后务必执行:
- 修改所有系统账户、数据库、应用后台密码。
- 更新CMS、插件、框架到最新版本。
- 删除无用账户和上传目录的执行权限(如
chmod -R 755 /var/www/html/uploads并禁用PHP解析)。 - 使用
rkhunter或chkrootkit复查系统。
恢复业务前,在测试环境验证功能与安全,再切换流量。
四、加固与监控:防止二次入侵
应急响应结束后,需建立长效防护。基础措施包括:部署WAF拦截恶意请求、启用文件完整性监控(如AIDE)、定期漏洞扫描、严格限制目录权限。对于中小团队,可考虑接入AegisX的网站安全防护能力,其WAF与文件监控可实时阻断挂马行为,降低应急响应压力。
同时制定安全运维清单:每日备份、每周日志审计、每月漏洞扫描,并定期演练应急流程。
五、行动建议
立即检查你的网站备份策略与日志保留周期,确保在发生挂马时能快速取证。建议收藏本文的检查清单,并组织一次内部应急演练,熟悉隔离与恢复步骤。安全无小事,有备才能无患。
常见问题(FAQ)
网站被挂马后,第一步应该做什么?
立即隔离服务器或站点,防止恶意代码继续传播和搜索引擎标记。具体操作包括:暂停Web服务、关闭对外访问端口、备份当前状态。隔离后尽快取证,避免破坏证据。
如何快速找到网站被挂马的位置?
可通过对比备份文件、扫描近期修改文件、检查Web日志中的异常请求来定位。常用命令:find /var/www -mtime -7 -type f 查找近期修改文件;grep -r 'eval(' /var/www 搜索可疑代码。
取证时需要收集哪些关键信息?
应收集系统日志、Web访问日志、进程列表、网络连接、用户账户、计划任务、恶意文件样本等。使用命令如 ps aux、netstat -antp、crontab -l 并打包备份,确保数据完整性。
恢复网站时如何确保后门被彻底清除?
建议重装操作系统并重新部署应用,或从被入侵前的干净备份恢复。恢复后必须修改所有密码、更新补丁、审查代码,并使用安全工具扫描后门。切勿仅删除恶意文件了事。
如何防止网站再次被挂马?
部署WAF拦截恶意请求,定期更新CMS和插件,限制文件权限,启用文件完整性监控。同时建立安全运维流程,如定期备份、日志审计和漏洞扫描,提升整体防护能力。