跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Java中Apache利用状态码监控识别CC攻击的实战方法

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免费学习笔记(深入) ”;
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 47
,表示该IP在14:22分触发47次404。 结合mod_evasive或mod_security做主动拦截 仅靠日志分析属事后响应,需搭配模块实现自动防御: mod_evasive :配置
DOSSiteCount 50
(单站点每秒最多50请求)、
DOSSiteInterval 1
,超限即返回403并封禁IP 10秒 mod_security + CRS规则 :启用
REQUEST-912-DOS-PROTECTION
规则集,自动检测高频404/400请求并阻断 注意:避免误伤搜索引擎爬虫,建议对
User-Agent
含
Googlebot
、
Bingbot
的请求跳过限制 用GoAccess或ELK做可视化趋势分析 人工查日志效率低,推荐轻量方案: GoAccess :执行
goaccess /var/log/apache2/access.log --log-format=COMBINED --real-time-html
,浏览器打开即可查看“HTTP Status Codes”Top图表,点击筛选404/499时段 Logstash + Kibana :将status字段映射为keyword,设置告警:当“404数量同比昨日同一时段增长300%且持续5分钟”,自动邮件通知 关键指标建议监控:每分钟404占比 >15%、单IP每秒请求数 >20、5xx错误率突增至5%以上

相关文章