Download the latest Vulnerability & Exploitation Report

Download now
Tutorial

CrowdSec WAF is not your typical ModSecurity clone

By Philippe Humeau, CEO and co-founder of CrowdSec

We’ve written a WAF before. Back in the NBS System days, two of us, Thibault and Seb, wrote NAXSI, an nginx module that blocked attacks without a single signature. It protected a lot of websites for a lot of years, and we’re still a bit proud of it (the learning mode, less so: anyone who ran NAXSI in production remembers the whitelists 😅).

So when we started the CrowdSec WAF, we’d already been through “how do we write a WAF engine?”. The question this time was simpler: what actually stops the bad guys? The honest answer: the engine is the easy part. Parsing HTTP and matching rules is a solved problem. What makes a WAF protect you is the rules it runs, how fast they arrive when a new CVE is exploited, and what it learns from everyone else’s traffic.

Then there’s the fear every WAF owner knows: blocking a paying customer. One false positive on a checkout page and the WAF goes into detection-only mode “for now”, where it often stays for years, producing alerts nobody reads. So the other half of the answer is rules that block what attackers send without touching what your users send.

That’s the lens we use to compare the open-source WAFs people ask us about (and a couple of commercial ones, while we’re at it).

The short version

 EngineLicenseOWASP CRSVirtual patches for exploited CVEsLearns from other usersBest for
CrowdSec WAFCoraza-based (our fork)MITYesYes, from live exploitation dataYes: the network blocklistProtecting several proxies with one brain
ModSecuritylibmodsecurity (v3)Apache 2.0Yes (its home)Write your ownNoExisting deployments, until you migrate
NAXSInginx moduleGPL-3.0No (own model)NoNoLegacy nginx setups
CorazaGo libraryApache 2.0YesWrite your ownNoDevelopers embedding a WAF engine
open-appsecML engine (Check Point)Apache 2.0, model under its own licenseNot its modelModel-basedVia Check Point’s model updatesCheck Point environments
BunkerWebnginx + ModSecurityAGPL-3.0, PRO and Cloud editionsYesVia pluginsWith the CrowdSec pluginA WAF that is also your web server, or fully managed
UBIKAProprietaryCommercialn/aVendor-managedVendor-managedEnterprise appliance buyers

(Licenses and features from each project’s own pages, read 19 October 2026.)

ModSecurity: alive at OWASP, and showing its age

ModSecurity started in 2002, as an Apache module, and for two decades it was the open-source WAF. Most of what we know about WAF rules comes from it, through the OWASP Core Rule Set.

Then came 2024. Trustwave, which had maintained it for years, ended its commercial support on 1 July 2024, and F5 retired its NGINX ModSecurity WAF module the same year. That ended the commercial backing, not the project: ModSecurity moved to the OWASP Foundation in January 2024 and keeps shipping releases, and we respect the people who keep it going.

Can you run ModSecurity in 2026? Sure. Would we start a new deployment on it? Not today. Its rules live in each web server’s config, so ten proxies mean ten configs to babysit, and its commercial sponsor has moved on. The good news: the most valuable part of ModSecurity, the Core Rule Set, isn’t going anywhere, and the CrowdSec WAF runs it. Migrating means keeping your CRS rules and changing what runs them.

NAXSI: we wrote it, and we rebuilt for good reasons

NAXSI took the opposite road to ModSecurity: instead of signatures, it scored requests on suspicious characters and patterns, and you whitelisted what your application legitimately needs. It was fast, and it had no signature list to maintain.

So why didn’t we just bring NAXSI into CrowdSec?

  • It lives inside nginx. Today’s stacks run Traefik, HAProxy, Envoy, Caddy and Kubernetes ingresses, often several at once.
  • Every application needs its own whitelist. A learning phase per app works for a careful team with a handful of sites. It doesn’t scale to hundreds, and even less now that apps change every week, with AI-assisted development shipping new forms and endpoints faster than anyone can whitelist them.
  • It only knows what one server sees. NAXSI can’t tell that the IP probing you right now has been hitting other people’s servers all morning.

The original repository was archived in November 2023 (a community fork carries on). The idea survived, though: blocking should be cheap and precise. We moved it to a place where it can learn from more than one server.

Coraza: a great engine, and we build on it

Coraza is the modern answer to ModSecurity’s engine: an OWASP project, written in Go, compatible with ModSecurity’s rule language and the Core Rule Set. It’s the engine we chose.

The CrowdSec WAF runs on our fork of Coraza, and we send fixes back upstream (Seb’s merged contributions include a raw body processor and an uppercase transformation). No war here: if you want to embed a WAF engine in your own Go application, use Coraza.

What we add is everything around the engine, the part that actually raises your security:

  • Virtual patching rules for exploited CVEs, written by our team and prioritized by what our Live Exploit Tracker sees attackers exploiting right now.
  • One engine for all your proxies. Nginx, OpenResty, Traefik, HAProxy, Envoy Gateway and WordPress forward requests to the same CrowdSec instance: update a rule once, every proxy gets it.
  • The network effect. What your WAF catches becomes a signal for the network, and what more than 300,000 active Security Engines catch reaches your WAF as a blocklist. The scanner looking for your WordPress plugin can be banned before its first request reaches you.
  • Behaviour on top of requests. WAF hits feed CrowdSec scenarios, so an IP that trips a few rules gets banned on every server, instead of being refused once.
  • Bot detection with a browser challenge, in the same component.

In layman’s terms: Coraza on steroids, and collaborative.

open-appsec: open source, with an asterisk

open-appsec, from Check Point, takes a machine-learning approach: instead of rules, a model learns what normal traffic looks like for your application. We’re partners, and CrowdSec integrates with it.

Its code and a basic model are Apache 2.0. The advanced model, the one its documentation recommends for production, comes from Check Point’s portal under its own model license (hence the asterisk). That’s a reasonable choice for a vendor, and a good fit if you’re already a Check Point shop. For most teams, though, a learning period per application and a vendor portal for the production model is more machinery than they want. Rules you can read, plus a network that has already seen the attack, get you protected on day one.

BunkerWeb: a different approach, and a partner

BunkerWeb, also built in France, is a web server and a WAF in one: nginx under the hood, ModSecurity and the Core Rule Set inside, AGPL-3.0, with a PRO edition and a fully managed BunkerWeb Cloud. You put it in front of your services, or let them run it for you.

CrowdSec plugs into the proxies you already run, instead of replacing them. Different approaches, and they combine well: BunkerWeb integrates CrowdSec, so a BunkerWeb user gets the network blocklist too.

UBIKA: the enterprise appliance route

UBIKA (formerly DenyAll, then part of Rohde & Schwarz Cybersecurity, now owned by TSS) sells a commercial WAAP, as a gateway or in the cloud, to large organizations. It’s proprietary, priced for enterprise procurement, and its rules and threat data are the vendor’s.

If you’re choosing a French WAF, there’s another option: the CrowdSec WAF is open source (MIT), runs on your own proxies, and is backed by threat data from the whole network instead of one vendor’s customer base.

When CrowdSec WAF isn’t the right pick

Is it for everyone? No. If you want zero infrastructure and someone else running the WAF end to end, a managed service (BunkerWeb Cloud, a CDN WAF) is simpler. If you have no reverse proxy at all, start there. And like every WAF running the Core Rule Set at high paranoia levels, you’ll spend some time on false positives: our virtual patching rules are built to avoid that, the generic CRS rules less so.

Getting started

Struggling with a rule or a migration? Hop onto our Discord and tell us what you’re running: that’s also how the next virtual patches get prioritized.

FAQ

Is ModSecurity dead? Not quite: it’s retired from commercial support. Trustwave ended support on 1 July 2024 and the project is now run by OWASP volunteers. Its Core Rule Set is very much alive, and runs on other engines such as Coraza and CrowdSec.

Is the CrowdSec WAF based on ModSecurity? It’s based on Coraza, a modern Go engine compatible with ModSecurity’s rule language, so it runs the OWASP Core Rule Set and existing ModSecurity-style rules.

What’s the best open-source WAF in 2026? For a single nginx server, any CRS-based WAF will do. For several proxies, or if you want protection from attacks seen elsewhere before they reach you, the CrowdSec WAF adds virtual patching and a network blocklist on top of the engine.

Is the CrowdSec WAF free? Yes, it’s open source (MIT) and part of the free CrowdSec Security Engine. Paid plans add premium blocklists and Console features.

WRITTEN BY

You may also like

A network of sensors sends a stream of threat intelligence to a firewall, which stops malicious IPs before they reach the servers behind it.
Tutorial

How to add a threat intelligence feed to your firewall

Add a threat intelligence feed to any firewall with no agent: Palo Alto EDL, FortiGate, Check Point, pfSense. Steps, refresh rates and which lists to pick.

CrowdSec WAF virtual patching: a shield blocks PHP2Shell exploit attempts while visitors reach web applications behind NGINX, OpenResty, HAProxy and Traefik
Tutorial

PHP2Shell Virtual Patching: Keep Your PHP Websites Online While You Upgrade

PHP2Shell virtual patching: free CrowdSec WAF rules block known exploits for both CVEs, so your PHP sites stay online while you upgrade. How to set it up.

crowdsec and owasp
Tutorial

Protecting Your Web Applications with OWASP CRS and CrowdSec

Deploy the OWASP Core Rule Set (CRS) with CrowdSec to detect SQL injection, XSS, and other attack patterns. Learn how to install, tune, and enable blocking.