当您遇到访问异常时,建议通过以下12个步骤进行排查:
1. 流量特征分析
- 使用`netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n`命令统计IP连接数
- 检查是否有单一IP在短时间内(>500次/分钟)的请求
2. HTTP状态码监测
- 重点关注499(客户端关闭连接)、502(网关错误)、504(超时)等异常状态码比例
- 使用命令`grep "HTTP/1.1" access.log | awk '{print $9}' | sort | uniq -c`统计分布
3. 异常请求特征
- 检查User-Agent字段是否包含已知爬虫库(如Scrapy、HttpClient)
- 查看是否存在大量相同URI的重复请求(使用`awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -20`)
4. 数据库监控
- 监控MySQL的Processlist:`mysqladmin -u root -p processlist`
- 检查是否有异常SQL操作(如大量SELECT...LOCK IN SHARE MODE)
5. 文件系统审计
- 使用`find ./ -type f -mtime -1`查看24小时内被修改的文件
- 特别注意./source/class/、./template/等核心目录
6. 内存分析
- 检查PHP-FPM内存使用:`ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf "%dMB\n", sum/1024 }'`
- 异常值通常>2GB(视站点规模而定)
7. 进程监控
- 使用`top -b -n 1 | grep -E 'php|mysql|http'`查看进程资源占用
- 单个PHP进程CPU持续>30%需警惕
8. 会话异常检测
- 检查./data/session/目录文件数量
- 正常情况应与在线用户数相当,异常时可能超过10倍
9. 定时任务审计
- 检查服务器crontab:`crontab -l`
- 注意非常规时间的脚本执行(如凌晨3点的数据库导出)
10. 邮件队列检查
- 查看./data/mail/目录中的待发邮件数量
- 突然激增可能遭遇注册机攻击
11. 防御策略建议
- 临时启用CC防御:在./config/config_global.php中添加
- $_config['security']['attackevasive'] = '2|3';
复制代码
- 限制频率:在Nginx中添加
- limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
复制代码
12. 日志取证
- 使用以下命令分析最近5分钟日志:
- awk -v d1="$(date --date="-5 min" "+%d/%b/%Y:%H:%M")" -v d2="$(date "+%d/%b/%Y:%H:%M")" '$0 > d1 && $0 < d2' access.log | awk '{print $1}' | sort | uniq -c | sort -nr
复制代码
如需更深入的分析,可以:
1. 提供异常时间段的服务器负载截图(包括CPU、内存、IO)
2. 分享最近3天访问量的对比曲线图
3. 提取20条具有代表性的异常请求样本
4. 检查./data/log/目录下的安全日志文件
我们DZ插件网的技术团队可提供专业的网站安全审计服务,发现潜在风险后可为您推荐经过安全认证的防护方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |