HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
firehol
blocklist-ipsets
Shell2018–2026
firehol / blocklist-ipsets

blocklist-ipsets

ipsets dynamically updated with firehol's update-ipsets.sh script

2Distinct people
26Mentions
0Explicit recommenders
4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

ipsets dynamically updated with firehol's update-ipsets.sh script

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year26 dated mentions

Observed mentions: 2018-08-08 17:08:51 UTC to 2026-09-11 12:05:20 UTC.

0123452018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 2 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC321
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC211
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC505
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC404
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC303

What Hacker News says

26 sources
Do you have a list of the addresses that were hammering your site? Have you tried any of the techniques I list here? [1] Do sets of the IP's show up in here [2]? Are the bots mostly residential, VPS, Tor? What is the HTTP protocol breakdown? HTTP/1.1, 2.0, 3.0? Are they missing any expected client headers? Have you tried blackhole routing any of them from an out of band management console? # only useful if not behind a CDN for Ip in $(cat /dev/shm/list-of-attackers.ipset);do ip route add blackhole "${Ip}" 2>/dev/null;done [Edit] appears you are behind Cloudflare so the blackhole would be up to them. One could still return a 429 or 525 to the attackers. [1] - https://nochan.net/b/Internet-Crap/20260606-How-To-Block-Som... [2] - https://github.com/firehol/blocklist-ipsets/
In Understanding the recent DDoS attack against Read the Docs
Usually the IPs are 80% or so in one country (e.g. Brazil, US, Vietnam or India) It sounds like there is the option to at least reduce the load by up to 80%. That's at least a start. This repo [1] is not perfect but it's a start. I would disable IPv6 access to the site after removing the IPv6 DNS records and waiting a day so that attackers are forced onto IPv4 and clone this repo [1] or use one of the GeoIP databases to limit access from specific countries. That repo also contains known proxies. That may account for another percentage of that remaining 20%. As the content is academic in nature I don't know how your team feels about blocking Tor, but there is also a list of many (not all) of the last 30 days of Tor exit nodes in that repo. The blocks would not have to be permanent, just enabled during the storms if your team so desired.
Read the rest
# verify you have console access to the server before doing things like this: for BadIP in $(grep -Ev ^# ipip_country_br.netset); do ip route add blackhole "${BadIP}" 2>/dev/null;done Example of country IP addresses for Brazil [2] As this is academia I don't know if there is a concept of service level agreement or a promise of availability, but during attacks the requests to specific URL's could be redirected to a static pre-compressed landing page served out of memory that says "Access to these documents limited during AI bot attacks, here is where to request a full download instead: " I forgot to mention, many of the AI bots are limited to HTTP/1.1. During an attack your server could redirect those request to a static page as well. Curious if you can tell by your access logs if the majority of the attack is HTTP/1.1 or HTTP/2.0. Most botters are too lazy to implement HTTP/2.0. Real browser clients use HTTP/2.0. Example of using HTTP/1.1 and HTTP/2.0 # Fist use HTTP/2.0 with headers I expect. curl -i --http2 \ -A "Mozilla/5.0 (X11; Linux x86_64; rv:151.0) Gecko/20100101 Firefox/151.0" \ -H "sec-fetch-mode: navigate" \ -H "accept-language: en-US,en;q=0.9" \ --url 'https://blawg.nochan.net/.env' # Then HTTP/1.1 for the lulz, pay attention to the Location redirect curl -i --http1.1 \ -A "Mozilla/5.0 (X11; Linux x86_64; rv:151.0) Gecko/20100101 Firefox/151.0" \ -H "sec-fetch-mode: navigate" \ -H "accept-language: en-US,en;q=0.9" \ --url 'https://blawg.nochan.net/.env' Some bots also do not hide that they are bots in that they say they are bot in their user-agent client header. That would be too easy so I doubt that is the case. [1] - https://github.com/firehol/blocklist-ipsets/ [2] - https://github.com/firehol/blocklist-ipsets/blob/master/ipip...
In Cloudflare CEO is lying to you about the bot traffic jump
One of the places to look it up would be bgp.tools [1] The IP is purported to belong to Amazon and the ASN has some interesting tags. [2] Any form of forwarded-for can be spoofed and should only be considered from expected up-stream proxies such as a CDN and they should have a CDN specific IP header that would be listed in their documentation. Typically the first column in access logs will be the REMOTE_ADDR which is the actual network connection but if using a CDN that would be the CDN IP. If a CDN does not have an option to block cloud and Tor CIDR blocks then that should be a feature request. 44.210.204.255 is included in 44.192.0.0/10 which is listed in the AWS CIDR ranges. Use one of the online subnet calculators to find IP ranges of CIDR blocks. This is likely a Tor exit node. Blocking the CIDR blocks I listed in the thread wou
Read the rest
ld have included this node as well. Here [3] are a few shell functions for getting some of the cloud CIDR blocks. I must have been inebriated when I wrote those. This site may not be reachable during blood moons or when the nanosecond is divisible by zero. Here [4a][4b] are a couple decent subnet calculators. There are some command line tools for playing with CIDR blocks and IP addresses to see if an IP is included in a CIDR block but this varies by Linux distribution so perhaps look for a generic python script. To get a list of Tor exit nodes to blackhole route, look at [5]. This updates often. Just clone the entire repo. Unless your site is related to government dissent or anonymous porn then most traffic from Tor exit nodes will likely just be bots and thus riff-raff. Seconds after I linked realhackers bots showed up and got a zero byte response. Poor lil HN servers must get a lot of trash non stop. I hope I get some delicious bots today. [1] - https://bgp.tools/ [2] - https://bgp.tools/as/14618 [3] - https://ai.realhackers.org/_get_cloud_cidr.txt [4a] - https://mxtoolbox.com/subnetcalculator.aspx [4b] - https://www.vultr.com/resources/subnet-calculator/ [5] - https://github.com/firehol/blocklist-ipsets/blob/master/clea...
In Amazonbot is finally respecting robots.txt
I had also tried that but some repos still get fairly big and all I wanted was the code not the .git since I am not a proper developer. To your point they can still be quite large. cd /dev/shm/block && git clone -j4 --depth=1 --branch=master https://github.com/firehol/blocklist-ipsets.git du --max-depth 1 -hc 24M ./ipip_country 4.0M ./ipdeny_country 9.6M ./ip2location_country 6.9M ./geolite2_country 25M ./.git 140M . 140M total It's not awful but I currently keep up to date copies of about 300 git repos and if I keep all the big ones it can add up to several GB of data I do not need. For now I just clone to a ramdisk and whack the .git directory for several of the big ones before I rsync back to disk. I probably lose some interesting history doing that.
In Most engineers have Git aliases; what are yours?
Blackhole all their ASN's and be done with it. It sounds like the crawlers are not adding anything back to SourceHut. This exercise takes a while the first time around but take one IP from each CIDR block and look up all the IP's [1][2] they own, aggregate it [3] using a script to summarize into larger CIDR blocks and have a cron "@reboot" or systemd unit file script that performs: ip route add blackhole "${ClownNet}" # in a loop through a text file This is how I ended up blocking archive.is along with using a couple MSS rules. waves to their admin here on HN Obviously don't block anything you have to reach out to or consumer ISP networks in countries you wish to do business with unless you are a bastard operator from hell like me. It's far less CPU than using firewall rules and takes minuscule amounts of kernel memory. Be sure
Read the rest
to also have a URL your visitors can go to in order to grab their IP address should they claim they are blocked. Link to this comment in a Jira and test it in a staging environment. Be sure to test all the regular outbound connections that you make in production in your staging environment. If you do want to block entire countries without having to look something up on every web hit then use this [4] to add to the blackhole script with a little data massaging. Everything in the blackhole text file must be versioned and committed into your internal repository so one can tell when a network added is breaking things and one can quickly roll back. Have a function in the script that deletes all the blackholes. I blackhole about 27,000 CIDR blocks on a tiny VM web server and the script takes 20 seconds to complete. [1] - https://bgp.tools/ [2] - https://bgp.he.net/ [3] - https://adrianpopagh.blogspot.com/2008/03/route-summarizatio... [4] - https://github.com/firehol/blocklist-ipsets/tree/master/ipip...
In LLM crawlers continue to DDoS Sourcehut
I see IP's from the same subnet in a couple of blocklists. blocklist_de.ipset:146.152.233.43 blocklist_de_ssh.ipset:146.152.233.43 firehol_level2.netset:146.152.233.43 From this repo [1] That would suggest end-users have some way to control them, though usually for spam. Did you happen to by chance capture any of the individual packets in tcpdump verbose mode? e.g. tcpdump -p --dont-verify-checksums -i any -NNnnttvvv -B16384 -s0 -c 512 not port 22 -w /dev/shm/dos.cap Command decoded: not promiscuous, checksums are useless computation here, all interfaces, disable resolving names, ports, services, use epoch time, very verbose, 16k buffer despite CPU likely being our bottleneck, full packet, 512 packets, not port 22 ssh, save to a file in a ramdisk Did you reach out to the person listed here? [2] Try that phone number in
Read the rest
a few hours. Be polite and just give them the facts so they don't get defensive. If they don't answer try email. [1] - https://github.com/firehol/blocklist-ipsets.git [2] - https://bgp.he.net/AS4983#_whois
In Intel DDoS my website with 11.1M request
FWIW all of those IP's are in FireHol 30 day netset [1] from the FireHol Repo [2] They are known abusers and safe to null route if you happen to run your own mail servers, blogs, etc... wc -l firehol_abusers* 7260 firehol_abusers_1d.netset 184010 firehol_abusers_30d.netset # first grep for any IP's you care about and then: for Ip in $(cat firehol_abusers_30d.netset);do ip route add blackhole "${Ip}" 2>/dev/null;done If that cuts down on the noise then create a startup script to do this on reboot. The first time this should be done from a web console vs. ssh in case the list contains your own IP address or gateway. Why ip route vs ipset or iptables? Far less CPU load than netfilter. A more generic way to keep many bots out is to redirect anything other than HTTP/2.0 to a password protected listener. T
Read the rest
his will block Google bots as they still do not support HTTP/2.0 but will also block a majority of the problematic bots. [1] - https://github.com/firehol/blocklist-ipsets/blob/master/fire... [2] - https://github.com/firehol/blocklist-ipsets
In Ask HN: What are these strange random strings spamming my blog?
fun way to mess with these people? To some extent yes, give them a status 200 for anything they send at you, especially for your default catch-all domain/IP/virtual-host. In NGinx this looks like error_page 404 500 501 502 503 504 =200 /some_generic_message.html; I would personally just disable fail2ban. It just consumes more CPU especially if using it with iptables. If using ip route blackhole {ip} its not as bad but still a waste of time in my opinion. There are enough known compromised hosts out there to add millions of entries to your routing table ahead of time. [1] Add headers and content to the generic message file that has links to URL's like WordPress, wp_login.php, wp-story.php, js/file-uploader, nf_tracking.php, about.php, wp-reset.php and others. To minimize writes on your disk, set custom logs for your default virtu
Read the rest
al-host/IP/domains to either write into a tmpfs ram disk or to /dev/null once you get bored watching them. If writing to tmpfs be sure to set up a more frequent log rotation and less retention. Be sure to also set the HTTP keepalive time very low so they are not wasting your resources. No need to tarpit them, most of the code used by these bots will time out after a few seconds. [Edit] I should add, these are not hackers you are messing with. They are just parasitical script-kiddies that prey on the weak, most often using their batches of WordPress hosts as jump-off points and watering hole phishing sites to scam the elderly out of their life savings. Making them lose money would be great too! That's much harder. Most of the IP's you see do not belong to the attacker. The attacker is likely using a set of Command and Control C&C nodes that control a swath of end-user PC's and Wordpress servers infected with malware. Anything you do will cost them nothing but it might slow their threads down a little. The only way to make them lose money would be to find who is controlling the C&C nodes, gather evidence and have law enforcement take them down. To do this one would have to break the law by hacking into the compromised host and see what C&C nodes it is dialing home to, then hack into those hosts and see who is connecting to them. They could be using Tor but most people are lazy enough to not do this. [1] - https://github.com/firehol/blocklist-ipsets.git
In Ask HN: Best Way to Mess with Hackers?
Tor exits are tracked longer term here [1] and in a few other block-list repos. The data is built from Tor's exit node list [2] An IP can also be queried in ExoneraTor [3] to see if it was ever a Tor exit node. Could all of this could be added to the tool? [1] - https://github.com/firehol/blocklist-ipsets [2] - https://check.torproject.org/exit-addresses [3] - https://support.torproject.org/glossary/exonerator/
In Show HN: A Golang package and tool to detect Tor exit IP addresses
In my experience, reporting this is a waste of time. The nodes doing the actual spamming and crawling sites for exploits are far removed from the IP addresses you see in your access logs and in your email headers. The actual abusive nodes are talking to multiple rings of compromised command-and-control hosts a.k.a. C&C hosts. Those hidden command-and-control hosts then control compromised hosts that you are seeing in email headers and access logs. For every one node taken offline there will be a myriad of compromised nodes in their available pool to take over. Blocking nodes is an endless game of whack-a-mole. The people your VPS provider gave your contact info to are likely also victims of bots and would have no idea how to fix the problem. VPS providers are also not going to disable all the compromised VM's as many of those peopl
Read the rest
e will not take responsibility and will instead get upset with the VPS provider and move to a different provider and this has financial ramifications. Most VPS providers don't have the technical resources to track down the command-and-control nodes. This requires a higher level of visibility they do not have. The folks that have this level of visibility will not likely assist with bot noise unless the bots are also being used to steal government secrets or embarrass government officials or attack public infrastructure. There are ways to trick some of the bots into attacking public infrastructure but I would not want to be caught up in that legal quagmire as I am easy to find and bot owners are not. In summary, the best one can do is either configure systems to discard the noise in web logs and block low reputation IP addresses in their mail servers or if one feels the desire to do something, create tarpits/honeypots for the bots to get stuck in. Tarpits have very little impact on bots but if one wanted to feel like they were doing something it's a start. For example, I have numerous nodes that accept email for all the popular domains. Spam bots think they are relaying thousands of emails through my nodes per day but that is a tiny fraction of a tiny fraction of the spam that people will receive. I am not even making a tiny dent in the problem. As a side note, there are ways to block some of these bots if you control your web and email servers but that is another topic all together and if too many people implemented such techniques then the bot developers would evolve around it. Apologies if this sounds defeatist. Some use blocklists [1][2] to reduce the noise on their web servers and RBL/RSL [3][4][5] servers to reduce the noise on their mail servers but this has limited efficacy and I think it just takes up memory by increasing the routing table or takes up CPU by making large ipset lists for iptables. [1] - https://github.com/firehol/blocklist-ipsets [2] - https://github.com/StevenBlack/hosts [3] - https://www.uceprotect.net/en/index.php?m=6&s=0 [4] - https://www.spamcop.net/fom-serve/cache/291.html [5] - https://www.spamhaus.org/zen/
In Ask HN: Is it pointless to report hosting Abuse?
I don't know about a particular product but I have seen people pull in data feeds into both Splunk and into Elk/Logstash instances in conjunction with DNS query logging. So the SIEM's were just Splunk and Elk/Logstash. Splunk is very expensive. The DNS data-feeds were commercial and I can't recall which companies provided them but the folks at Splunk could likely tell you. Just beware of sales people. If you wanted some publicly sourced data try out the firehol [1] datasets. They could probably be used in conjunction with Suricata or Snort distributed to each DNS resolver. [1] - https://github.com/firehol/blocklist-ipsets
In Ask HN: SIEM-like product with DNS as its data API?
One possible starting point would be to null route their assigned address space. [1] from the firehol repo [2]. This will not block private proxies and VPN's. A determined person could easily get around this. This does not include ipv6. ttyprintk brings up a good point in that one could also look at header fields to check for Russian language attributes. [1] - https://github.com/firehol/blocklist-ipsets/blob/master/ipip... [2] - https://github.com/firehol/blocklist-ipsets.git
In Ask HN: What is a good way to block Russian users from using my services?
Off-Topic question: Is there an existing static file that contains all the attacking IP's from a 3 or 6 month period that spawned the creation of this system? I would like to compare it to what is in firehol's repo. [1] I am not trying to downplay anything rather hoping to see the delta of the outliers. In the past I logged the people querying my DNS servers for SIP names but have since switched to NSD which does not have query logging. [Edit] I am running tcpdump right now and it didn't even take 15 seconds to start seeing queries for sip SRV records. [1] - https://github.com/firehol/blocklist-ipsets.git
In A distributed peer to peer list of bad actor IP addresses and phone numbers
For me personally, one of the most effective means of knocking out the first 95% of spam was using the S25R regex methodology [1] created by Asami Hideo which seems to keep the load on SpamAssassin and ClamAV really low. I've had to adjust the regex rules over the years a little bit but it's really low maintenance for my setup. There are also lists of IP addresses and networks you can block that are known to be malicious which also reduces the load and log volume. [2] [1] - http://www.gabacho-net.jp/en/anti-spam/anti-spam-system.html [No HTTPS, Sorry] [2] - https://github.com/firehol/blocklist-ipsets.git
In Deploy a Gmail-like email server in 30 (ish) minutes

Showing the 15 most recent of 26 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.