Bot-Anfragen Blockieren
Immer wieder kommt es vor, dass Webseiten aufgrund einer hohen Anzahl von Anfragen nicht mehr erreichbar sind. Neben echten DDoS-Attacken, gegen die sich der Einsatz von Cloudflare empfiehlt, können aber auch aggressive Bots die Ursache sein. Leider beachten solche Bots häufig den Inhalt einer robots.txt
-Datei nicht und lassen sich somit darüber nicht blockieren. Ihre Anfragen können Sie aber ohne grossen Aufwand per Rewrite-Konfiguration innerhalb einer .htaccess-Datei aussperren.
Dies ist jedoch nur bei Nutzung des Apache Webservers möglich. Nginx unterstützt dagegen keine .htaccess-Dateien.
Überprüfung der Logfiles
Bei Problemen mit der Erreichbarkeit Ihrer Webseiten sollten Sie zunächst die Access Logs Ihres Webservers überprüfen. Sie finden diese im Unterverzeichnis /logs
innerhalb Ihres User-Homedirs (in der Regel /home/www-data
). Die letzte Spalte innerhalb des Access Logs enthält den Namen des User Agents.
Im folgenden Beispiel handelt es sich dabei um den FacebookExternalHit-Crawler, der häufiger zu Problemen führt. Zu sehen ist, dass in diesem Fall teilweise mehrere Anfragen pro Sekunde von diesem Bot kommen:
173.252.83.40 - - [15/Aug/2024:01:19:00 +0200] "GET /*** HTTP/2.0" 200 434490 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
69.171.249.116 - - [15/Aug/2024:01:19:00 +0200] "GET /***/***/*** HTTP/2.0" 200 248774 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
69.171.249.15 - - [15/Aug/2024:01:19:01 +0200] "GET /***/*** HTTP/2.0" 200 94504 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
173.252.87.11 - - [15/Aug/2024:01:19:02 +0200] "GET /***/*** HTTP/2.0" 200 262990 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.149.115 - - [15/Aug/2024:01:19:02 +0200] "GET /***/***/*** HTTP/2.0" 200 258529 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
69.171.249.112 - - [15/Aug/2024:01:19:03 +0200] "GET /***/***/*** HTTP/2.0" 200 356111 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Tritt dies über einen längeren Zeitraum auf, kann dies zu Problemen mit der Erreichbarkeit der Webseite führen.
Erstellung der Rewrite-Regel
Um Zugriffe des FacebookExternalHit-Crawlers aus dem obigen Beispiel zu blockieren, können Sie eine .htaccess-Datei mit folgendem Inhalt in Ihrem Document Root erstellen:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} facebookexternalhit [NC]
RewriteRule .* - [F,L]
Fall bereits eine .htaccess-Datei mit anderen Rewrite-Regeln vorhanden ist, können Sie diese mit der obigen Regel ergänzen. Damit die Regel auch sicher greift, muss sie am Anfang der .htaccess-Datei stehen.
Um mehrere Bots innerhalb der selben Rewrite Condition zu blockieren, können Sie folgende Syntax verwenden:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Amazonbot|Bytespider|facebookexternalhit) [NC]
RewriteRule .* - [F,L]