Apache访问日志是排查Web层异常的核心数据源,需聚焦IP、状态码、请求方法等关键字段,通过统计高频4xx/5xx、可疑UA、无Referer请求、URI规律性及时间地理关联分析识别扫描、爆破等恶意行为。

Apache 访问日志是排查 Web 层异常行为最直接、最可靠的原始数据源。关键不在于看多少条日志,而在于聚焦几个核心字段(IP、状态码、请求方法、URI、User-Agent、响应大小、Referer)并建立合理的筛选逻辑。
关注高频失败请求(4xx/5xx 状态码集中爆发)
连续出现大量 404、403、429 或 500、502 响应,往往不是偶然错误,而是扫描、爆破或资源耗尽的信号。
- 用
awk '{print $9}' access.log | sort | uniq -c | sort -nr | head -10快速统计状态码分布,重点关注非 200/304 的高频项 - 对 404 集中在
/wp-admin/、/phpmyadmin/、/api/v1/login等路径的请求,大概率是自动化探测 - 若同一 IP 在 1 分钟内触发 ≥10 次 403 或 429,可结合 mod_evasive 或 fail2ban 自动封禁
识别可疑的 User-Agent 和无 Referer 请求
真实浏览器请求通常带完整 UA 字符串且有 Referer(除首页直连外)。异常 UA 或缺失 Referer 是脚本行为的强提示。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 过滤典型恶意 UA:
curl/7.*/、python-requests/、sqlmap/、masscan、空 UA 或仅含“-”的 UA - 用
awk '$11 ~ /^"-"$/ {print $1, $7, $9}' access.log提取无 Referer 且非静态资源(如 .js/.css/.png)的请求,重点检查 POST /login 或 /api 路径 - 注意伪装成 Chrome 但 UA 中缺少
WebKit或Safari关键词的“仿冒 UA”,需结合请求频率交叉判断
追踪高频率、低价值请求模式
攻击者常通过高频请求试探接口边界、枚举 ID 或绕过限流,这类行为特征明显:IP 固定、URI 规律性强、响应体小、耗时短。
- 按 IP 统计请求数:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -5,再查这些 IP 的具体请求内容 - 识别 URI 规律性尝试,例如:
/user?id=1、/user?id=2、/user?id=3…… 可用awk '{print $7}' access.log | grep 'id=[0-9]\+' | head -20快速抽样 - 响应大小长期为 27、45、128 字节等固定小值(如 JSON 错误提示),配合 200 状态码,可能是接口探测成功后的批量调用
关联分析时间窗口与地理/IP 信誉
单条日志难定性,但将时间、IP、行为三者叠加,能显著提升判断准确率。
- 提取某 IP 在凌晨 2–4 点的全部请求:
awk '$1=="192.168.1.100" && $4 ~ /\[.*:0[2-4]/ {print}' access.log - 使用
geoiplookup或在线 API 查该 IP 所属地区,若来自高风险 ASN(如已知代理池、IDC 托管网段),可信度更低 - 比对威胁情报平台(如 AbuseIPDB)中的该 IP 报告记录,已有 3+ 次恶意报告则可直接标记为高危

















