Skip Navigation

Low resource, Performant WAF

I'm running a website that is getting a lot of bot traffic and found Cloudflare free rule tier to be a bit limiting. (5 custom rules with length limits)

Ive got subnets for major VPS providers to block and will run analysis against my traffic to build on these lists.

What do others do?

I'm contemplating my Cloudflared tunnel into Crowdsec to my app.

Edit: Adding in image of my analysis of the IPs scanning for vulnerabilities.

21 comments
  • FYI, IP access rules don't count towards the 5 custom rules limit, but the more generous 50k limit.

    With fail2ban, you can setup IP access rules via the cftoken-action quite easily.

    Security --> WAF --> Tools to access the IP rules in the dashboard. https://developers.cloudflare.com/waf/tools/ip-access-rules/

    • I have more than 50k but even that page doesn't recommend it.

      Top of that page

      Recommendation: Use WAF custom rules instead

      Cloudflare recommends that you create WAF custom rules instead of IP Access rules to perform IP-based or geography-based blocking (geoblocking):

      • For IP-based blocking, use an IP list in the custom rule expression.

      On the fail2ban front, can I run my traffic through a f2b container and out into my app?

      • WAF custom rules are more flexible, of course, and from a business perspective, I can understand why they would recommend that option instead.

        I currently filter on an nginx access log file among other filters (sshd, bot-search, bad-requests) and let fail2ban execute the ban/unban action itself.

        From a quick search, it should be possible to handle bans/unbans externally, if that's what you're after.

  • If you want to DIY something, I have a bash script that builds OpenResty with NAXSI from source. Most of the web apps I write anymore are actually in Lua, for OpenResty, maybe with an API written in something else. But I also help other members of my team deploy their Node and Python apps and stuff, and I always just park those behind OpenResty with NAXSI, just doing a standard nginx reverse proxy.

    • How easy is it to configure?

      My goal is to download some lists from github and generate one big ban list to feed into the WAF but the community lists of Crowdsec might negate the need.

21 comments