跳至内容

解读数据

最容易误解的是,“以前观测到这个 IP”并不等于“现在仍在封禁这个 IP”。

采集是定期执行的,并非实时事件流。使用数据之前,最好先弄清楚一条观测记录代表什么、时间字段反映的是什么。

观测单位

一条观测记录是 source、jail 与 ip 的组合。若同一 IP 被两个 jail 或两个采集源检测到,则会保留为多条观测记录。

例如,同一个 IP 同时出现在 SSH 和 Nginx 的日志中,就会形成两条观测。因此观测总数不一定等于唯一 IP 数。

在统计中,observations 是观测记录数,ips 是唯一 IP 数。文本订阅源同样会对 IP 去重。

时间与状态

字段含义
first_seen该采集平台首次确认此地址的时间
last_seen最后一次确认此地址的采集时间
active = 1存在于最新快照的封禁列表中
active = 0在后续快照中已从列表移除
stale = 1该 jail 已超过 48 小时未被采集

这里记录的是采集系统看到状态的时间,不是 Fail2ban 实际执行封禁的瞬间。采集源停止更新,也不代表封禁已经解除。存在陈旧更新的 jail 会被排除在当前列表、统计和订阅源之外。通过查询接口和 active=all 可以查看过去的观测记录。

定期采集的局限

除每日生成报告外,每个采集源还会将其当前封禁列表写为 JSON。没有变化时发送基于哈希的心跳;有变化时则基于完整快照应用差异(diff)。

如果某个 IP 在两次快照之间被封禁又被解除,这套系统就不会留下记录。它不是逐条记录 Fail2ban 事件的审计日志。本 API 并不用于还原过去所有的封禁列表。记录仅从该采集平台开始观测时起存在。

国家、ASN 与组织

这些是来自 GeoIP(IP 地理位置)与 RDAP(注册数据)的附加信息。未知值为 null。国家代码与 ASN(自治系统编号)描述的是网络,不能用于判断发起请求者的国籍、居住地、隶属关系或身份。

公开的内容

公开 API 提供 IP 地址、采集源的公开标识、jail 名称、观测时间、状态以及网络附加信息。原始访问日志、请求体、账号名称、凭据以及管理用排除列表均不公开。

不要把观测数据直接导入永久封禁列表。 单条 IP 记录无法证明恶意意图;请结合检测规则与状态进行判断。共享线路与动态 IP 分配意味着,当前使用该地址的用户可能与观测时不同。

报告误报或规范问题

你可以通过 f2b-api GitHub 仓库 报告解释上的疑问或规范中的不一致之处。请勿公开凭据、原始日志或个人信息。在审核更正时,我们会区分 jail、观测时间以及问题发生的条件。