Page 1 of 1

Loginsperre für CMSimple 5.20++

Posted: Fri 10. Oct 2025, 16:57
by Gert
Hallo,

vor ein paar Tagen hatte ich eine Anfrage für eine Loginsperre nach 3 Loginversuchen mit falschem Passwort, gegen Spielereien und sogenannte Brute Force Attacken. Ich habe also so etwas für CMSimple 5.21 (geplant für Januar 2026) erstellt, hier könnt Ihr es schonmal testen:

https://www.ge-webdesign.de/test520LoginLimiter/

Versucht einfach, Euch einzuloggen ;)

Die Loginsperre ist auf 1 min konfiguriert. Hier die login.php für CMSimple 5.20:

https://www.ge-webdesign.de/test520Logi ... /login.txt

Über ein wenig feedback würde ich mich freuen,

Gert

Re: Loginsperre für CMSimple 5.20++

Posted: Wed 15. Oct 2025, 13:07
by Gonzo Gates
Hallo Gert,

ein ähnlicher Gedanke zum 'Unendlich-Login' kam mir auch schon.

Ich hatte mal einen Beitrag über Login-Limitierung gelesen. Ich meine, dass es um unendliche Loginversuche mit SSH ging. Das Script hat dann nach 3 Fehlversuchen zugeschlagen und ein Zeitlimit bis zum nächsten Versuch gesetzt. War der nächste Login wieder falsch, so erhöhte sich das Zeitlimit. Beim nächsten wieder und wieder und wieder. Wurde gemacht, damit sich Brute-Force-Scripte langweilen.

Den Einbau finde ich gut gemacht, aber fände es besser, dass man bei einem Fehlversuch zurück zum Login geworfen wird und dort die Anzeige 'x Versuche vebleiben' bekommt, dammit man nicht wieder auf 'Login' auf der Ausgangsseite klickern muss und nach 3 Fehlversuchen auf die Ausgangsseite kommt mit dem Verweiß 'Login gesperrt'. Habe ich es richtig gesehen, dass der Ordner 'CMSROOT/loginlimit/' existieren muss? Dann müssten dort noch explizit Schreibberechtigungen gesetzt werden, weil die Textdatei umbenannt wird. Besser wäre doch den Ordner in 'CMSROOT/usefiles/' anzulegen. Da die Implementierung für Jan 2026 vorgesehen ist, sehe ich die jetzige als 'Showcase' an. Bis zur finalen Version fließt ja noch ein wenig Wasser die Elbe bzw. die Spree herrunter. Ich neheme an, dass die Einstellungen für die Loginsperre im Backend gemacht werden können, denn momentan sind sie am Anfang der 'login.php' hart codiert.

Ich habe das ganze nochmal durchgespielt und festgestellt, dass nach dem 1. falschen Login auf der Ausgangsseite in der 'Warning-Box' 'Incorrect password' und ein Link '2 attempts remaining' zum nochmaligen Login erzeugt wird. In der 'login.php' habe ich den Link nicht gefunden. Wird er im Template (was ich nicht glaube), in der 'cms.php' oder der 'functions.php' gebaut? In der 'login.php' steht nur

Code: Select all

<div class="cmsimplecore_warning" style="text-align: center; font-weight: 700; padding: 12px 16px;">
<p>Incorrect password</p>
<p>2 attempts remaining</p>
</div>
Auch

Code: Select all

<div class="cmsimplecore_warning" style="text-align: center; font-weight: 700; padding: 12px 16px;">
<p>3x incorrect password</p>
<p>Login locked for ' . $cmsimpleLoginLimit / 60 . ' min</p>
</div>
erscheint nicht in der 'Warning-Box' bei 3 x falschem Login.

Und jetzt oute ich mich als PHP-Legasteniker: Das hat gedauert, bis ich darauf kam bzw. auf die Idee kam zu suchen, womit die Variable '$llip' gefüllt wird. Naja, besser länger als nie ;-) Meine momentane IP-Adresse hast du jedendenfalls jetzt auf deinem Server.

Mehr Feedback fiel mir gerade nicht ein...

Doch, einee Frage noch: Wie verhält es sich , wenn mehrere parallel einen falschen Login haben. So wie ich es verstehe, würde die Textdate $llip-1.txt dann jedesmal mit einer anderen IP-Adresse benannt.

Gruß
Gonzo

Re: Loginsperre für CMSimple 5.20++

Posted: Wed 15. Oct 2025, 15:59
by Gert
Hallo Gonzo,

vielen Dank für Dein Feedback.
Gonzo Gates wrote: Wed 15. Oct 2025, 13:07 Ich habe das ganze nochmal durchgespielt und festgestellt, dass nach dem 1. falschen Login auf der Ausgangsseite in der 'Warning-Box' 'Incorrect password' und ein Link '2 attempts remaining' zum nochmaligen Login erzeugt wird. In der 'login.php' habe ich den Link nicht gefunden.
Das ganze hat sich inzwischen natürlich weiterentwickelt. Ich lade nicht jedes mal eine neue login.txt hoch. Inzwischen entwickle ich das schon zusammen mit CMSimple 5.21 weiter. Dann natürlich im Backend konfigurierbar. Die Anzeige der Länge der Loginsperre habe ich rausgenommen, weil das der Hacker nicht wissen muss ;)
Gonzo Gates wrote: Wed 15. Oct 2025, 13:07 Habe ich es richtig gesehen, dass der Ordner 'CMSROOT/loginlimit/' existieren muss? Dann müssten dort noch explizit Schreibberechtigungen gesetzt werden, weil die Textdatei umbenannt wird.
Wenn er nicht existiert, wird er erzeugt (0777).
Gonzo Gates wrote: Wed 15. Oct 2025, 13:07 Besser wäre doch den Ordner in 'CMSROOT/usefiles/' anzulegen.
Nö - es soll ja unabhängig in Subsites und Zweitsprachen funktionieren, und die haben nicht zwangsläufig einen userfiles/ Ordner. Ausserdem gehören in den userfiles/ Ordner Dateien, die vom Anwender hochgeladen werden, die Sperrdateien werden aber vom System erzeugt.
Gonzo Gates wrote: Wed 15. Oct 2025, 13:07 Wie verhält es sich , wenn mehrere parallel einen falschen Login haben
Die Loginsperre gilt nur für die IP Adresse des Hackers. Ich kann mich also auch dann einloggen, wenn gerade für verschiedene Hacker (IP Adressen) eine Loginsperre aktiv ist ;)
Deshalb basiert der Name der Sperrdatei auf der IP Adresse,

Gert

Re: Loginsperre für CMSimple 5.20++

Posted: Wed 15. Oct 2025, 16:48
by Gert
Gonzo Gates wrote: Wed 15. Oct 2025, 13:07 Das Script hat dann nach 3 Fehlversuchen zugeschlagen und ein Zeitlimit bis zum nächsten Versuch gesetzt. War der nächste Login wieder falsch, so erhöhte sich das Zeitlimit. Beim nächsten wieder und wieder und wieder. Wurde gemacht, damit sich Brute-Force-Scripte langweilen.
Auf cmsimple.org habe ich die Loginsperre auf 1 Jahr festgelegt, gleich nach dem 3. Versuch. Aber auch 1 Woche sollte schon für ausreichend Langeweile sorgen ;)

Ausser mir hat da ja niemand was zu suchen im Backend. Jeder, der sich da versucht einzuloggen, hat einen ungesunden Spieltrieb oder böse Absichten ;)

Ich selbst kann ja die Sperrdatei jederzeit per ftp löschen.