Files
CodePress/docs/haproxy-bot-blocking.md
T
E.Noorlander 239762fd3a CodePress CMS v1.8.0: BotGuard security engine, HAProxy docs & ARIA fix
- Implement BotGuard security engine (Bot, AI, Scraper & Empty UA blocking)
- Add Admin Security page (/admin/security) with toggles, rate limiter & block/allowlists
- Add per-IP RateLimiter handoff in index.php with HTTP 429 response
- Add dynamic /robots.txt generation and noai/noimageai meta tags
- Add RequestLogger status column and blocked badges in admin request logs
- Fix ARIAComponents.php syntax errors on lines 67, 137, 262
- Add HAProxy / PFSense bot blocking & IP forwarding guide (docs/haproxy-bot-blocking.md)
- Update version to 1.8.0 with release notes in version.php and guides
2026-07-29 14:26:48 +02:00

2.6 KiB

HAProxy & PFSense Bot, AI & Scraper Blokkering

Deze handleiding legt uit hoe je op netwerkniveau (via HAProxy op PFSense) bots, AI-crawlers en scrapers blokkeert voordat ze je CodePress CMS webserver bereiken.


1. Randvoorwaarde: Echte Bezoeker IP's doorsturen (X-Forwarded-For)

Om te zorgen dat CodePress CMS en HAProxy het echte IP-adres van de bezoeker zien (in plaats van het interne PFSense IP zoals 192.168.210.1):

  1. Ga in PFSense naar Services → HAProxy → Frontend en bewerk je Frontend.
  2. Zorg dat het Type op http / https (offloading) staat.
  3. Vink onder Advanced settings aan: Use option forwardfor.
  4. Voeg onderaan bij Advanced pass thru toe:
    http-request set-header X-Real-IP %[src]
    
  5. Sla op en klik op Apply Changes.

2. HAProxy ACL Regels (User-Agent Blokkering)

Voeg in HAProxy Frontend onder Advanced pass thru de volgende ACL-regels toe om AI-bots en scrapers direct een 403 Forbidden te geven:

# Detecteer AI Bots
acl is_ai_bot req.fhdr(User-Agent) -i -m sub GPTBot ChatGPT-User ClaudeBot Claude-Web CCBot PerplexityBot Bytespider FacebookBot Google-Extended Applebot-Extended

# Detecteer Scrapers & Automated Tools
acl is_scraper req.fhdr(User-Agent) -i -m sub HTTrack Scrapy HeadlessChrome PhantomJS curl wget python-requests libwww-perl

# Detecteer Lege User-Agents
acl is_empty_ua req.fhdr(User-Agent) -m len 0

# Blokkeer als een van de regels matcht
http-request deny deny_status 403 if is_ai_bot
http-request deny deny_status 403 if is_scraper
http-request deny deny_status 403 if is_empty_ua

3. HAProxy Rate Limiting (Stick Tables)

Om overbelasting door agressieve scrapers te voorkomen op netwerkniveau, kun je een stick table toevoegen aan je HAProxy Frontend (Advanced pass thru):

# Houd verzoeken per IP bij (1 minuut venster)
stick-table type ip size 100k expire 1m store gpc0,http_req_rate(60s)
tcp-request connection track-sc0 src

# Blokkeer IP als er meer dan 60 verzoeken per minuut worden gedaan
acl is_abuser sc0_http_req_rate gt 60
http-request deny deny_status 429 if is_abuser

4. Datacenter IP Blokkering met pfBlockerNG

Veel kwaadaardige bots en scrapers draaien op goedkope cloud/datacenter servers (AWS, Hetzner, OVH, DigitalOcean, Linode).

  1. Installeer pfBlockerNG-devel via System → Package Manager in PFSense.
  2. Ga naar Firewall → pfBlockerNG → IP → IPv4.
  3. Voeg de ASN / Datacenter Feeds toe van bekende cloud providers (bijv. AWS, Hetzner, OVH, DigitalOcean).
  4. Zet de actie op Deny Both (blokkeert zowel inkomend als uitgaand verkeer naar die datacenter IP-ranges).