<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Improve firewall blocking capabilities and bad IP lists/sets]]></title><description><![CDATA[<p dir="auto">Since we have also been hitting limits with the number of IPs we block in the firewall, there is a solution, read more below.</p>
<p dir="auto">For nearly two years the Free Software Foundation has been fighting web crawlers (including many aggressively scraping training data for AI models). A botnet controlling about five million IPs hit one system <a href="https://www.fsf.org/blogs/sysadmin/our-small-team-vs-millions-of-bots" target="_blank" rel="noopener noreferrer nofollow ugc">for six months in 2025</a>. Their systems administrator wrote this week that they view these as distributed denial-of-service attacks.</p>
<p dir="auto">How are they fighting back? _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...</p>
<p dir="auto">We got confirmation that at least some of the botnet traffic hitting GNU Savannah was originating through the Vo1d/Popa botnet.</p>
<p dir="auto">We placed our regular expressions in <a href="https://directory.fsf.org/wiki/Fail2Ban" target="_blank" rel="noopener noreferrer nofollow ugc">fail2ban</a>, and found that we were hitting the maximum rules that could be added to <a href="https://directory.fsf.org/wiki/Uncomplicated_Firewall-_ufw" target="_blank" rel="noopener noreferrer nofollow ugc">UFW</a> firewall rules on our systems which showed degradation around 65,000 rules...</p>
<p dir="auto">We learned about <a href="https://directory.fsf.org/wiki/Ipset" target="_blank" rel="noopener noreferrer nofollow ugc">ipset</a> 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...</p>
<p dir="auto">We eventually found a promising project on Framasoft's forge Framagit called <a href="https://directory.fsf.org/wiki/Reaction" target="_blank" rel="noopener noreferrer nofollow ugc">reaction</a> written by ppom... 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.</p>
<p dir="auto">We published <a href="https://reaction.ppom.me/examples/actions/ipset/" target="_blank" rel="noopener noreferrer nofollow ugc">both of our configurations upstream to reaction's wiki</a> so that everyone can benefit from it. reaction's getting started documentation now leads to the method that we proposed...</p>
<p dir="auto">Many sysadmins know about fail2ban, but not enough people know about <a href="https://reaction.ppom.me/" target="_blank" rel="noopener noreferrer nofollow ugc">reaction</a>. 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.</p>
<p dir="auto">We have implemented other defenses as well, but reaction is doing the majority of the automated work keeping our sites online.</p>
]]></description><link>https://forum.cloudron.io/topic/15702/improve-firewall-blocking-capabilities-and-bad-ip-lists-sets</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 15:14:50 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15702.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Jul 2026 00:35:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Improve firewall blocking capabilities and bad IP lists/sets on Sun, 12 Jul 2026 12:40:27 GMT]]></title><description><![CDATA[<p dir="auto">+1 - Great idea! Even the ability to automatically pull an IP list into the blocklist on a set cron schedule would be extremely beneficial.</p>
]]></description><link>https://forum.cloudron.io/post/126674</link><guid isPermaLink="true">https://forum.cloudron.io/post/126674</guid><dc:creator><![CDATA[dylightful]]></dc:creator><pubDate>Sun, 12 Jul 2026 12:40:27 GMT</pubDate></item></channel></rss>