fail2ban
Fail2ban(http://www.fail2ban.org/) is a daemon to ban hosts that cause multiple authentication errors.
Platform availability
Available on 3 of 6 install platforms
Also on Docker Hub and GitHub
Health score
73/100 Good
- Maintained
- 100last commit 10 days ago
- Popular
- 4098 GitHub stars
- Easy to install
- 452 install platforms, install notes, Docker image
- Light to run
- 95500 MB minimum RAM, runs on ARM
How is this calculated?
A 0-100 score computed nightly from four factors: maintained (40%: recent commits and steady activity), popular (25%: GitHub stars, log scale), easy to install (20%: platforms, install notes, setup guides, Docker image) and light to run (15%: minimum RAM, ARM support). Factors without data are left out and the rest are rescaled.
Availability: platform listings confirmed today, links checked today
- GitHub stars
- 98
- Open issues
- 0
- Last commit
- 2026-09-25
- Latest release
- 1.1.0-r2-ls44
- License
- GPL-3.0
- Activity
- rising
Checked 7 days ago - source: GitHub (linuxserver/docker-fail2ban)
Resources & Compatibility
Minimum requirements: 500 MB RAM, 1 CPU core(s). ARM (e.g. Raspberry Pi) is supported.
Checked 7 days ago - source: Docker Hub image tags and published docs
First-install notes
- Install fail2ban with apt on Ubuntu/Debian Run `apt install fail2ban` so the package installs and its service starts automatically. If the service is not running, fail2ban cannot watch logs or block repeated bad login attempts. source
- Enable the fail2ban service on CentOS/RHEL Use `systemctl start fail2ban` and `systemctl enable fail2ban` so it is running now and starts after a reboot. Without enabling it, your system can lose protection after a restart. source
- Turn on the jails you need in jail.local Create or edit jail.local, set enabled=true for things like sshd or nginx, and point logpath to the exact log file fail2ban should watch. If the jail is disabled or watches the wrong log, fail2ban never sees the attempts and won't ban them. source
Fetched 7 days ago - each note links to its source
Variants
Alternatives (7)
- CrowdSec - CrowdSec is a free, open-source and collaborative IPS.
- IPBanPro - IPBan is a FREE and open source application that allows auto banning ip addresses from failed login attempts.
- crowdsec-dashboard - Metabase dashboard template for displaying Crowdsec statistics.
- crowdsec-threat-map
- qbit guard - A zero-dependency Python guard for qBittorrent that blocks pre-air TV episodes (Sonarr), deletes ISO/BDMV-only torrents, and auto-blocklist…
- reactionlight - Reaction Light is an easy-to-use, self-hosted reaction role bot for Discord, written in Python.
- zoraxy-crowdsec-bouncer - Zoraxy-CrowdSec-Bouncer is a Docker image that bundles the Zoraxy reverse proxy with the CrowdSec bouncer plugin pre-installed, ready to ru…
Checked 4 days ago - source: AlternativeTo
Common questions
Why can Fail2Ban ban an IP but the original IP still connect when using Cloudflare?
If the server is behind Cloudflare, the server sees Cloudflare addresses instead of the client's original address. Fail2ban may ban the Cloudflare address, while the original IP can still connect through the proxy.
Why does Fail2Ban stop protecting the system after a reboot?
The fail2ban service must be enabled so it starts after a reboot. On CentOS/RHEL, use systemctl start fail2ban and systemctl enable fail2ban; otherwise protection can be lost after a restart.
Can Fail2Ban reduce resource usage from repeated failed login attempts?
Yes, dropping all requests from an IP after N failed login attempts uses fewer resources than processing those attempts indefinitely. At scale, this can make a difference against DDoS-like repeated request pressure.
Answers sourced from github.com, www.reddit.com, www.reddit.com
Community
- Question about Fail2Ban Setup : r/selfhosted - Reddit (reddit)
- Fail2Ban works but IP not actually banned if server is ... - Reddit (reddit)
- Questions on setting up fail2ban : r/selfhosted - Reddit (reddit)
- Secure your Cloud Server from Hackers with Fail2Ban : r/selfhosted - Reddit (reddit)
Collected 6 days ago - public community threads