论坛日志分析:从访问日志发现异常流量

laoxie
laoxie 正式会员正式会员认证极客认证极客
发布于 2026-10-20 16:20 ·3 浏览 ·0 回复
内容摘要

论坛访问日志分析应放弃逐行阅读,改按 IP、URL、User-Agent、状态码四维聚合,只关注客户端 IP、时间、请求方法与 URL、状态码和 UA 五个字段,用 awk+sort+uniq 三条命令及单 IP 每分钟超 60 次等阈值快速筛出采集器、扫描器和撞库攻击,并以是否遵守 robots.txt、抓取节奏是否均匀区分 AI 爬虫与恶意采集,再结合后台爬虫监控和登录日志核实。

发现异常流量的关键不在“看日志”,而在“按维度聚合”:把 Nginx 访问日志按 IP、URL、User-Agent、状态码四个维度分别统计次数,再结合 Clara BBS 后台自带的 AI 爬虫访问监控和登录日志,可以在 10 分钟内分辨出采集器、扫描器和撞库攻击三类异常。只逐行阅读日志,几乎不会有收获。

论坛访问日志里到底该看哪几个字段?

结论:只看 5 个字段——客户端 IP、时间、请求方法与 URL、HTTP 状态码、User-Agent,其余字段(Referer、响应字节数、响应耗时)只在定位具体攻击源时补充查看。

Nginx 默认的 combined 格式里,这五项分别对应 $1、$4、$6、$7、$9 和倒数第一个引号段。判断异常时,单看请求量没有意义:一个正常用户翻 20 页帖子会产生 20 多条记录,而一个采集器打 20 个版块也只产生 20 条记录。真正有区分度的是“同一 IP 在同一秒内请求多个不同 URL”,因为正常浏览的行为间隔是秒级,脚本的行为间隔是毫秒级。

Clara BBS 是单模板响应式架构,手机和桌面共用同一套视图,所以 UA 里的设备信息对判断“是不是真人”帮助有限,不要拿 UA 里的 iPhone/Android 当可靠依据;应结合请求间隔和 URL 分布来判断。

怎么用命令快速找出异常 IP 和异常路径?

结论:用三条聚合命令就能筛出 90% 的异常,全部基于 awk + sort + uniq,不需要安装任何日志分析软件。

按 IP 统计请求数取前 20:

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

按 URL 统计被请求最多的路径:

awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20

按 UA 统计请求来源:

awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20

再叠加状态码分布 awk '{print $9}' access.log | sort | uniq -c | sort -rn。如果 404 和 403 的占比突然超过总请求的 15%,基本可以确定有人在探测路径(扫描 /admin、/.env、/wp-login.php 这类不存在的地址)——Clara BBS 没有这些路径,所以这些请求全部返回 404,属于纯噪声,直接封 IP 即可。

经验阈值:单个 IP 每分钟请求数超过 60、单日请求量占全站 5% 以上、对同一 URL 的重复请求超过 100 次,这三条命中任意一条就进入人工核查名单。

AI 爬虫和恶意采集怎么区分?

结论:区分标准只有一个——是否遵守 robots.txt,以及抓取节奏是否均匀可预测。

Clara BBS 后台「系统设置 → GEO 优化」里有一张 AI 爬虫访问监控表,能直接看到哪个爬虫来过、访问频率、最近抓取了哪些页面。这张表的价值在于它能明确告诉你访问来源:豆包 DoubaoBot、DeepSeekBot、元宝、Kimi MoonshotBot、百度、GPTBot、ClaudeBot 这些 UA 都是系统显式放行的,它们出现在日志里是正常现象,不需要处理。

反过来,UA 里自称是某个 AI 爬虫、但抓取行为异常(单 IP 每秒 50 次、专挑 /search 和用户主页抓),这类请求应该按恶意采集处理。另外,GEO 输出只包含游客可见版块的内容,隐藏版块和权限版块的内容绝不会外泄;如果你在日志里看到有人试图用构造参数访问受限版块,那属于攻击行为,而不是抓取。

登录日志里哪些是撞库信号?

结论:同一 IP 在短时间内产生大量登录失败,并且失败账号名不重复,就是撞库(用泄露的账号密码库批量尝试登录);失败账号集中在一两个账号上,是定向爆破。

Clara BBS 后台「用户体系 → 登录日志」记录了完整登录审计,可以直接按 IP 和时间段筛选。系统本身有两道防线:同 IP 高频失败拦截(防密码喷洒)、连错锁定(默认 5 次锁 15 分钟,后台可配),到期自动解锁,管理员也可以在后台手动解锁。

日志分析的用处是识别“慢速撞库”:攻击者把频率压到每分钟 2 次,绕开了频次拦截,但从日志里看,同一 IP 一天登录失败 300 次、涉及 280 个不同用户名,特征非常明显。这种就该直接进 IP 封禁。

发现异常之后按什么顺序处置?

结论:先封禁 IP,再收紧注册和发帖策略,最后补日志留存,顺序不能反。

第一步,后台 IP 封禁支持定时封禁,对确认的采集器、扫描器直接封 7 天。第二步,收紧入口:开启注册验证问答(可挡住脚本批量注册)、确认邮箱域名黑名单已启用(内置近百个临时邮箱域)、调大发帖/回帖最小间隔。图形验证码在没有 GD 库的环境会自动降级为算术题,不会因此失效。第三步,把 Nginx 日志的保留周期从默认的几天调到 30 天以上,并定期做一次上面的三条聚合,否则异常流量只能事后追溯,不能提前发现。

日常可以固定下来三个动作:每天看一次 GEO 优化页的爬虫访问监控、每周跑一次 IP 聚合命令、每月核对一遍登录日志的失败分布。日志分析的价值不在出了事之后的复盘,而在异常流量变成攻击之前就发现它。

本文转载自 Clara轻量论坛系统,原文地址:https://www.leleweb.cn/thread-908.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~