Hallo Matthes,
entschuldige bitte meine verspätete Rückmeldung, aber ich bin jetzt endlich dazu gekommen mich damit auseinander zu setzen.
Danke auch für die detaillierte Erklärung.
Weiter unten komme ich auf deine Lösung zu sprechen, aber ich wollte mir kurz die Zeit nehmen und dir die Frage beantworten, warum ich diese Art von Sperren machen möchte.
Wie sehen die Angriffe aus, dass das notwendig wurde? Ich habe früher einmal auch gedacht, ich müsse meinen Server auf diese Weise schützen - das ist aber meist völlig übertrieben. Da würde ich an deiner Stelle noch einmal die Notwendigkeit prüfen und evtl. in Erfahrung bringen, ob dein Anbieter serverseitig Tools wie fail2ban oder mod_security unterstützt.
Eines vorweg, ich bin kein Fachmann. Aus der Idee und Notwendigkeit heraus habe ich vor 15 Jahren angefangen mir die Dinge anzueignen, die ich wissen muss und für alles andere habe ich Fachpersonen beauftragt. Daher entschuldige bitte, wenn ich mich hier und da Laienhaft ausdrücke
Ich bin bei All-inkl und die waren auch nach vielen Jahren des Wechsels der Hoster, die Ersten die meinen kleinen Shop stabil und sicher Online halten konnten.
Fail2Ban und co laufen auf meinem Server und meine Seite hat seit dem Wechsel vor 4 Jahren auch 100% Ontime.
Ich vertreibe zwar nur Ersatzteile für Heizungen, aber dennoch werde ich oft "angegriffen".
Wobei ich mit Angriff nicht nur das klassische Hacken meine.
DDOS Attacken sind mir *drei mal auf Holz klopfen* erspart geblieben.
Aber die vielen Bots, die nach Lücken scannen, die Brute Force Attacken, die BadBots und so weiter - sind die welche meinem Shop das Leben schwer machen.
Ich habe schon immer einen eigenen Server genommen und kein kleines Hostingpaket, aber die Last der Bots machte meinen Shop langsam.
Das hat unser Hoster soweit gut im Griff. Vor allem was Bruteforce und Flooder angeht, haben wir seit dem ruhe.
Was übrig geblieben ist, sind die vielen Bots - die trotz robots.txt scannen wie die irren.
In der Regel sind es Suchmaschinen Bots, die eigentlich Daten sammeln oder die nach Logins (wp-admin, ect.) suchen.
Vieles kann man filtern, aber nicht alles. Vor allem, wenn es darum geht Verzeichnisse nach Lücken zu scannen.
Das verursacht viele abfragen und eine hohe Last auf der Datenbank. Trotz gutem Cache.
Sogenannte XSS Scriptanfragen und ähnliches sperrt schon der Shop aus. Aber es bleibt manches übrig.
Ich habe dann als Erstes die ganzen 404 anfragen, die durch die Verzeichnis Scans entstehen - über die htaccess umgeleitet (ErrorDocument 404 /404.html) und auf eine statische Seite ohne Datenbankverbindung weitergeleitet. Wenn dann Bots per Bruteforce nach logins (wp-admin, ect.) oder Verzeichnissen suchen, dann bekommen sie eine einfache html ausgeliefert.
Dies nimmt schon ordentlich Last vom Server.
Dennoch kommen viele Bots die einfach nur Datensammeln, den ganzen Shop durchforsten.
Marketing Firmen, Datensammler und wahrscheinlich auch Mitbewerber.
In einer Geschwindigkeit das die "Firewall" nicht greift, aber wenn dann gleich 10 davon kommen wird es langsam.
Ganze Botnetzwerke greifen dann auf einmal auf meine Seite zu. Laut Logs rund 90% außerhalb der EU.
Darum habe ich, seit dem ich nur europäischen Seiten zugriff erlaube, ein entlasteten Server
Nun bleiben nur noch die paar Suchmaschinen/BadBots und ein paar IP Adressen zu sperren, um die Last zu verringen.
Darum möchte ich gerne Ip Adressen sperren.
Den Bilderklau möchte ich grundsätzlich nicht verbieten. Zum einen haben wir ein Wasserzeichen was Werbung für uns ist.
Zum anderen werde ich bzw. die Bilder oft in Handwerker Foren verlinkt. Die kenne ich alle nicht und möchte diese dann nicht aussperren.
Ist ja Werbung für mich
Aber es gibt Seiten die einfach nur einen Haufen Bilder verlinken und dazwischen Adwords schalten.
Teilweise auch mit Inhalt. Seo Seiten aus dem Ausland. Wenn ich Beispiele davon nennen darf:
https://123arbeitsplatten.blogspot.com/2019/11/10-das-beste-von-diana-badewannen.html
http://ljndawson.org/vaillant-vcw-240-xeu-explosionszeichnung.html
Die möchte ich manuell aussperren, bzw. ein Wasserzeichen Bild automatisch einblenden, daher die Bilderregel.
Es gibt so ein schönes Tool zum Auslesen der Apache.log, die mir dann die Seiten anzeigt, die darauf zurückgreifen.
HTTP LogStat - falls du es noch nicht kennen solltest.
Und zuletzt eben das aussperren von Bad Bost, die ich auch über die Apache log finde
BrowserMatchNoCase "Cliqzbot" bots
Nun zu deiner Lösung
Wenn ich dich richtig verstehe, dann sollte meine .htaccess dann so aussehen?
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE AT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE CH AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
Order allow, deny
Allow from env=AllowCountry
Deny from 111.111.111.111
Dabei erhalte ich folgende Fehlermeldung:
Error 500
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@MeineDomain.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Wenn ich deine Anleitung richtig verstanden habe, dann soll ich das Allow from hinter die IP Adressen setzen:
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE AT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE CH AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
Order allow, deny
Deny from 111.111.111.111
Allow from env=AllowCountry
Aber auch da erhalte ich leider die Error 500 meldung.
Daher wäre ich dir dankbar, wenn du noch einmal drüber schauen könntest was ich falsch verstanden habe.
Danke dir vorab.
Gruß Heiko