Hallo!
Um das mal wieder anzustoßen...
Seine .htaccess muss man laufend anpassen nachdem man natürlich immer wieder seine access.log Dateien analysiert.
Viele Sachen werden hier auch falsch gemacht (Redundanz, aufwendige Instruktionen), da kann man mit der .htaccess schonmal ne Menge Serverlast erzeugen oder ein 500/503 erzeugen. Mit Regulären Ausdrücken sollte man auch sehr aufpassen. Es ist z.B. völlig unnötig für das einfache Blocken die Rewrite Engine zu bemühen, zumal nicht jedes Hosting das Modul mod_rewrite in der .htaccess unterstützt.
Hier mal ein kleiner Ausschnitt meiner .htaccess:
Code: Alles auswählen
SetEnvIf Request_Method "(DEBUG|DELETE|OPTIONS|PUT|TRACE|TRACK|(UN)?LINK)" bad
SetEnvIfNoCase Request_URI "(\/\.\.|ckeditor|drupal|joomla|trackback|upload|wp-(admin|content|includes|json|login)|wordpress)" bad
SetEnvIfNoCase User-Agent "^(-?|Asperatusbot|Google\ ?Bot|Mozilla(\/.\..)?|QCrawl|Ruby|robot)$" bad
SetEnvIfNoCase User-Agent "^('|=|\/|BUFF|HELLO|Jersey|Mozilla.*Mozilla|Pcore|pshtt|User.?Agent)" bad
SetEnvIfNoCase User-Agent "(\\x|\"\)|\ \ Safari|\(compatible;?(\ )?\)|\(Mobile;\ rv:|rv:.\..(a|b)[0-9]\)\ Gecko|0\ Gecko|Firefox\/(3\.8|40\.1)|Mozilla\/5.*MSIE\ [2-8]|MSIE\ (9|1[01]).*\.NET|Windows(\ (10|NT\)|XP\))|\))|X\ 10_10_0)" bad
SetEnvIfNoCase User-Agent "(aylienbot|BegunAdvertising|betaBot|Bitvore|BoogleBot|cmscrawler|CommonCrawler|curl|devworx|Diffbot|Digincore|domain|evc-batch|exif-search|Feosey|FOCA|GarlikCrawler|Genieo|Getintent|Http.?Client|HTTrack|HubSpot|HybridBot|Indy|ips(-agent|\ Community)|Java\/1|Kemvibot|KomodiaBot|lib(http|www)|MailDBBot|mfibot|MixrankBot|Nutch|\ oBot|OSSProxy|PHP\/|Pulsepoint|Python|Scrapy|semantic|SiteTruth|Stratagems|Surdotly|Synapse|TWMBot|uCrawler|Web(Copy|collage|Fuck)|Wget|WinHttp|wonderbot|YisouSpider|zgrab\/)" bad
SetEnvIf Request_URI "^/robots\.txt$" ok
SetEnvIf Request_URI "/403\.php$" ok
Order deny,allow
deny from env=bad
allow from env=ok
Als kleine Hilfestellung zu Regulären Ausdrücken: "^" = beginnt (mit), "." = irgendein Zeichen, ".*" = beliebig viele irgendwelche Zeichen, "|" = oder, "?" = das davor stehende Zeichen kann (!) vorkommen, "()?" = die in der Klammer stehende Zeichengruppe (inkl weiterere Verschachtelungen und "oder") kann (!) vorkommen. Alle solche Operatoren sowie Leerzeichen und einige weitere müssen mit einem "\" (Backslash) einzeln maskiert werden, wenn das Zeichen und nicht der Operator gemeint ist.
Dazu sollte aber noch IP-Blocking (ich sag nur Amazon, Hetzner, OVH) stattfinden, da viele Bots UA Spoofing betreiben, wovon die blödesten Versuche oben schon mit abgedeckt sind. Da ich kein WP/Joomla/Drupal nutze, werden alle entsprechenden Zugriffe auch generell geblockt - wichtig für Leute mit diesen "CMS" (nicht selbst aussperren).
Wichtig ist außerdem, dass alle Bots Zugriff auf die robots.txt haben, um die darin stehenden Anweisungen befolgen zu können - falls es sich um "good bots" handelt.
Die Profis für solche Sachen sitzen übrigens im UA-Forum von webmasterworld.com.
Viele Grüße
ElCattivo