Loginsperre für CMSimple 5.20++

CMSimple 4.0 und höher
Post Reply
Gert
Posts: 2248
Joined: Sun 18. Nov 2012, 14:18

Loginsperre für CMSimple 5.20++

Post 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
Gert Ebersbach | CMSimple | Templates - Plugins - Services
Gonzo Gates
Posts: 235
Joined: Thu 19. Jan 2023, 21:46

Re: Loginsperre für CMSimple 5.20++

Post 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
Ich kenne keinen Sysadmin oder Programmierer, der sich noch nie ins Knie geschossen hat :!:
Gert
Posts: 2248
Joined: Sun 18. Nov 2012, 14:18

Re: Loginsperre für CMSimple 5.20++

Post 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 der Ordner 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
Last edited by Gert on Wed 15. Oct 2025, 17:33, edited 1 time in total.
Gert Ebersbach | CMSimple | Templates - Plugins - Services
Gert
Posts: 2248
Joined: Sun 18. Nov 2012, 14:18

Re: Loginsperre für CMSimple 5.20++

Post 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.
Gert Ebersbach | CMSimple | Templates - Plugins - Services
Gonzo Gates
Posts: 235
Joined: Thu 19. Jan 2023, 21:46

Re: Loginsperre für CMSimple 5.20++

Post by Gonzo Gates »

Hallo Gert,

danke für die Erleuchtung, denn 1. hatte ich

Code: Select all

if(!is_dir('./loginlimit')) mkdir('./loginlimit');
übersehen und 2. nicht an Subsites und Mehrsprachen gedacht, als ich den Ort des Ordners erwähnte.

Das die 'login.txt' ein Relikt ist, hatte ich in Erwägung gezogen, wollte es aber bestätigt wissen, ist aber verwirrend für ein richtiges Feedback ohne Fragen.

Wenn ich 1 Jahr durch falsche Eingabe meines Kennwortes bis zum nächsten Login warten muss, dann rufe ich doch lieber die 'setupControl.php' auf oder ändere die Lockout-Zeit in der 'CMSROOT/cmsimple/config.php' oder der 'login.php', je nachdem ;-) Man könnte auch warten, bis man vom ISP eine neue IP-Adresse bekommt und in der Zeit über sein Kennwort sinnieren.

Danke für die Einblicke

Gruß
Gonzo
Ich kenne keinen Sysadmin oder Programmierer, der sich noch nie ins Knie geschossen hat :!:
Gert
Posts: 2248
Joined: Sun 18. Nov 2012, 14:18

Re: Loginsperre für CMSimple 5.20++

Post by Gert »

Gonzo Gates wrote: Wed 15. Oct 2025, 21:29 Wenn ich 1 Jahr durch falsche Eingabe meines Kennwortes bis zum nächsten Login warten muss, dann rufe ich doch lieber die 'setupControl.php' auf ...
Die setupControl.php bzw. ein neues Passwort wird wohl nicht helfen.

Gonzo Gates wrote: Wed 15. Oct 2025, 21:29 ... oder ändere die Lockout-Zeit in der 'CMSROOT/cmsimple/config.php' oder der 'login.php', je nachdem ...
Statt die config.php oder die login.php runterzuladen, zu bearbeiten und wieder hochzuladen:
Gert wrote: Wed 15. Oct 2025, 16:48 Ich selbst kann ja die Sperrdatei jederzeit per ftp löschen.
Das ist die Datei im Ordner ./loginlimit/, die nach der IP Adresse benannt ist.

Wenn man 1 Jahr warten muss, hat man das wohl selbst festgelegt, im Auslieferungszustand werden es 5 min sein ;)

Die login.txt ist weniger ein Relikt, sondern eher eine einfache Möglichkeit für die, die es können, schon jetzt in CMSimple 5.20 eine einfache, einprachige Loginsperre zu integrieren, oder damit rumzuspielen und zu verstehen, wie sie funktioniert. Nach dem Update auf CMSimple 5.21 hat man dann die Vollkomfort Loginsperre.

Dann kann man sich mit einer anderen IP Adresse einloggen (z. B. Smartphone) und die Dauer der Loginsperre vorübergehend auf 0 setzen, oder sie komplett deaktivieren. Das sollte dann aber spätestens beim 3. Versuch klappen :lol:

Gert
Gert Ebersbach | CMSimple | Templates - Plugins - Services
Post Reply