Hallo Thomas, hallo Leute,
Am Montag, 14. Oktober 2013 schrieb Thomas Krause via postfix-users:
mir fällt dazu nur folgende Logik ein (wie man die aber programmiermäßig umsetzen soll ...):
wenn ein user sich innerhalb einer kurzen Zeitspanne von unterschiedlichen IP's erfolgreich authentifiziert, muss es sich um einen ausspionierten Account handeln.
Oder er hat einfach nur zu viel Technik rumliegen und wechselt munter zwischen PC, Laptop, Smartphone etc. Die DSL-Zwangstrennung kommt noch erschwerend hinzu ;-)
Dieser wäre dann zu sperren:
Ich würde mindestens 3 verschiedene IPs als unverdächtig ansehen.
Wenn kurz hintereinander mehr als 10 verschiedene IPs auftauchen, dürfte das ein recht sicheres Zeichen für einen ausspionierten Account sein ;-)
Das Programmieren ist im Prinzip eine Fleißarbeit - das Log parsen, Username, IP und Zeitpunkt speichern (bzw. bei gleicher IP und Username den Zeitpunkt aktualisieren) - und ältere Einträge wieder löschen.
Eine kleine Datenbank würde sich dafür anbieten, mit den Spalten username, ip, timestamp. Dazu würde ich einen UNIQUE index (username,ip) (also beide Spalten) empfehlen - dann kannst Du einfach REPLACE INTO verwenden und sparst Dir den Check, ob Du jetzt INSERT oder UPDATE brauchst ;-)
Fürs Sperren kannst Du dann auf SELECT username FROM db WHERE COUNT(username) > 4 GROUP BY username zurückgreifen - das ergibt die vollständige Sperrliste.
Das Expire macht DELETE FROM db WHERE TIMESTAMPDIFF(MINUTE, timestamp, NOW()) > 180
Alles ungetestet, so in etwa müsste es aber funktionieren ;-)
Gruß
Christian Boltz
PS: Zufallssignatur ;-)