直接从Apache日志识别暴力破解需聚焦“高频+特定路径+POST方法+异常状态码”四信号,先定位登录接口(如/wp-login.php)筛选POST请求,再按时间窗口(如1小时内)统计IP频次,结合200/302/403等状态码及UA、Referer等特征综合研判。

直接从 Apache 访问日志里揪出暴力破解的 IP,核心是盯住“高频 + 特定路径 + POST 方法 + 异常状态码”这四个信号,而不是只看次数或只看 UA。
锁定目标登录接口并过滤 POST 请求
暴力破解通常集中在固定入口,比如 /login.php、/wp-login.php、/admin/login、/api/auth 等。先确认你站点实际使用的登录路径,再用 grep 精准筛选:
- grep "POST /wp-login.php" /var/log/httpd/access_log(CentOS)或 grep "POST /login.php" /var/log/apache2/access.log(Ubuntu)
- 若使用 Nginx,日志路径和字段顺序略有不同,但逻辑一致:找含 POST 和登录路径的行
按 IP 统计请求频次并设定阈值
暴力破解的本质是短时间大量尝试,单靠总次数容易误判。建议以“10 分钟内”或“1 小时内”为窗口统计:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
提取最近一小时的登录 POST 请求,并按 IP 排序计数:
awk -v d="$(date -d '1 hour ago' '+%d/%b/%Y:%H')" '$4 ~ /\[.*"POST/ && $4 ~ d {print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr - 超过 50 次/小时的 IP 值得重点关注;若某 IP 在 5 分钟内发了 30+ 次 POST 到 /wp-login.php,基本可判定为爆破
结合状态码与响应体大小交叉验证
真实用户登录失败后通常会跳转或刷新页面,而爆破工具多直接接收服务器返回内容。观察以下组合:
- 大量 200 OK 但响应体极小(如 $10 < 200):可能是返回 JSON {"success":false} 或空页,工具正解析结果
- 大量 302 Found 跳转到 /login.php?error=1 类路径:说明密码错误逻辑被反复触发
- 混杂 403 或 429:可能已被临时限速,但仍持续重试
排除正常行为,避免误封
有些高频请求未必是攻击,需人工或脚本辅助甄别:
- 检查该 IP 是否也访问首页、CSS/JS 等静态资源——若只刷登录接口,嫌疑极高
- 查看 User-Agent:出现 python-requests、curl、masscan 或空白 UA,基本可标记为非浏览器
- 对比 Referer:真实用户通常有来源页;爆破请求的 Referer 多为 -(空)或伪造的本站路径

















