AI摘要
前言
前段时间给博客加了一个访客统计才发现有好多采集IP等,特点就是:一秒读一个页面,两分钟就把我网站所有页面、标签、文章都访问了个遍,还有广东的更过分,多个ip同时访问等,总之不像是真人访问的。
然后我就找了一个Typecho黑名单拦截的插件,十年前的BlockIP,作者就已经很久没更新了。我就想要是自动拦截并加入黑名单的应该很好用,于是就进行了改造。
改造期间我在知乎问了一下这个情况,知道了一个叫长亭雷池的,但是它里面的智能防护太严格,甚至把我自己的后台的编辑文章,外观设置等很多行为都进行检测拦截,然后设置了白名单效果也不太好。可能完美的设置需要升级或者我还没弄明白。所以就继续改造。
到现在自己也内测了几周,感觉没什麽问题了,就整理出这个AdvancedBlockIP。由于拦截依据和频率等检测出于我自己的看法经验,可能效果欠佳,希望各位能够在Github提Issues或者在评论区提出
介绍
在当今互联网环境下,网站安全变得越来越重要。恶意爬虫、暴力破解、垃圾评论等问题时刻威胁着我们的网站。今天给大家介绍一款强大的Typecho安全插件——高级IP访问控制插件,它能够智能识别并拦截各种网络威胁。
插件预览
后台控制面板
被拦截效果(可自定义html)
插件特色功能
智能防护模式
插件默认启用智能模式,不需要复杂配置就能自动识别以下威胁:
威胁类型 | 检测机制 | 自动处理 |
---|---|---|
频率异常 | 1秒内访问2个不同URL 5秒内访问3次及以上 10秒内访问6次及以上 |
自动加入黑名单并标记 |
UA异常 | 检测可疑的用户代理 识别爬虫工具、脚本程序等 |
自动加入黑名单并标记 |
来源异常 | 识别包含攻击关键词的来源页面 | 自动加入黑名单并标记 |
行为模式异常 | 分析访问行为,发现自动化攻击模式 | 自动加入黑名单并标记 |
精确的IP规则匹配
支持多种IP地址格式,满足不同场景需求:
规则类型 | 格式示例 | 说明 |
---|---|---|
单个IP | 192.168.1.100 |
精确匹配单个IP地址 |
IP范围 | 192.168.1.1-50 |
匹配指定范围内的IP |
单个通配符 | 192.168.1.* |
匹配最后一段的所有IP |
多个通配符 | 192.168.*.* |
匹配多段的所有IP |
CIDR格式 | 192.168.1.0/24 |
匹配指定网段的所有IP |
行内注释 | 192.168.1.100 # 备注 |
支持在规则后添加注释 |
自动化管理
- 自动黑名单:智能检测触发时自动将威胁IP加入黑名单
- 分类标记:按检测类型自动标记【频率异常】【UA异常】【来源异常】【行为异常】
- 访问间隔控制:防止过于频繁的访问请求
- 实时日志记录:详细记录所有拦截事件
- 可视化统计:24小时趋势图表,一目了然
安装及更新步骤
- 将插件文件解压到Typecho的插件目录:
/usr/plugins/AdvancedBlockIP/
- 在Typecho后台的"控制台 → 插件"页面找到"AdvancedBlockIP",点击激活
- 激活后插件会自动创建数据表,默认已选择智能模式,基本上可以直接使用
- 在控制台中找到IP防护控制台,进入可查看详细信息
- 直接用新版本覆盖掉旧版本即可
配置建议
工作模式选择
模式 | 适用场景 | 特点 |
---|---|---|
智能模式 | 大多数网站 | 黑白名单同时生效 自动识别威胁 推荐使用 |
黑名单模式 | 开放性网站 | 默认允许访问 仅拦截指定IP |
白名单模式 | 内部系统 | 默认拦截访问 仅允许指定IP |
黑名单处理方式
处理方式 | 适用场景 | 效果 |
---|---|---|
完全禁止访问 | 恶意攻击IP | 彻底拦截黑名单IP 显示拦截页面 |
限制访问频率 | 爬虫、采集器 | 限制访问间隔 减轻服务器压力 |
访问间隔设置
- 默认值:10秒
- 高流量网站:5-7秒
- 个人博客:15-20秒
- 注意:此设置仅影响黑名单IP的访问频率限制
调试模式
- 记录详细的运行日志到服务器error_log
- 包含IP访问记录、规则匹配过程、智能检测触发原因等
- 建议仅在排查问题时开启,避免日志文件过大
"访问过频"和"频率异常"详细介绍
插件提供了两种不同的频率控制机制,它们有着不同的使用场景和工作原理:
两种频率控制机制对比
特性 | 访问过频(Rate Limiting) | 频率异常(Frequency Anomaly) |
---|---|---|
适用对象 | 仅黑名单中的IP | 所有非白名单IP |
工作模式 | 黑名单处理模式为"限制访问频率"时生效 | 智能模式下自动生效 |
实现原理 | 检查访问间隔是否小于设定值 | 基于行为模式分析,检测异常访问模式 |
检测方式 | 简单时间间隔检测 | 多维度分析(访问次数、URL数量等) |
触发条件 | 访问间隔小于设定值(默认10秒) | 1秒内访问2个不同URL 5秒内访问3次及以上 10秒内访问6次及以上 |
特殊处理 | 黑名单IP限制更严格(间隔为普通设置的10%) | 自动将IP加入黑名单,记录检测类型和时间 |
处理方式 | 临时拦截访问,不加入黑名单 | 永久加入黑名单并拦截 |
实现函数 | isAccessTooFrequent() |
checkFrequencyAnomaly() |
配置方式 | 可在插件设置中调整 | 固定规则,不可配置 |
日志标记 | "黑名单频率限制" | "智能检测:频率异常" |
使用场景 | 数据采集程序限速 监控但不完全封禁的IP 合法但高频访问的用户 |
暴力破解攻击 恶意爬虫和扫描器 自动化攻击工具 DDoS攻击尝试 |
两种机制的协同工作
这两种机制在插件中协同工作,形成了两层防护:
-
第一层防护(频率异常检测):
- 主动识别恶意行为
- 自动将威胁IP加入黑名单
- 提供持久性的保护
-
第二层防护(访问过频控制):
- 对已知威胁IP实施访问频率控制
- 防止黑名单IP过度消耗服务器资源
- 允许合法但频繁的访问以受限方式进行
这种双层防护设计使得插件能够既有效拦截真正的威胁,又不会过度影响正常但频繁的访问需求。
插件工作流程
访问检测优先级(从高到低)
- 白名单检查 - 最高优先级,直接放行
- 黑名单检查 - 第二优先级
- 完全禁止模式:直接拦截
- 频率限制模式:智能检测 → 频率控制
- 模式处理
- 智能模式:仅智能检测,通过后直接放行
- 白名单模式:非白名单直接拦截
- 黑名单模式:记录访问并放行
详细工作流程图
┌───────────────────┐
│ 访问请求开始 │
└────────┬──────────┘
│
▼
┌───────────────────────┐ 是 ┌───────────────┐
│ 检查IP是否在白名单 ├────────────►│ 直接放行 │
└────────┬──────────────┘ └───────────────┘
│ 否
▼
┌───────────────────────┐ 否 ┌───────────────────────┐
│ 检查IP是否在黑名单 ├────────────►│ 检查当前工作模式 │
└────────┬──────────────┘ └───────────┬───────────┘
│ 是 │
▼ ▼
┌───────────────────────┐ ┌───────────────────────────────┐
│ 检查黑名单处理模式 │ │ 智能模式 │白名单模式│黑名单模式│
└────────┬──────────────┘ └─────┬─────┴────┬────┴────┬────┘
│ │ │ │
▼ ▼ ▼ ▼
┌───────────┐ 完全禁止 ┌───────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│选择处理方式├───────────►│ 拦截访问 │ │智能检测 │ │ 拦截访问│ │记录放行 │
└─────┬─────┘ └───────────┘ └────┬────┘ └─────────┘ └─────────┘
│限制频率 │
▼ ▼
┌─────────────────────┐ 否 ┌─────────────────┐ 是 ┌─────────────┐
│ 检查访问是否过于频繁 ├───────────────►│ 检测到威胁行为? ├───────►│ 加入黑名单 │
└────────┬────────────┘ └─────────────────┘ └──────┬──────┘
│是 │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│拦截访问(访问过频) │ │ 拦截访问(智能检测) │
└─────────────────────┘ └─────────────────────┘
控制台功能
控制台页面位于后台"控制台"菜单下的"IP防护控制台",提供以下功能:
功能区块 | 内容 | 作用 |
---|---|---|
统计概览 | 今日拦截数 总计拦截数 自动加黑名单数 |
快速了解安全状况 |
趋势图表 | 24小时拦截趋势图 | 直观展示安全态势 |
拦截原因 | 各类拦截原因统计 | 分析威胁类型分布 |
活跃IP | 拦截次数最多的IP | 识别持续攻击源 |
详细日志 | 完整拦截记录 分页浏览 一键清空 删除本页日志 |
深入分析安全事件 |
更新日志
版本更新对比
版本 | 更新时间 | 主要新增功能 | 主要优化内容 |
---|---|---|---|
v2.3.0 | 2025.06.23 | 兼容性增强 | 后台菜单项修复 适配器改进 旧版Typecho支持 |
v2.2.0 | 2025.06.06 | 调试模式 | IP规则匹配机制优化 智能检测改进 频率异常检测精度增强 UA和Referer检测增强 安全隐患修复 代码重构 |
v2.1.0 | 2025.05.13 | 访问间隔控制功能 黑名单处理模式选择 独立安全控制台 24小时拦截趋势图 |
日志记录机制改进 统计信息显示优化 性能和稳定性提升 |
v2.0.0 | 2025.04.05 | 智能检测模式 多种IP规则格式支持 自动黑名单功能 实时日志记录 24小时统计图表 控制台管理界面 |
- |
v2.3.0 最新版详细更新内容 (2025.06.23)
类别 | 更新内容 | 说明 |
---|---|---|
修复 | PHP 8.0兼容性优化 | 修复了在PHP 8.0环境中使用插件的兼容性问题 |
修复 | Typecho 1.2.1支持 | 确保插件与Typecho 1.2.1版本完全兼容 |
优化 | 后台控制台菜单修复 | 改进了控制台菜单项的添加方式,解决404错误 |
优化 | 类加载适配器增强 | 增强了与各种环境的兼容性,降低报错概率 |
修复 | 插件激活/停用修复 | 修复了多个与插件生命周期相关的问题 |
优化 | 错误处理机制改进 | 改进了错误处理,提供更详细的错误信息 |
v2.2.0 更新内容 (2025.06.06)
类别 | 更新内容 | 说明 |
---|---|---|
优化 | IP规则匹配机制优化 | 改进规则解析机制,正确处理行内注释,提高匹配准确性 |
优化 | 智能检测改进 | 调整频率异常检测阈值,降低误判率 |
优化 | 频率异常检测精度增强 | 优化检测算法,提高识别准确率 |
优化 | UA和Referer检测增强 | 更新特征库,改进异常检测逻辑 |
新增 | 调试模式 | 新增可选的调试日志记录,便于排查问题 |
修复 | 安全隐患修复 | 修复多处潜在的安全漏洞 |
优化 | 代码重构 | 优化核心检测流程,提升执行效率和稳定性 |
使用建议
阶段 | 建议操作 | 说明 |
---|---|---|
初次使用 | 添加白名单 选择智能模式 |
避免自己被拦截 获得全面保护 |
日常维护 | 定期查看日志 清理过期记录 |
了解安全状况 优化数据库性能 |
遇到问题 | 开启调试模式 检查规则配置 |
获取详细日志 排查配置错误 |
性能优化 | 合理设置间隔 定期清理日志 |
根据流量调整 减少数据库负担 |
推荐配置
- 工作模式:智能模式(自动识别威胁)
- 黑名单处理:根据需要选择完全禁止或频率限制
- 访问间隔:10秒(仅影响黑名单IP)
监控要点
- 智能检测:重点关注自动拉黑的IP
- 黑名单管理:定期检查黑名单中的IP
- 日志维护:定期清理过期日志
- 白名单维护:及时将重要IP加入白名单
常见问题
Q: 如果误拦截了正常用户怎么办?
A: 将该IP添加到白名单或者手动从黑名单中删除即可,白名单优先级最高。
Q: 插件会影响搜索引擎收录吗?
A: 不会,插件内置了对主流搜索引擎爬虫的识别和保护。
Q: 可以同时使用多种工作模式吗?
A: 智能模式已经整合了黑白名单功能,推荐直接使用智能模式。
Q: 日志会不会越来越多占用空间?
A: 可以在控制台页面一键清空历史日志,或者定期清理。
可能有些同学安装启用后会提示“插件启用失败”,只需刷新页面再返回一下,插件即可启用成功。
总结
最新版本v2.2.0优化了IP规则匹配和智能检测机制,显著提高了拦截的准确性,减少了误判,同时新增的调试模式也让问题排查变得更加简单。无论你是个人博客还是商业网站,这款插件都能为你提供可靠的安全保护。
有使用问题或者改进建议请在评论区提出
Github地址:
快速下载:
7 条评论
厉害啊,自己写插件
嘿嘿,试一下
已经用上了,真的能保护网站,27.148.54.137被禁止访问୧(๑•̀⌄•́๑)૭了
常来|´・ω・)ノ
kan kan ,喵喵
哥们,你那个IP控制台能显示出来吗
看看