Da Shopware wohl erst in 3.5.5 die Möglichkeit bietet, Backend- und Frontend-Login gegen Brute-Force Attacken abzusichern, habe ich es beim Backend mal mit Bordmitteln versucht - und bin leider gescheitert, weil mir wohl PHP einen Strich durch die Rechnung macht. Ich weiß nur nicht, warum. Folgendes habe ich mit der Apache-Config (geht theoretisch auch mit .htaccess und .htpasswd in einem anderen Pfad) probiert: <locationmatch>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/mein/pfad/zum/passwortfile
Require user meinuser
</locationmatch>
Das passwortfile wurde vorher mit htpasswd -cb … erzeugt. Der Apache Auth Loginscreen kommt auch, leider wird es nach dem Absenden mit einem 500er Server Error quittiert. Hat noch jemand von Euch das Problem oder es schon gelöst?
Das ist bereits schon in 3.5.4 drin! In 3.5.5 gibt es aber weitere Verbesserungen.
Oh. Da habe ich dann im Shopware Trac etwas falsch verstanden? Da steht 3.5.5 drin: http://trac.shopware.de/trac/ticket/100370 Ein Grund mehr, demnächst mal das Update zu machen. Wollte eigentlich bis 3.5.5 damit warten, denn das steht ja quasi vor der Haustür. Das Elegante an der htpasswd wäre nur, dass man es per Logfile mit fail2ban verknüpfen und damit dauerhaft die angreifende IP blocken kann.
Hallo zusammen, wir haben das Update noch nicht durchgeführt, gibt es schon ein Workflow, um das Backend mittels htaccess zu sperren?
Man könnte z.B. folgenden Code in die config.php einfügen. $allowedIps = array("192.168.178.13"); if (preg\_match("/(\/engine\/backend\/modules\/|\/engine\/backend\/ajax|\/backend\/auth|\/backend\/index)/",$\_SERVER['REQUEST\_URI'])!==false && !in\_array($\_SERVER['REMOTE\_ADDR'],$allowedIps) ){ die("Protected"); }
Dort kann man oben eine Liste mit gültigen IP-Adressen definieren, alle anderne Zugriffe werden dann blockiert. Wäre auch über ein Plugin relativ einfach umsetzbar, zumindest was die Absicherung der Login-Seite betrifft. @Tschersich Unter Nginx mache ich das so - lässt sich leider nicht auf Apache adaptieren, aber eventuell hilft das trotzdem weiter… if ($remote\_addr = "80.152.242.xxx"){ set $trusted "1"; } // Login absichern if ($request\_uri ~\* "/backend/auth/") { set $permitDo "do${trusted}"; } // Oder auch um nur bestimmte Backend-Module für bestimmte IP-Adressen freizugeben if ($request\_uri ~\* "/engine/backend/modules/presetting/(.+)\.php\?edit=1") { set $permitDo "do${trusted}"; } if ($request\_filename !~\* "skeleton\.php") { set $permitDo "${permitDo}Permit"; } if ($permitDo = doPermit) { return 500; }
[quote=“Stefan Hamann”]Man könnte z.B. folgenden Code in die config.php einfügen. $allowedIps = array("192.168.178.13"); if (preg\_match("/(\/engine\/backend\/modules\/|\/engine\/backend\/ajax|\/backend\/auth|\/backend\/index)/",$\_SERVER['REQUEST\_URI'])!==false && !in\_array($\_SERVER['REMOTE\_ADDR'],$allowedIps) ){ die("Protected"); }
Dort kann man oben eine Liste mit gültigen IP-Adressen definieren, alle anderne Zugriffe werden dann blockiert. [/quote] Hallo ! Habe das bei mir versucht (natürlich mit meiner IP ) …klappt aber nicht… sperrt mir gleich den ganzen Shop für fremde IP… habe auch versucht die regex Zeichenkombination gemäß PHP Anleitung zu modifizieren…kein Erfolg… Hat das von euch wer im Einsatz und kann hier helfen ? lg klaus
Hallo, versuch’s mal so (nicht getestet!): $allowedIps = array("192.168.178.13"); if (preg\_match("/(\/engine\/backend\/modules\/|\/engine\/backend\/ajax|\/backend\/auth|\/backend\/index)/", $\_SERVER['REQUEST\_URI']) === 1 && !in\_array($\_SERVER['REMOTE\_ADDR'], $allowedIps)) { die("Protected"); }
TOP :thumbup: Hat geklappt…woher hattest Du die Info ??? Habe verzweifelt gesucht… Vielen Dank ! lg klaus
Hallo Klaus, freut mich, wenns klappt. [quote=“klausm”] woher hattest Du die Info ??? [/quote] Hab im Handbuch nachgeschaut: http://php.net/manual/de/
Hi, das muss in die /root/config.php wo die Datenbank drin ist? Wenn ich den Code in der 3.5.6 einfach darunter setzte gibts ne Fehlermeldung.