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
This commit is contained in:
2026-07-29 14:26:48 +02:00
parent 62dd7ddb9c
commit 239762fd3a
18 changed files with 618 additions and 117 deletions
+67
View File
@@ -0,0 +1,67 @@
# 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).