# 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: ```text 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: ```text # 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**): ```text # 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).