Apache不直接识别CC攻击,但可通过分析日志中404/499/503等状态码突增、单IP高频请求等异常模式实现监控,并结合mod_evasive、ModSecurity自动拦截及GoAccess/ELK可视化告警。
Apache本身不直接识别CC攻击,但可通过分析访问日志中的HTTP状态码分布、请求频率和异常模式,结合工具或脚本实现有效监控。核心思路是:
高频404、499、503等非200状态码突增,往往意味着扫描、爬虫或CC攻击正在进行
。
关注关键状态码的异常波动
CC攻击常伴随大量无效请求,导致特定状态码集中出现:
404 Not Found
:攻击者暴力遍历路径(如/wp-admin/、/phpmyadmin/)时大量触发,单IP分钟级出现50+次404需警惕
499 Client Closed Request
:Nginx特有,但若Apache前置Nginx,该码激增说明客户端频繁中断连接,是典型CC特征
503 Service Unavailable
:后端超载或限流触发,持续出现可能表明资源已被耗尽
200 OK但响应极小(如:配合User-Agent为空或非常规值,可能是自动化工具刷首页
用awk + sort快速筛查异常IP
在Apache默认日志格式下(%h %l %u %t \"%r\" %>s %b),可实时提取高危行为:
统计每分钟各IP的404次数(过去10分钟):
立即学习
“
Java免费学习笔记(深入)
”;
输出示例:
,表示该IP在14:22分触发47次404。
结合mod_evasive或mod_security做主动拦截
仅靠日志分析属事后响应,需搭配模块实现自动防御:
mod_evasive
:配置
(单站点每秒最多50请求)、
,超限即返回403并封禁IP 10秒
mod_security + CRS规则
:启用
规则集,自动检测高频404/400请求并阻断
注意:避免误伤搜索引擎爬虫,建议对
含
、
的请求跳过限制
用GoAccess或ELK做可视化趋势分析
人工查日志效率低,推荐轻量方案:
GoAccess
:执行
,浏览器打开即可查看“HTTP Status Codes”Top图表,点击筛选404/499时段
Logstash + Kibana
:将status字段映射为keyword,设置告警:当“404数量同比昨日同一时段增长300%且持续5分钟”,自动邮件通知
关键指标建议监控:每分钟404占比 >15%、单IP每秒请求数 >20、5xx错误率突增至5%以上
tail -n 5000 /var/log/apache2/access.log | \
awk -F' ' '$9 == 404 {print substr($4,2), $1}' | \
awk '{time=$1; ip=$2; count[time,ip]++}
END {for (key in count) {split(key,a,SUBSEP); print a[1],a[2],count[key]}}' | \
sort -k1,1 -k3,3nr | head -20[01/Jan/2024:14:22:30 192.168.1.100 47DOSSiteCount 50DOSSiteInterval 1REQUEST-912-DOS-PROTECTIONUser-AgentGooglebotBingbotgoaccess /var/log/apache2/access.log --log-format=COMBINED --real-time-html