apache access_log是识别ddos攻击最直接有效的数据源,通过分析ip请求频次失衡、路径高度集中、时间突增峰值、user-agent异常及referer缺失等特征,结合awk命令快速筛查头部ip、高频路径和分钟级请求量,可精准定位http flood等应用层攻击。

Apache 访问日志(access_log)是识别 DDoS 攻击最直接、最有效的数据源。它记录了每个 HTTP 请求的完整上下文,包括来源 IP、时间戳、请求路径、状态码、User-Agent 和响应大小等关键字段,能清晰反映流量异常模式。
看 IP 请求频次是否严重失衡
真实用户访问分布相对均匀,而 DDoS(尤其是应用层攻击如 HTTP Flood)常表现为极少数 IP 在极短时间内发起海量请求。
- 用命令快速筛查头部 IP:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -20 - 重点关注单 IP 每分钟请求数是否远超业务常态(例如 >500 次/分),尤其当多个高请求 IP 的 User-Agent 完全相同或为空(“-”)时,风险极高
- 注意区分 CDN 或代理 IP:若大量请求来自同一 CDN 节点 IP,需结合
X-Forwarded-For字段还原真实源地址(前提是 Apache 已配置记录该头)
查请求路径与行为是否高度集中
攻击者往往反复刷特定资源,暴露其自动化、无目的性特征。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 统计高频访问路径:
awk '{print $7}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10 - 警惕以下组合:
• 大量请求/wp-login.php、/api/health、/favicon.ico等非核心资源
• 高比例 404(扫描类)、499(客户端主动断连)、503(服务过载)响应码
• 请求方法异常集中,如 90% 以上为HEAD或OPTIONS(探测型)
盯时间维度是否存在突发峰值
DDoS 流量不是平缓增长,而是秒级突增,且持续时间短、强度大。
- 按分钟聚合请求量(需日志含标准时间格式):
awk '{gsub(/\[|:/," ",$4); print substr($4,1,16)}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10 - 对比历史基线:若某分钟请求数是平时均值的 5–10 倍以上,且伴随上述 IP 或路径异常,基本可判定为攻击
- 配合系统监控交叉验证:用
netstat -an | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10查看实时连接数,若与日志峰值时间吻合,可信度更高
验请求头与参数是否呈现机器特征
真实浏览器请求具备多样性,而自动化工具发出的请求往往高度雷同或刻意伪装。
- 检查 User-Agent 异常:
awk -F'"' '{print $6}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10
• 大量重复 UA(如 “sqlmap”、“masscan”、“Go-http-client/1.1”)
• 大量为空(“-”)或格式简陋(如 “Mozilla/5.0” 后无细节) - 关注 Referer 缺失率:正常流量中多数请求带有效 Referer,若某时段缺失率突然升至 80%+,可能为脚本直连
- 扫描恶意参数痕迹:
grep -i "union.*select\|script\|eval(" /var/log/apache2/access.log
虽属注入范畴,但高频出现也可能是混合攻击的一部分










