IP Block List
SSH honeypot IPs
This section references IPs observed in SSH brute-force activity.
ssh honeypot ip lists for firewall blocking.
Having sshd listening wide open, even with IP block lists is just plain stupid.
If you absolutely need public SSH access because users have constantly changing
IP addresses, set up a dedicated server or VPS as an SSH Proxy for users or administrators.
AllowUsers user1@144.24.46.145
AllowUsers user1@*
AllowUsers user1@144.24.46.*
Create iptables chains by priority, because rules are processed first-match-first-served.
This means that it reads from top to down, searches for the first match in the chains.
It’s non-trivial, in an (server box/server/instance/compute node), where limited amount of rules but strict rules are applied.
But in a (SSH Proxy/SSH Proxy Node) where the sshd is listening wide open, and massive amounts firewall lists are applied.
Its absolutely vital, seeing it makes big difference if you match it in 20th read from the array, rather then entry 20,500.
It keeps SSH latency manageable.
Note: Add your static IP, or a trusted subnet where your IP commonly changes. This allows the firewall SSH priority chain to match pre-approved critical locations first, reducing unnecessary latency compared to random Wi-Fi, unknown public IPs, or airport lounges you have never used before.
Extra caution: Some countries restrict or prohibit VPN use and may have very different rules around encryption. It is wise to todo (reverse DNS/IP resolution) of the SSH proxy IP, for example: proxy.company-name.net, to avoid confusion with local authorities.
Add core-ingress, and core-egress in INPUT and OUTPUT chains, as base services.
For rules like
-m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "core-ingress: allow established/related replies to connections destined for (IP)"
The common Fail2Ban convention is: f2b-
But in the end, naming schemes are only important if multiple roots maintain firewall rules.
In private or small setups it would be more simpler to keep track of what is what, like adding banlist, month names, definations etc.. into the chain names.
Date Marking Chains
Good practice is to mark chains with dates, to simplify future mentainance.
(brutforce IPs/honeypot collected IPs) Don't last bad for ever, attackers rotate IPs, botnets go down, etc..
for example: iptables-list-2026-01-01 and when compressed iptables-list-20260101.
https://github.com/firehol/firehol/tree/master/html/ipsets
The repository contains collected data from SSH attack traffic, such as honeypot and brute-force attempts, and maintains an active IP block list.
https://lists.blocklist.de/lists/