Anmeldeversuche mit Zeit-Sperre

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Anmeldeversuche mit Zeit-Sperre

Beitrag von Faar » Fr 12. Jun 2015, 08:53

Hallo miteinander!
Gibt es für das Contenido-Backend-Login eine Zeitsperre für vergebliche Anmeldeversuche?
Wenn nein, wird das nötig sein.

Mein Hintergrund ist der, dass auf Wordpress Installationen massenweise Brute Force Angriffe auf den Login gestartet werden, von verschiedensten IPs aus.
Auch wurde scheints neulich irgendeine eine APP oder etwas ähnliches gehackt, weil es am Login keine Sperr-Zeit gab, so war ein Brute Force scheints erfolgreich.
Und heute Nach fand wieder ein Angriff auf eine Kundeninstallation statt und diesmal etwas schlauer als sonst. Vermutlich haben die Hacker die Bots verbessert oder manuell angesteuert (weil im Abstand von wenigen Minuten die IP gewechselt wurde bei Sperrung).
Ohne Plugin das die Fehlversuche protokolliert, sperrt und benachrichtigt, wüsste ich gar nicht, was sich da am Login tut.
So aber kann ich es sehen und darauf reagieren.

Was sehe ich aber beim Contenido Login?
Nichts.
Aber nur weil ich nichts sehe, heißt es nicht, dass sich da nichts tut.

Schön wäre es, wenn man wie z.B. bei dem WP Plugin "Limit Login Attempts" Login-Fehlversuche und Sperrzeiten eintragen könnte als auch sämtliche Sperrungen in einer Datei oder Datenbank geloggt werden und man daraus gezielt eine IP dauerhaft sperren könnte. Bei zu vielen Fehlversuchen sollte eine Nachricht an den Admin gehen.
"Sichere Passwörter" nützen gar nicht so viel, wenn Bots ungestört über Wochen alle Millisekunde einen Login-Versuch starten können. Irgendwann trifft es.
Eine Sperrzeit würde das ganz erheblich einschränken und Brute Force nahezu unmöglich machen.

Gibt es das bei Contenido schon oder hab ich es nur nicht gefunden? :wink:
Andernfalls wäre es gut, wenn das schleunigst eingebaut wird.

Beim Frontend kann man sich notfalls selbst das Login-Modul so stricken, dass es sperrt.

VG,
Faar
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von Oldperl » Fr 12. Jun 2015, 09:16

Hallo Faar,

das von Dir gesuchte Feature ist weder in der 4.8 noch in der 4.9 so eingebaut. Bei 4.8 gibt es auch keine Möglichkeit dies ohne einen Eingriff in den Core zu implementieren. Bei der 4.9 sieht das etwas anders aus, hier habe ich 2 Möglichkeiten bzw. Stellen an denen ich auch ohne direkte Änderungen am Core eine entsprechende Funktionalität einbauen könnte.
Falls Jemand auf ein entsprechendes PlugIn für CONTENIDO 4.9 Wert legt kann er sich ja einfach bei mir melden.

Zur Info: Derzeit loggt CONTENIDO in beiden Versionen ausschließlich erfolgreiche LogIns. Ein Log für erfolglose Versuche oder eine Zeitsperre ist nicht vorhanden.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von Faar » Fr 12. Jun 2015, 09:57

Oldperl hat geschrieben: Zur Info: Derzeit loggt CONTENIDO in beiden Versionen ausschließlich erfolgreiche LogIns. Ein Log für erfolglose Versuche oder eine Zeitsperre ist nicht vorhanden.
Ähm, das ist aber eher nur so für den Zeitvertreib, um zu sehen wer da was macht und wann er arbeitet?
Aber für die Sicherheit bringt das wohl nichts. :?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von Oldperl » Fr 12. Jun 2015, 13:37

Kommando zurück, die Lösung ist (leider) nicht als Plugin möglich, da Plugins erst nach erfolgreichem Login eingebunden werden. Daher gibt es eigentlich nur eine Stelle an der man sich da "einklinken" kann. Die Datei config.local.php im Konfigurationsverzeichnis (im Demomandanten: data/config/production)

Sollte die Datei nicht vorhanden sein dann eine so benannte leere PHP-Datei mit öffnendem PHP-Tag erstellen und folgendes Eintragen:

Code: Alles auswählen

/**
 * write log for login attempts
 * 
 * @author Ortwin Pinke
 * @copyright PHP-Backoffice <www.php-backoffice.de>
 * 
 */
if($_POST['vaction'] == "login" && !empty($_POST['username'])) {
    require_once($backendPath . '/classes/log/class.log.php');
    require_once($backendPath . '/classes/log/class.log.writer.php');
    require_once($backendPath . '/classes/log/class.log.writer.file.php');
    $oLogWriter = cLogWriter::factory("File", array("destination" => $cfg['path']['contenido_logs'] . "login_attempts.log"));
    $oLog = new cLog($oLogWriter);
    $sMessage = "login attempt with username '".$_POST['username']."' from ".$_SERVER['REMOTE_ADDR'];
    $oLog->log($sMessage);
} 
Ab sofort werden alle Versuche eines Login ins Backend, ob nun erfolgreich oder nicht, inclusive Remote-Adresse in die Logdatei 'login_attempts.log' geschrieben. So hast Du dann zumindest schon mal eine Info Wann und Woher Jemand versucht ins Backend zu kommen.

In der Log-Datei werden dann die Versuche in folgender Form gelogt und können im Backend unter Logs eingesehen werden.
[2015-06-12 12:12:42] [ INFO ] login attempt with username 'TheHacker' from 127.0.0.1
[2015-06-12 12:34:47] [ INFO ] login attempt with username 'sysadmin' from 127.0.0.1
[2015-06-12 12:34:55] [ INFO ] login attempt with username 'sysadmin' from 127.0.0.1
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von Faar » Fr 12. Jun 2015, 14:22

Danke, das funktioniert sogar! :D
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von Oldperl » Sa 13. Jun 2015, 09:30

Na das hoffe ich doch! :wink:

Ich hab da schon ein paar Ideen wie man das noch ein wenig "aufmotzen" kann. Dazu wird es dann wohl doch noch ein Plugin geben. Dachte da an eine einstellbare IP-Sperre und/oder eine Anmelde-Verzögerung. Da man nicht direkt den Anmeldevorgang beeinflussen kann würde ich dazu die Auslieferung der Ergebnisseite verzögern.
Na mal schau' n... ;)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: Anmeldeversuche mit Zeit-Sperre

Beitrag von frederic.schneider_4fb » Do 18. Jun 2015, 10:41

Zunächst vielen Dank an Ortwin für eine Zwischenlösung.

Wir haben diese - tolle - Idee bei uns intern eben diskutiert und sehen die Implementierung einer solchen "Limit login Attempts""-Funktion für eine spätere CONTENIDO-Version vor. Dabei geht es dann nicht nur um das Loggen von Fehlversuchen, sondern auch darum, dass es nach einer Anzahl X von Fehlversuchen für eine Zeit Y nicht mehr möglich ist, sich anzumelden.
Frederic Schneider
Entwickler bei der four for business AG

Antworten