网站被黑是每个站长都可能面对的噩梦。与发现问题后的慌乱相比,掌握一套系统的应急响应流程才是关键。本文将详细讲解网站被入侵后的应急处理步骤、漏洞排查方法和加固修复方案,帮助你在最短时间内止血并恢复运营。
一、入侵迹象识别
网站被入侵通常不会有大喇叭通知你,需要主动发现异常信号:

1. 搜索引擎报警信号
- 百度搜索结果中出现博彩/色情等垃圾标题和描述
- 搜索site:yourdomain.com发现大量陌生页面被收录
- 百度搜索资源平台提示"网站异常"或"安全风险"
- Google Search Console收到恶意软件警告
2. 服务器端异常
- Nginx日志中出现大量对陌生URL的200响应
- 服务器CPU或带宽使用率异常升高
- 发现不认识的文件或目录(特别是PHP文件)
- crontab中出现非本人设置的计划任务
- 异常的出站网络连接(如连接海外IP的443端口)
3. 用户端异常
- 网站打开速度突然变慢
- 浏览器弹窗或自动跳转到其他网站
- 搜索引擎将网站标记为"危险网站"
二、应急响应标准流程
第一阶段:止血(0-30分钟)
发现入侵后的第一件事不是查原因,而是止损:
# 1. 立即开启宝塔面板的"防火墙"全阻模式 # 或者手动用iptables阻断所有入站(除了你的管理IP) # 2. 临时关闭网站 iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -p tcp --dport 443 -j DROP # 允许你的IP访问 iptables -I INPUT -s 你的IP -p tcp --dport 443 -j ACCEPT # 3. 立即修改所有密码 # - 服务器root密码 # - 宝塔面板密码 # - 数据库root密码 # - CMS管理员密码 # - FTP密码 # - SSH密钥
第二阶段:取证(30分钟-2小时)
在清理之前先保存证据,便于后续分析入侵路径:
# 1. 打包当前网站状态(保留证据) tar czf /root/evidence_$(date +%Y%m%d_%H%M).tar.gz /www/wwwroot/ # 2. 导出访问日志(重点分析最近7天) cp /www/wwwlogs/ /root/log_evidence/ -r # 3. 记录当前运行的异常进程 ps auxf > /root/ps_dump_$(date +%Y%m%d).txt netstat -tlnp > /root/netstat_dump_$(date +%Y%m%d).txt # 4. 检查crontab crontab -l > /root/crontab_dump.txt cat /etc/crontab > /root/crontab_system.txt # 5. 检查最近修改的文件(找后门) find /www/wwwroot/ -name "*.php" -mtime -7 -ls > /root/recent_php_files.txt find /tmp/ -type f -executable -ls > /root/tmp_executables.txt
第三阶段:查杀与清理(2-6小时)
# 1. 查找Webshell后门 # 常见Webshell特征码 grep -rl "eval(\$_POST" /www/wwwroot/ --include="*.php" > /root/webshell_suspects.txt grep -rl "base64_decode.*eval" /www/wwwroot/ --include="*.php" >> /root/webshell_suspects.txt grep -rl "assert.*\$_" /www/wwwroot/ --include="*.php" >> /root/webshell_suspects.txt grep -rl "shell_exec.*\$_" /www/wwwroot/ --include="*.php" >> /root/webshell_suspects.txt # 2. 查找隐藏的PHP文件 find /www/wwwroot/ -name ".*.php" -ls >> /root/hidden_php_files.txt # 3. 查找被篡改的核心文件 # WordPress核心文件校验 wp core verify-checksums 2>&1 | grep -v "WordPress" >> /root/modified_core.txt # 4. 查找异常数据库内容 mysql -u root -p -e " SELECT * FROM wp_posts WHERE post_content LIKE '%