⭐ 推荐:社区规则条款 V1.0

网站防采集方案中 IP 信誉库怎么搭建?

GJ论坛站长
GJ论坛站长 管理员资深会员 👑黑卡会员
发布于 2026-10-18 11:00 ·2 浏览 ·0 回复
内容摘要

IP信誉库应作为带分数衰减的动态评分系统搭建,按采集、打分、存储、反馈四层实现,以行为、蜜罐、情报等数据累加评分并按阈值处置,热数据用Redis ZSET、布隆过滤器和ipset分层存储查询,单机即可支撑百万级IP且延迟低于5ms。

IP 信誉库的核心是一套能给每个 IP 打分、并让分数随时间自动衰减的动态系统,并非一份“黑名单”。它用“采集 → 打分 → 存储 → 反馈”四层结构搭建,单机 Redis + 布隆过滤器即可支撑百万级 IP、查询延迟控制在 5ms 以内。

IP 信誉库和普通黑名单有什么区别?

结论:黑名单只能给出“是/否”,信誉库则给出 0–100 的连续分值和衰减时间,能区分“刚被扫过一次”和“连续三天爆破”。

黑名单的问题是只进不出:一个 IP 被误封后永远在里面,而真实恶意 IP 换个出口就复活。信誉库给每个 IP 存 score 和 last_update 两个字段,分数按半衰期衰减,默认半衰期 7 天,公式为 score_now = score_old × 0.5^(Δt/7)。这样同一 IP 三天不再作恶,分数从 80 自然掉到 60 以下,自动解除限速。

IP 信誉库的数据从哪里来?

结论:数据源分为四类,权重从高到低为行为数据、蜜罐数据、情报订阅、网络属性。

  1. 自有行为日志(权重最高):验证码连续失败 3 次 +15,登录密码错误 5 次 +20,同一 IP 注册账号数超 10 个/天 +25,单 IP QPS 超过同 UA 中位数 5 倍 +10。
  2. 蜜罐与陷阱链接:页面里埋隐藏 <a> 链接(display:none),正常用户点不到,爬虫会跟进,命中一次 +40。
  3. 公开情报订阅:AbuseIPDB 置信度 ≥75 的 IP、Spamhaus DROP 列表、Tor 出口节点列表(每小时拉取一次)、公开代理池名单。命中 Tor 出口 +30,命中 IDC 机房段 +10。
  4. 网络属性兜底:ASN 归属(云厂商 ASN 加权)、IP 段聚合、是否为移动基站出口。

评分模型怎么设计?

结论:用“加法命中 + 乘法衰减”的简化模型即可,不必上机器学习;关键是分值区间要和处置动作一一对应。

建议初始分 0,命中累加,单 IP 分数上限 100。处置阈值分四档:

  • 0–30:正常放行;
  • 30–60:触发滑块验证码,或要求 JS 挑战;
  • 60–85:限速到 20 次/分钟,返回降级页面;
  • 85 以上:直接返回 403,并同步进 WAF/iptables 封禁列表。

每次正常行为要扣分,比如登录成功 −20、连续 24 小时无异常 −10,否则误伤会累积不散。分值一旦跨档,写入审计日志,方便回溯误封。

存储和查询怎么做?

结论:热数据放 Redis ZSET,冷明细放 RocksDB/MySQL,IP 段用 ipset 或 CIDR 表,三层各司其职。

Redis 里用 ZSET,member 是 IP,score 是信誉分,ZRANGEBYSCORE iprep 85 100 一条命令拿全部需封禁 IP,10 万级数据返回在 10ms 内。判断“是否在黑名单”用布隆过滤器前置,1 亿 IP 按 10 bit/元素、1% 误判率算,内存约 125MB,命中率 99% 的查询在这一层就返回了。

同步到网关时不要逐条 iptables 追加,用 ipset 的 hash:net 类型,10 万条占用约 8MB 内存,ipset add blocked 1.2.3.4 单条写入耗时微秒级,再用一条 iptables -I INPUT -m set --match-set blocked src -j DROP 引用。

单 IP 粒度过碎时按 /24 聚合:某个 /24 段内恶意 IP 占比超过 30%,整段基线分 +15,避免攻击者换段内 IP 绕过。

怎么避免误伤正常用户?

结论:白名单必须优先级最高,并且要专门为共享出口 IP 做例外,这是误杀的主要来源。

企业 NAT、高校出口、移动基站(一个 CGNAT 出口背后常有数千真实用户)都可能因为少数人行为把整段分数拉高。做法是:维护 ASN 白名单和已知 NAT 段列表,这些 IP 分数上限锁在 60,只触发验证码不直接封禁;同时开放申诉入口,人工确认后分数清零并加入 30 天观察名单,观察期内命中只加一半权重。

上线前先跑 7 天影子模式:只打分不处置,导出分数 ≥85 的 IP 人工抽检 200 条,误判率低于 5% 再开启拦截。

总结

IP 信誉库的可用性取决于“衰减”和“反馈”两个机制,并非取决于黑名单有多长:数据从行为日志和蜜罐采集,用加法命中加 7 天半衰期衰减算分,Redis ZSET 存热数据、布隆过滤器挡前置查询、ipset 同步到网关,阈值分四档对应放行、验证码、限速、封禁,再用 ASN 白名单和申诉通道兜住误伤。照这个结构,一台 4 核 8G 机器足够支撑日均千万级请求的站点。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2263.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~