Titel: Hoe je je Website kunt Beschermen tegen Slechte Bots: Een Praktische Gids
Inleiding
Bots zijn overal aanwezig op het internet. Terwijl sommige bots zoals Googlebot en Bingbot essentieel zijn voor het indexeren van websites, zorgen andere voor vertraging, verbruiken ze bandbreedte, schrapen ze inhoud voor AI-modellen of zoeken ze naar kwetsbaarheden. Voor webbeheerders en API-beheerders is het cruciaal om de kwaliteit van het verkeer te waarborgen: legitieme bots toestaan en misbruik blokkeren voordat het op je server aankomt. Dit artikel biedt een praktische gids vol voorbeelden en tools om een technologische website te beschermen zonder de SEO of gebruiksvriendelijkheid te schaden.
1) Identificeer Verdacht Verkeer
Voordat je gaat blokkeren, is het belangrijk om eerst te meten:
Serverlogs (Apache/Nginx): Zoek naar pieken in verzoeken naar dezelfde URL, verdachte patronen zoals
/wp-login.phpof/xmlrpc.php, lege of valse user-agents en nachtelijke pieken.Analytics (GA4/Matomo): Controleer op abnormale bounce rates, sessies van 0 seconden en landen waar je geen publiek hebt.
Latentie en bandbreedte: Als 80/20 niet opgaat (hoog verbruik met weinig waarde), kan er sprake zijn van ruis.
Typische aanwijzingen:
- Piekverkeer bij inlog- en zoekpagina’s.
- Massale downloads van afbeeldingen of PDF-bestanden.
- User-agents die Google imiteren met IP’s die niet naar Google verwijzen.
2) Robots.txt: Nuttig voor Goede Bots, Irrelevant voor Slechte
Het robots.txt bestand blokkeert geen schadelijke bots; het leidt alleen de bots die zich aan de regels houden. Toch is het verstandig om het in te stellen om onnodig crawlen te verminderen:
plaintext
User-agent: *
Disallow: /wp-admin/
Disallow: /cgi-bin/
Disallow: /search
Allow: /wp-admin/admin-ajax.php
Sitemap: https://jouw-domein.com/sitemap.xml
Belangrijk: Plaats geen gevoelige paden in robots.txt als ze niet op een andere manier zijn beveiligd.
3) Blokkeren via .htaccess of Nginx: Specifiek en Doeltreffend
Om specifieke IP’s of user-agents in Apache te blokkeren:
plaintext
.htaccess
Require all granted
Require not ip 203.0.113.0/24
Blokkeren op basis van user-agent
BrowserMatchNoCase “curl|python-requests|scrapy|wget” badbot
Order Allow,Deny
Allow from all
Deny from env=badbot
In Nginx:
plaintext
map $http_user_agent $badbot {
default 0;
~*(curl|python-requests|scrapy|wget) 1;
}
server {
if ($badbot) { return 403; }
deny 203.0.113.0/24;
}
Beperkingen: Handmatige lijsten bijhouden kan kostbaar zijn, en scrapers wisselen vaak IP’s. Gebruik deze methode voor gerichte gevallen.
4) Web Application Firewall (WAF): Filtreer voor je App
Een WAF past bekende regels toe om kwaadaardige patronen te blokkeren (zoals SQL-injecties, XSS, etc.). Er zijn twee benaderingen:
4.1 Zelfbeheerde WAF (ModSecurity + OWASP CRS)
ModSecurity in combinatie met de OWASP ModSecurity Core Rule Set biedt een beproefde methode.
Pas het Paranoia Level aan en stel de Anomaly Threshold in om een balans tussen beveiliging en valse positieven te vinden.
4.2 Cloud WAF (zoals Cloudflare)
Voordelen: Filteren van verkeer voordat het je server bereikt.
Regels op basis van IP-reputatie, land, user-agent, en meer.
5) Rate Limiting en “Menselijke Tests” zonder UX te Breken
Rate Limit: Beperk verzoeken per IP of sleutel bij kritieke endpoints.
Challenge: Gebruik JavaScript-uitdagingen of lichte Proof of Work om de kosten voor bots te verhogen.
Toegankelijke CAPTCHA: Vermijd opdringerige visuele uitdagingen.
6) Goed Omgaan met “Goede Bots”: Verificatie en Toegangsbeheer
Verifieer IP’s van zoekmachines met reverse DNS.
Onderhoud een allowlist voor M2M-integraties.
Zorg voor geactualiseerde sitemaps en blokkeer geen essentiële CSS/JS.
7) Bescherming van API’s en Dure Endpoints
Gebruik tokens met korte vervaltijden.
Implementeer rate limiting per consument.
HMAC-handtekeningen en mutual TLS waar mogelijk.
8) Implementatie via een Beheerde WAF (Bijvoorbeeld met RunCloud + ModSecurity)
Ga naar het dashboard, pas het Paranoia Level aan en voeg aangepaste regels toe.
Activeer meldingen en controleer logs voor blokkeringen.
9) Continue Monitoring en Afstemming
KPIs: Blokkeerverzoeken, valse positieven en bandbreedteverbruik.
Maandelijkse herziening: Actualiseer regels en controleer gevoelige endpoints.
10) Voorbeelden om te Kopiëren
Bied enkele praktische codevoorbeelden aan, zoals het blokkeren van toegang tot /wp-login.php op basis van land of het gebruik van ModSecurity om xmlrpc.php te beperken.
Checklist “Snel”
- Logs gecontroleerd.
robots.txtbijgewerkt.- Rate limiting geïmplementeerd.
- WAF actief.
- Allowlist voor goede bots.
- Toegankelijke uitdagingen toegepast.
- API-beveiliging.
- Monitoring en periodieke herziening ingesteld.
Veelgestelde Vragen
Kan ik alle bots in één keer blokkeren?
Nee, dat zou je SEO schaden. Het is essentieel om te differentiëren.Is
robots.txteffectief tegen slechte bots?
Nee, het is voornamelijk een richtlijn voor legitieme crawlers.Biedt blokkeren op IP voldoende bescherming?
Het is tijdelijk en niet voldoende. Combineer met andere strategieën.Hoe voorkom ik SEO-schade?
Gebruik een allowlist en blokkeer geen essentiële bestanden voor bots.
Conclusie
Het blokkeren van slechte bots is geen eenvoudige oplossing; het vereist een gelaagde aanpak. Begin met monitoring, pas WAF en rate limiting toe, gebruik uitdagingen waar nodig en bescherm API’s en dure endpoints. Met voortdurende monitoring en aanpassingen kun je ruis verminderen zonder de SEO of legitieme gebruikerservaringen op te offeren.
