第一步:初步判断和发现攻击迹象
你需要确认网站是否真的被攻击了,以下是常见的攻击迹象:

- 网站无法访问:网站直接打不开,出现 5xx 服务器错误或连接超时。
- 被篡改:首页被替换成黑客的页面(通常是黑底白字的挑衅信息)。
- 网站被重定向:访问你的网站时,自动跳转到其他不相关的网站(通常是赌博、色情或钓鱼网站)。
- 网站访问速度极慢或服务器负载极高:服务器CPU、内存、网络带宽等资源被耗尽。
- 收到来自主机商或安全服务商的通知:例如收到Google Search Console的“恶意软件”警告,或云服务商(如阿里云、腾讯云)发来的安全事件通知。
- 收到用户反馈:用户反映访问网站时被浏览器或杀毒软件提示为“危险网站”。
- 看到异常的流量:在网站分析工具(如Google Analytics)或服务器日志中,发现来自某个IP或地区的异常高频访问。
第二步:定位攻击源和类型
一旦发现异常,就需要深入排查,找到攻击的根源,这通常需要登录到你的服务器上进行操作。
A. 检查服务器资源状态
使用命令行工具检查服务器的实时负载,判断是否遭受了DDoS(分布式拒绝服务)攻击或资源耗尽型攻击。
-
Linux 系统:
-
查看CPU和内存使用率:
(图片来源网络,侵删)# 实时查看系统资源使用情况,按 q 键退出 top # 查看内存和交换分区的使用情况 free -h
-
查看网络连接状态:
# 查看当前所有网络连接,-n 参数以数字形式显示地址,避免DNS查询延迟 netstat -an # 查看当前所有网络连接,并按连接数排序,可以快速发现大量异常连接 netstat -an | grep 'ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr -
查看实时网络流量:
# 实时显示网络接口的流量信息 iftop # 安装 iftop (如果系统没有): sudo apt-get install iftop (Ubuntu/Debian) 或 sudo yum install iftop (CentOS/RHEL)
-
-
Windows 系统:
- 打开任务管理器:按
Ctrl + Shift + Esc,查看“性能”选项卡下的CPU、内存、网络使用情况。 - 使用资源监视器:在任务管理器的“性能”选项卡中点击“打开资源监视器”,可以查看更详细的网络连接和进程信息。
- 打开任务管理器:按
B. 分析Web服务器日志
这是最核心、最有效的排查手段,Web服务器日志记录了所有访问请求的详细信息。

-
日志位置:
- Apache:
/var/log/apache2/access.log或/var/log/httpd/access_log - Nginx:
/var/log/nginx/access.log - IIS (Windows):
C:\inetpub\logs\LogFiles\
- Apache:
-
分析日志内容:
-
查找高频访问的IP(可能是DDoS攻击或暴力破解):
# 统计访问次数最多的前20个IP tail -n 10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 20 -
查找异常的URL路径(可能是扫描或攻击行为):
# 查找访问频率最高的URL tail -n 10000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 20 # 查找包含特定恶意关键词的请求,如 "phpmyadmin", "wp-admin", "admin", ".env" 等 grep -i "phpmyadmin\|wp-admin\|admin\|\.env" /var/log/nginx/access.log -
查找返回特定错误码的请求(如404, 500, 403):
# 查找返回404 Not Found的请求 grep " 404 " /var/log/nginx/access.log | head -n 20
-
查找可疑的User-Agent:
# 查找非浏览器或爬虫的User-Agent grep -v "Mozilla\|Googlebot\|Bingbot" /var/log/nginx/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -nr
-
C. 检查网站文件
被篡改或植入了后门,需要检查文件系统。
-
查找最近被修改的文件:
# 查找在最近24小时内被修改的文件 find /path/to/your/website -mtime -1 -ls # 查找所有可执行的PHP文件(正常网站通常不应有太多) find /path/to/your/website -name "*.php" -type f
-
检查关键目录:
- 检查网站根目录下是否有你不认识的文件,尤其是文件名很乱(如
a.php,js)或与网站功能无关的文件。 - 检查上传目录(如
wp-content/uploads/),看是否有可疑的脚本文件被上传。
- 检查网站根目录下是否有你不认识的文件,尤其是文件名很乱(如
-
检查Webshell:
- 使用
grep命令在网站文件中搜索常见的Webshell特征码,如eval,base64_decode,assert,shell_exec,system,passthru等。# 在网站目录下递归搜索包含eval的PHP文件 grep -r "eval(" /path/to/your/website --include="*.php"
- 使用
D. 检查数据库
- 检查数据库用户:登录数据库,查看是否有异常的数据库用户被创建。
-- MySQL SELECT host, user FROM mysql.user;
- 检查数据库中的表和数据:检查是否有异常的表、数据被篡改,或者是否发现了挖矿脚本、垃圾链接等。
第三步:使用专业安全工具
如果你不熟悉命令行操作,或者需要更专业的分析,可以使用以下工具:
-
云服务商自带的安全服务:
- 阿里云: 云盾、云安全中心
- 腾讯云: 云安全、主机安全
- 华为云: Host Security, Anti-DDoS
- 这些服务通常能自动检测并告DDoS攻击、暴力破解、Web攻击等,并提供一键清洗、封禁IP等功能。
-
Web应用防火墙:
WAF是专门用于防御Web应用攻击(如SQL注入、XSS、文件包含等)的设备或服务,如果你的网站部署了WAF(如ModSecurity, 腾讯云WAF, 阿里云WAF),可以登录WAF控制台查看攻击日志,了解具体的攻击类型和来源。
-
安全扫描工具:
- ClamAV: 开源的杀毒软件,可以用来扫描网站文件中的恶意软件。
- Wordfence / Sucuri Security (针对WordPress): 这两款流行的WordPress安全插件,可以扫描恶意软件、检查文件完整性、监控防火墙日志等。
- 在线扫描服务: 如 VirusTotal,你可以将网站文件或URL提交给它,由多家杀毒引擎进行联合扫描。
第四步:处理和恢复
排查清楚后,需要立即采取措施:
-
隔离和备份:
- 立即断开网络:如果攻击非常严重,暂时断开服务器的网络连接,防止事态扩大。
- 备份证据:将服务器日志、可疑文件等作为证据备份下来,用于后续分析。
- 备份干净数据:从干净的备份中恢复网站,不要在被攻击的服务器上直接修复。
-
清除后门和恶意代码:
- 根据排查结果,删除所有被篡改的文件和被植入的后门。
- 修改所有密码:服务器密码、数据库密码、FTP/SFTP密码、网站后台密码、CMS管理密码等。
-
修复漏洞并加固:
- 更新所有软件:Web服务器(Nginx/Apache)、数据库(MySQL/MariaDB)、PHP/Python/Node.js运行环境、CMS系统(WordPress, Drupal等)及其所有插件和主题到最新版本。
- 修改文件权限:确保网站目录的权限设置正确(Web服务器用户只应有读和执行的权限,不应有写权限)。
- 配置安全策略:禁用不必要的目录执行权限,配置
.htaccess或Nginx的server块来限制访问。
-
重新上线并监控:
- 在确认服务器安全后,重新将网站上线。
- 密切监控服务器状态、访问日志和安全告警,确保攻击不再发生。
查询流程图
graph TD
A[发现网站异常] --> B{初步判断};
B -- 无法访问/慢 --> C[检查服务器资源<br>(top, free, iftop)];
B -- 内容被篡改 --> D[检查网站文件<br>(find, grep)];
B -- 收到安全告警 --> E[查看云服务商/WAF日志];
C --> F{发现资源耗尽?};
F -- 是 --> G[判断为DDoS/CC攻击<br>(分析日志中的高频IP)];
F -- 否 --> H[检查Web服务器日志<br>(分析恶意URL/UA)];
D --> I{发现恶意文件/后门?};
I -- 是 --> J[定位Webshell/挖矿脚本];
H --> K;
J --> K[定位攻击类型和路径<br>(SQL注入/XSS/文件上传等)];
K --> L[处理: 清除后门、修复漏洞、加固系统];
L --> M[重新上线并持续监控];
希望这份详细的指南能帮助你有效地排查和处理网站被攻击的问题,如果问题复杂,建议寻求专业的网络安全公司或技术人员的帮助。
