打开网易新闻 查看精彩图片

10万条IP,是大多数网络设备的胃容量上限。再多,防火墙就开始消化不良。

一位叫Grujowmi的CISO(首席信息安全官)算过这笔账:公开的黑名单源有47个以上,质量参差不齐,重复率惊人。他试过手动维护,结果清单膨胀到数百万条,设备直接罢工。于是他写了个开源工具ShadowFortress,专门解决"吃太撑"的问题。

这不是简单的合并,而是给IP做信用评分。

黑名单的悖论:越多越没用

安全圈有个反直觉的现象。源数据越多,防御效果反而越差。

Grujowmi的原话是:「一个被10个不同源标记的IP,远比只出现在1个源里的IP更危险。」后者可能是误报、过期数据,或者某个小站点的情绪化封禁。前者才是共识。

ShadowFortress的核心算法基于此。它不取并集(union),而是算频率交集。IP出现的源越多,优先级越高。最终输出被硬限制在10万条——刚好卡在大多数网络设备的性能甜点区。

打开网易新闻 查看精彩图片

这个设计直接对标商业产品的痛点。FortiGuard Threat Intelligence、CrowdSec这些付费方案,要么绑定生态,要么API复杂。Grujowmi想要的是"裸IP文件",能直接塞进防火墙配置,零安装,零维护。

结果他做到了。ShadowFortress的输出文件托管在GitHub,raw URL直链,任何脚本或网络设备都能拉取。

三行命令解决战斗

三行命令解决战斗

技术细节往往暴露产品的真实态度。ShadowFortress的集成方式堪称极简主义样本。

FortiGate用户直接配External Block List(EBL),指向GitHub raw URL,FortiOS自己定时刷新。不需要写脚本,不需要cron job。Linux用户用curl+ipset,三行命令加载进内核。nftables用户照抄模板改个链名就行。Cisco环境丢给Python或Ansible解析。

没有客户端。没有认证。没有速率限制。Grujowmi的逻辑很产品经理:「你消费文件就行,别问我API文档在哪。」

但极简背后有脏活。去重、频率筛选、误报排除,这些都在服务端完成。用户拿到的已经是洗好的菜。

打开网易新闻 查看精彩图片

白名单是最后的保险

白名单是最后的保险

频率算法能降噪,但拦不住极端误报。比如某个IP段被大量源标记,只因为托管了被滥用的云服务——但同段里可能躺着你的上游供应商。

ShadowFortress在生成文件前过一遍白名单机制。Grujowmi没公开具体规则,只提到「排除会在我环境里触发误报的IP段」。这是典型的CISO视角:通用黑名单必须让位给业务连续性。

开源项目的可持续性通常看两点:维护意愿和社区反馈。ShadowFortress目前由Grujowmi个人维护,更新频率取决于上游源的变化。他没有承诺SLA,但代码结构清晰,fork和自建门槛极低。

一个细节值得玩味。项目名ShadowFortress明显致敬了FortiGate,但实现方式却是对商业威胁情报的"去品牌化"——剥离生态绑定,剥离销售话术,只剩IP和置信度。

这种剥离本身是一种态度。当安全预算收紧时,"够用且免费"的解决方案会重新获得话语权。ShadowFortress的10万条上限,既是技术妥协,也是产品宣言:防御的有效性不取决于数据量,而取决于信噪比。

你现在的防火墙黑名单有多少条?有没有算过其中多少是"只被一个源标记过"的噪音?