惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
S
Securelist
Know Your Adversary
Know Your Adversary
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
W
WeLiveSecurity
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
博客园 - Franky
S
Security Affairs
博客园 - 司徒正美
V
V2EX
K
Kaspersky official blog
T
Threatpost
NISL@THU
NISL@THU
博客园 - 叶小钗
Help Net Security
Help Net Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
小众软件
小众软件
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
Jina AI
Jina AI
爱范儿
爱范儿
罗磊的独立博客
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint

Planet GNU

Fundraiser extended. Help us reach our goal and get an anti-surveillance cover — Free Software Foundation — Working together for free software LibreLocal meetup in Noor, Iran — Free Software Foundation — Working together for free software Stop the GUARD Act and age verification laws worldwide — Free Software Foundation — Working together for free software GNU Screen - News [Savannah] findutils - News [Savannah] Free Software Directory meeting on IRC: Friday, July 17, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, July 10, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU CSSC - News [Savannah] GNU Guix: ‘guix substitute‘ and ‘guix pull‘ Vulnerabilities We're campaigning for free software. We need your help — Free Software Foundation — Working together for free software June GNU Spotlight with Amin Bandali featuring eighteen new GNU releases: Linux-libre, Direvent, and more! — Free Software Foundation — Working together for free software LibrePhone update, organizing locally, and more in issue 48 of the digital Bulletin — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, July 3, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software Unifont - News [Savannah] GNU Parallel - News [Savannah] Ten stories from around the world: LibreLocal 2026, part one — Free Software Foundation — Working together for free software Informing and defending — Free Software Foundation — Working together for free software Informing and defending — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, June 26, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU Guix: One year with Codeberg Statement regarding GNU Savannah security reports — Free Software Foundation — Working together for free software longintrepr.h – gbenson.net GNU CSSC - News [Savannah] GNU Press Shop open now through July 19 — Free Software Foundation — Working together for free software Past, present and future — Free Software Foundation — Working together for free software Free Software Directory meeting on IRC: Friday, June 19, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNU Taler Free Software Directory meeting on IRC: Friday, June 12, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] GNU direvent - News [Savannah] GNU Libtool - News [Savannah] Nominate a person or project by July 12 — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] Freie/libre/libero/liber software, for sovereignty and freedom — Free Software Foundation — Working together for free software FSD meeting and weekly recap 2026-05-29 — Free Software Foundation — Working together for free software GNU FreeIPMI - News [Savannah] Free Software Directory meeting on IRC: Friday, June 5, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software May GNU Spotlight with Amin Bandali featuring eleven new GNU releases: GnuPG, G-Golf, and more! — Free Software Foundation — Working together for free software Free software activities in May 2026 GNUtrition - News [Savannah] Free Software Directory meeting on IRC: Friday, May 29, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software GNUtrition - News [Savannah] GNU Parallel - News [Savannah] Thinking about life - chat with Protesilaos Forty-six free software meetups on six continents — Free Software Foundation — Working together for free software ffs 0.2.2 released - bandali GNU Taler Docker images by age or size – gbenson.net Free Software Directory meeting on IRC: Friday, May 22, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software FFS code review and Emacs extensibility with Protesilaos GNUtrition - News [Savannah] Free Software vs malware and the need for reverse engineering — Free Software Foundation — Working together for free software GNU Guix: Time travel without borders GNUtrition - News [Savannah] Free Software Directory meeting on IRC: Friday, May 8, starting at 12:00 EDT (16:00 UTC) — Free Software Foundation — Working together for free software FFS code review with Protesilaos Emacs Chat with Sacha Chua FSD meeting and weekly recap 2026-05-01 — Free Software Foundation — Working together for free software April GNU Spotlight with Amin Bandali featuring nineteen new GNU releases: Parallel, Time, and more! — Free Software Foundation — Working together for free software GNU Taler www.gnu.org - News [Savannah] It's May, and we've been keeping busy — Free Software Foundation — Working together for free software GNU Health - News [Savannah] GNU Parallel - News [Savannah] Nonfree and unethical — Free Software Foundation — Working together for free software GNU sed - News [Savannah] GNU Core Utilities - News [Savannah] GNU Health - News [Savannah] GNU Taler GNU Health - News [Savannah] You cannot use the GNU (A)GPL to take software freedom away — Free Software Foundation — Working together for free software GNU Time - News [Savannah] GNU Health - News [Savannah] Trisquel 12.0 "Ecne" release announcement | Trisquel GNU/Linux GNU Parted - News [Savannah] GNU Health - News [Savannah] GNU Taler Parabola GNU/Linux-libre - News: iptables-legacy www.gnu.org - News [Savannah] GNU Parallel - News [Savannah] GNU remotecontrol - News [Savannah] GNU Taler Autoconf - News [Savannah] LibreDWG - News [Savannah] GNUnet hello - GNU greeting package GNU TeXmacs - News [Savannah] Unifont - News [Savannah] Engineering and Certification Manager at the Free Software Foundation — Free Software Foundation — Working together for free software PSPP - News [Savannah] PSPP - News [Savannah] texinfo - GNU documentation system GNU Guix: The 64-bit Hurd is Here! MediaGoblin 0.15.0 | MediaGoblin The FSF announces global call for FSF's LibreLocal 2026 meetups — Free Software Foundation — Working together for free software GNU Parallel - News [Savannah] GNU Guix: Result of Sustain and Strengthen Fundraising Jose E. Marchesi: First package written in Algol 68 lands in Gentoo Jose E. Marchesi: Algol 68 support in VS Code Jose E. Marchesi: godcc 1.0 released
How the FSF sysadmins block botnets with reaction — Free Software Foundation — Working together for free software
by Michael McMahon Contributions · 2026-07-10 · via Planet GNU

Published on Jul 09, 2026 11:29 AM

I have written about the FSF facing DDoS attacks several times, including on doing our part to clean up the internet and on Uptime Kuma, as well as "Defending Savannah from DDoS attacks". But I realized recently that I left out an important tool that we use extensively. Today I will talk about reaction. With the rise of aggressive scrapers building datasets to train LLMs, we needed to invest a lot of resources into thwarting the attackers. During this journey, we had several growing pains.

We noticed patterns in the scrapers that were abnormal, which gave us material for writing regular expressions. Searching for the regular expression then gave us a large lists of IP addresses. Looking up the origin of those IP addresses revealed that some of the crawlers were using botnets of residential IP addresses to scrape faster and avoid detection.

We looked for what kinds of botnets might be generating the kind of traffic that we were seeing, and one that we suspected was called the "Vo1d" botnet, comprised of smart TVs running some sort of compromised app. Recently, more information has come out about the Vo1d/Popa botnet. Security researchers at Qurium, a digital forensics investigation organization, intentionally ran a node and published the data. We got confirmation that at least some of the botnet traffic hitting GNU Savannah was originating through the Vo1d/Popa botnet.

We placed our regular expressions in fail2ban, and found that we were hitting the maximum rules that could be added to UFW firewall rules on our systems which showed degradation around 65,000 rules. fail2ban is a program that can read the stream of log files and perform actions when certain conditions are met. The actions are typically banning an address with a firewall like UFW, which blocks or allows connections to and from a server. We learned about ipset and configured fail2ban to add IP addresses that it found to IP sets. Using ipset, we kept building larger IP sets and did not find instability with as large as five million rules.

We used fail2ban with ipset for a while but ran into limits of its architecture with Python and SQLite. We rolled our own solutions as a quick patch several times with BASH, awk, Perl, etc. to find the address matching the pattern and add the rule to ipset without an additional intermediary database. The custom scripts worked for a moment, but it became difficult to manage when we had to run several little scripts as more patterns appeared. Not all of the patterns should be banned on first appearance either so we needed a solution like fail2ban. We looked for fail2ban alternatives written recently. We found several, but many of them were written as one-off showcases rather than well-maintained solutions that would last. We eventually found a promising project on Framasoft's forge Framagit called reaction written by ppom.

It took us a bit of time to understand how to configure reaction. Unlike fail2ban, reaction does not come with a working configuration and you must build your own configuration with what is relevant to your needs from example documentation. There was not an example for using ipset so we had to build one. Overall, this approach is very good because we now have a configuration that has everything we need and very little that we do not need.

After we ran into scaling issues with our initial implementation, we developed a much faster implementation where the reaction shutdown process would export the IP sets to disk and the reaction startup process would restore the IP sets. This allowed us to have nearly instantaneous restarts of the service to apply new rules. We published both of our configurations upstream to reaction's wiki so that everyone can benefit from it. reaction's getting started documentation now leads to the method that we proposed.

This work is not possible without your support. Because of free software supporters just like you, we can continue to find new patterns, block crawlers and mitigate DDoS attacks, and share our improvements with everyone. We know not everyone is in a position to give, but if you can, support our efforts by joining the FSF as an associate member. An associate membership is a great show of support we can rely on. The FSF does not compromise when it comes to defending your freedom. Without the continued commitment of people like you, the progress we have made is in danger, and software freedom could be reduced to a mere wish instead of today's reality. Please help us continue to protect software freedom and increase its global support. Every membership this summer will help us towards our goal of 175 new members. Associate members will also be able to enjoy all the member benefits which include merchandise discounts, a 16GB bootable membership card, and use of our associate member videoconferencing server.

Many sysadmins know about fail2ban, but not enough people know about reaction. I am very grateful to ppom for the help they have provided and for the tremendous project they have released to the world with reaction. We have implemented other defenses as well, but reaction is doing the majority of the automated work keeping our sites online.