Server Security

CrowdSec vs Swatter vs fail2ban for cPanel Servers Behind Cloudflare

By Josh Comstock · Updated June 2026 · ~7 min read

Abstract blue and green light against a dark background

All three of these tools block abusive IPs out of your server logs, and on a plain box any of them will do the job. But add the two constraints most comparisons quietly skip — your server runs cPanel + CSF, and it sits behind Cloudflare — and the field narrows fast. The question stops being "which is the best fail2ban-style blocker" and becomes "which one blocks on the correct firewall plane without taking my own sites down." So here's an honest look at where each one lands.

The Short Version

 fail2banCrowdSecSwatter
ArchitectureLog-watcher → iptablesAgent/daemon + bouncers + central reputation networkBash + awk on cron; cPanel/CSF-native
Resident processOne daemonAgent + one bouncer per enforcement pointNone — runs from cron
Cloudflare plane-awareNo (bans the logged IP blindly)Via a Cloudflare bouncer you add and configureYes — built into every block decision
Catches direct-to-origin bypassNoNot by defaultYes — from logs and the live socket
Threat intelNoneCrowdsourced reputation network (its core value)Optional free feeds + private self-hosted Swarm fleet sharing; corroborates by default, never blocks alone
LicenseOpen sourceOpen source (+ paid console/enterprise)Open source (MIT)
Best forSimple single boxes, no CDN in frontFleets wanting shared reputation across many servicescPanel + CSF servers behind Cloudflare

fail2ban

fail2ban is the default answer for good reason — it's everywhere, it's simple, and on a bare server with no CDN in front it just works. It watches your log files, matches failure patterns, and drops offenders into iptables for a while.

Behind Cloudflare, though, its core assumption breaks. Your logs show the real visitor IP (via CF-Connecting-IP), but the TCP socket your firewall actually sees is a Cloudflare edge server — so a default iptables ban either hits nothing useful or, if your logs aren't IP-restored, bans a Cloudflare range and blackholes every site on the box. You can bolt on the cloudflare action to block through the API, sure — but now you're hand-maintaining the plane logic yourself, and fail2ban still has no idea an attacker skipped Cloudflare and hit your origin directly. (We walk through wiring this up correctly in how to block attackers on a cPanel server behind Cloudflare.)

CrowdSec

CrowdSec is the most capable of the three, and honestly the closest to Swatter in spirit. It pairs a detection agent with bouncers (enforcement plugins) and a crowdsourced reputation network — when one participant anywhere sees an attacker, the whole community can pre-emptively block it. That shared intelligence is the real draw, and it's genuinely valuable.

The trade-offs are architectural, not a knock. CrowdSec is a daemon with a component per concern — an agent, a local API, and a bouncer for each thing you want to enforce on, including a Cloudflare bouncer that handles the proxied plane well once you've set it up. For a multi-service fleet that wants central reputation, that modularity is exactly the strength you want. For a single cPanel box where you're after minimal moving parts and CSF-native blocking, though, it's more infrastructure than the job needs — and the direct-vs-proxied call is something you assemble out of bouncers rather than something baked into every decision. So if you want a daemon, a reputation network, and a component per concern, CrowdSec is the right pick.

Swatter

Swatter sits at the other end of the spectrum, and it's built around exactly the cPanel-plus-Cloudflare constraints above. It's plain Bash + awk on a cron — no daemon, no agent, no phone-home. It reads your web logs, scores every IP on weighted behavioral signals plus optional free threat-intel, and then makes the one call the other two hand back to you: it classifies each offender direct-to-origin or via-Cloudflare — from the logs and the live socket, so even a valid-Host flood that skips the edge gets caught — and blocks each on the correct plane. Direct attackers go to CSF; proxied ones get a Cloudflare managed challenge through the API. Cloudflare's own ranges are a hardcoded never-block set, re-checked before every block, and it fails closed if that list ever goes stale.

The honest limits: Swatter is purpose-built for cPanel + CSF (or any Linux host with ipset/iptables) behind Cloudflare — it's not a general-purpose, any-service framework, and it's the newest and smallest of the three. On reputation, there's a real difference from CrowdSec, but it's not the one people assume. Swatter carries a shared network now — Swatter Swarm, a self-hosted hub (a Cloudflare Worker + D1 you own) that's off until you stand it up and enroll each box. Once you do, your own boxes publish their confirmed permanent bans and pull back a merged, corroboration-scored blocklist. But it's private: your fleet only, no strangers, nothing leaving your infrastructure. CrowdSec's is the opposite bet — a global community pool where you gain from everyone's data and share yours back in return. And by default Swarm only sharpens Swatter's existing scoring rather than pre-blocking on its own; proactive blocking is opt-in. (It still corroborates against free threat-intel too — keyless feeds like IPsum and Spamhaus, plus opt-in AbuseIPDB and GreyNoise.) Neither model is the "right" one — global reach or private sovereignty, take your pick. If your server's a cPanel box behind Cloudflare, those constraints are exactly the point; if it isn't, one of the others may fit better.

How to Choose

None of these is "best" in a vacuum. The right one is just the one whose assumptions match your server.

See how Swatter works →

Related: How attackers bypass Cloudflare and hit your origin directly · How to block attackers on a cPanel server behind Cloudflare.

← All articles