FSF系统管理员用反应机制封锁僵尸网络
速览
FSF的系统管理员采用反应式防御机制来应对僵尸网络攻击。这种方法可能涉及实时监测和自动响应。该举措提升了FSF基础设施的安全性。
AI 深度解读
背景
自由软件基金会(FSF)的系统管理员长期面临 DDoS 攻击和恶意爬虫的困扰。近年来,随着用于训练大语言模型(LLM)的激进爬虫日益增多,FSF 需要投入大量资源来抵御攻击者。在此过程中,他们经历了多次扩展性成长阵痛,并最终采用了一款名为 reaction 的工具,大幅提升了自动化防御能力。本文由 FSF 系统管理员撰写,发表于 Hacker News,详细介绍了他们如何从 fail2ban 逐步迁移至 reaction,并分享了配置优化经验。
核心内容
FSF 系统管理员观察到爬虫流量的异常模式,并据此编写正则表达式。通过匹配正则表达式,他们获得了大量 IP 地址列表。进一步查询这些 IP 的归属地后发现,部分爬虫使用了住宅 IP 地址组成的僵尸网络,以加速爬取并规避检测。他们怀疑其中一个僵尸网络名为 Vo1d,由运行了被篡改应用的智能电视组成。数字取证调查组织 Qurium 的研究人员有意识地运行了一个节点并发布了数据,FSF 因此确认至少部分攻击 GNU Savannah(FSF 的软件托管平台)的僵尸网络流量确实来自 Vo1d/Popa 僵尸网络。
最初,他们将正则表达式配置到 fail2ban 中。fail2ban 是一个能读取日志流并在满足条件时执行动作(通常是用 UFW 防火墙封禁 IP)的程序。但很快他们发现,UFW 的防火墙规则数量上限在约 65,000 条时出现性能下降。他们了解到 ipset 后,将 fail2ban 配置为将发现的 IP 添加到 ipset 集合中,从而能够容纳多达 500 万条规则而不出现不稳定。
然而,使用 fail2ban + ipset 一段时间后,他们又遇到了 Python 和 SQLite 架构的瓶颈。于是他们多次用 BASH、awk、Perl 等编写快速补丁脚本,直接从日志中匹配模式并添加规则到 ipset,避免中间数据库。但这些临时脚本在模式增多后难以管理,而且并非所有模式都应在首次出现时立即封禁,因此他们仍需要一个类似 fail2ban 的解决方案。
他们寻找近年编写的 fail2ban 替代品,发现不少项目只是一次性展示,并非长期维护的解决方案。最终,他们在 Framasoft 的 Framagit 上找到了一个名为 reaction 的项目,由开发者 ppom 编写。
配置 reaction 需要一定的学习过程。与 fail2ban 不同,reaction 不附带可直接运行的配置,用户必须根据示例文档自行构建符合需求的配置。当时没有 ipset 的示例,所以他们自行编写了一个。这种“从头构建”的方式最终被证明是很好的,因为配置中只包含所需内容,几乎没有冗余。
在初始实现遇到扩展性问题后,他们开发了一个更快的方案:reaction 关闭进程时将 IP 集合导出到磁盘,启动进程时恢复这些集合。这样服务重启(应用新规则)几乎可以瞬间完成。他们将两个配置文件上游贡献给了 reaction 的 Wiki,让所有人受益。reaction 的入门文档现已采纳了他们提出的方法。
文章最后,FSF 感谢了自由软件支持者的资助,并呼吁更多人成为 FSF 的 associate member(副会员),以帮助继续保护软件自由。系统管理员表示,许多同行知道 fail2ban,但了解 reaction 的人还不够多。他们非常感谢 ppom 的帮助以及 reaction 这一卓越项目。目前 reaction 承担了大部分自动化工作,使得他们的网站保持在线。
关键要点
- 攻击来源:FSF 遭遇的爬虫流量中,部分来自名为 Vo1d/Popa 的僵尸网络,该僵尸网络由被篡改的智能电视组成,使用住宅 IP 地址进行爬取,难以通过传统方法封禁。
- 从 fail2ban 到 ipset:fail2ban 搭配 UFW 时,规则数超过 65,000 条即出现性能下降;改用 ipset 后,集合可容纳 500 万条规则,稳定性良好。
- fail2ban 的架构瓶颈:fail2ban 基于 Python 和 SQLite 架构,在处理大规模 IP 集合时存在限制,无法满足 FSF 的需求。
- 临时脚本的局限性:FSF 曾用 BASH、awk、Perl 等编写临时脚本,但模式增多后管理困难,且无法实现“首次出现不封禁”的灵活策略。
- reaction 的发现与配置:reaction 是 ppom 开发的 fail2ban 替代品,位于 Framagit 上。它不提供开箱即用的配置,需要用户按需构建。FSF 自行编写了 ipset 支持示例并贡献至上游。
- 性能优化:通过将 IP 集合在重启时导出/恢复,reaction 实现了近乎瞬时的服务重启,可以快速应用新规则。
- 开源贡献:FSF 将他们的配置发布到 reaction 的 Wiki,并被该项目采纳为入门文档。
意义与影响
- 为开源基础设施提供可复用的防御方案:FSF 作为重要的自由软件组织,其防御经验对其他被爬虫和 DDoS 困扰的网站(尤其是小型或社区运营的站点)具有直接参考价值。reaction 的配置和优化方法已被公开,降低了学习门槛。
- 推动 fail2ban 替代工具的发展:reaction 的出现填补了 fail2ban 在处理大规模 IP 集合时的性能空白。FSF 的实际使用和上游贡献,有助于 reaction 项目获得更多关注和持续维护。
- 揭示僵尸网络的新形态:Vo1d/Popa 僵尸网络利用智能电视等 IoT 设备,说明攻击者正不断寻找新的资源池。FSF 的案例提醒运维人员,传统的 IP 黑名单机制可能无法应对此类分布式住宅 IP 攻击,需要结合模式识别和灵活封禁策略。
- 强调开源协作的价值:FSF 通过社区支持(包括 Qurium 的公开数据)确认了攻击来源,又将自身改进回馈给 reaction 项目,体现了自由软件生态中“问题发现—技术解决—共享改进”的良性循环。文章末尾的会员招募也呼应了这种可持续支持模式。
