Last Login eines Nutzers oder Rechners im LDAP speichern

german
feedback

#1

Hallo,

ich hatte ja schon einmal wegen eines nicht allgemeinen, bei mir hier vorhandenen Problems (Inventarisierung) angefragt, ob UCS irgendwo Daten zum letzten erfolgreichen Anmeldeversuch speichert.
Leider ist dies ja nicht der Fall. Wie schwierig wäre das zu implementieren? Ist das eventuell schon geplant?

Das wäre jedenfalls mein Feature Request, wenn ich das mal so nennen darf. Für Reports, die man im Directory Manager erstellen kann, wäre das sehr hilfreich.

Wenn sich ein Nutzer an einem Rechner, der in der Domäne ist, anmeldet, kann das überhaupt irgendwo im UCS-System festgestellt werden oder werden die Anfragen direkt an den LDAP-Server gerichtet? Bei letzterem müsste ja der ldap-Server zwischen verschiedenen Anfragen unterscheiden können, eben der Anmeldung eines Nutzers/PCs und dem Rest wie einfachen Dateiauflistungen in einem Verzeichnis, die ja aufgrund der Dateirechte schon LDAP-Anfragen auslösen und die Daten selbstständig aktualisieren.

Falls das “userPassword” nur angefragt wird, sofern es zur Anmeldung erforderlich ist, stelle ich mir das so vor, dass man einfach bei jeder Anfrage an diesen Eintrag einfach eine Zeit in “userPasswordLastAccess” setzten könnte. Nungut, das ist bestimmt etwas naiv, aber wie realistisch ist das?


Lastlogin User
#2

Hallo,

Sie schrieben:

[quote]
ob UCS irgendwo Daten zum letzten erfolgreichen Anmeldeversuch speichert.
Leider ist dies ja nicht der Fall. Wie schwierig wäre das zu implementieren? Ist das eventuell schon geplant?[/quote]

Es ist nicht geplant solch eine Funktion in UCS zu implementieren.
Ich habe dazu aber einen Eintrag in unserer internen Datenbank erstellt, sodass dies zu gegebener Zeit geprüft wird.

Sie schrieben:

Eine Möglichkeit dies speziell zu erfassen ist ebenfalls nicht vorhanden. Ich habe hierzu ebenfalls einen Eintrag in unserer internen Datenbank erstellt, sodass dies auch zu gegebener Zeit geprüft wird. Eventuell können Ihnen die Einträge in der Log-Datei “/var/log/auth.log” hier weiterhelfen. In dieser Datei werden unter anderem Anmeldeversuche der Benutzer protokolliert, auch von den Benutzern die sich an Samba anmelden. Sofern Sie Servergespeicherte Profile für Windows verwenden, können Sie den Zeitstempel der Datei NTUSER.DAT heranziehen. Diese Datei wird allerdings nur beim Abmelden beschrieben.

Ausserdem besteht die Möglichkeit (nur bei der Anmeldung an Windows Clients) ein Netlogon Skript zu erstellen das kurzzeitig zu einem Samba Share auf dem Samba Server verbindet. In Samba kann der Share so konfiguriert werden das er bei jeder Verbindung ein Skript ausführt welches wiederum in eine Logdatei protokolliert das eine Anmeldung stattgefunden hat. Dies ist auch schon einmal realisiert worden. Hierfür können Sie das Paket http://apt.univention.de/2.0/unmaintained/component/ucsschool/i386/univention-netlogon-logon_1.0.200-1.4.200810201629_i386.deb herunterladen und installieren.

Bitte beachten Sie das dieses Paket aus der Komponennte UCS-School stammt und daher erstens: unmaintained ist und zweitens: evtl. auf andere UCS-School Pakete aufbaut.

Sie schrieben:

Dies wäre vermutlich nicht aussagekräftig. Da auch Anmeldungen am Mailserver(Horde), Anmeldungen per SSH oder auch ein Authentifizierter ldapsearch auf einen Benutzer das Passwort abfragen. Außerdem wäre das mit relativ hohem Aufwand verbunden, da im LDAP nicht ohne weiteres die Abfrage eines Attributs protokolliert werden kann.

Mit freundlichen Grüßen
Murat Odabas

EDIT: Ab UCS Version 2.4 ist der folgende Link gültig: apt.univention.de/2.4/maintained … 3_i386.deb


#3

[quote=“odabas”]
Sie schrieben:

Dies wäre vermutlich nicht aussagekräftig. Da auch Anmeldungen am Mailserver(Horde), Anmeldungen per SSH oder auch ein Authentifizierter ldapsearch auf einen Benutzer das Passwort abfragen.[/quote]

Das wäre eigentlich genau das, was ich suche. Der Benutzer wird dann immerhin benutzt, genau das, was ich sehen möchte. Um eine Anmeldung speziell an einem Rechner geht es mir gar nicht, obwohl diese Unterscheidung natürlich auch recht praktisch wäre.
Genauso Maschinenobjekte, etc.

Das heißt, dies würde nur durch Änderungen direkt an ldap/slapd möglich? Das klingt nicht so, als würde das u.U. irgendwann mal möglich sein. Nungut, derzeit kann ich da nur abwarten, da ich selber dieses Jahr auf keinen Fall mehr Zeit finden werden, mich da vielleicht mal selber einzuarbeiten.


#4

Hallo,

Sie schrieben:

[quote]Das wäre eigentlich genau das, was ich suche. Der Benutzer wird dann immerhin benutzt, genau das, was ich sehen möchte. Um eine Anmeldung speziell an einem Rechner geht es mir gar nicht, obwohl diese Unterscheidung natürlich auch recht praktisch wäre.
Genauso Maschinenobjekte, etc.[/quote]

Hierbei sollte beachtet werden das eine Anmeldung nicht nur über das Attribut “userPassword” vorgenommen wird, sondern auch über Kerberos(krb5keys) oder Samba(samba*Password). Somit kann der Zugriff auf “userPassword” nicht mit einer Anmeldung gleichgesetzt werden. Dazu kämen noch weitere Probleme wie, das Anmeldungen zwischengespeichert werden, z.B. von Windows oder anderen Diensten die LDAP-Attribute abfragen z.B die LDAP-Replikation oder Kerberos.

Falls Sie dieses Vorhaben dennoch implementieren wollen, könnten Sie dies über slapd-Logging oder ein Overlay-Modul realisieren.

Sie schrieben:

Zur Umsetzung würden wir vermutlich den Weg über Netlogon-Skripte unter Windows und über PAM-Session unter Linux wählen.

Mit freundlichen Grüßen
Murat Odabas


#5

[quote=“odabas”]
Zur Umsetzung würden wir vermutlich den Weg über Netlogon-Skripte unter Windows und über PAM-Session unter Linux wählen.[/quote]

Wenn der LDAP-Server nicht bei jeder Anmeldung kontaktiert wird, scheint mir das, so wie sie schreiben, wohl die beste Möglichkeit zu sein.

In dem Zusammenhang mal eine Frage: Mir ist bekannt, dass LDAP auf schnelles Lesen optimiert ist, schreiben aber u.U. deutlich aufwändiger als bei üblichen Datenbanken ist. Wie sieht das bei der Aktualisierung von vorhandenen Werten aus? Wenn man z.B. einen Wert “lastLogin” einem Benutzer- oder Rechnerobjekt hinzufügt und bei jeder Anmeldung aktualisiert, wie sehr verlangsamt man damit die Anmeldung? Schließlich muss ja prinzipiell nichts reorganisiert werden, da die Speichergröße des Wertes sich nicht ändert, wobei ich natürlich nicht weiß, wie slapd da vorgeht.


#6

Hallo,

grundsätzlich ist es richtig das OpenLDAP auf Lesevorgänge optimiert ist, allerdings sind auch Schreibvorgänge (OpenLDAP behandelt auch die Aktualisierung eines bestehenden Attributs als Schreibvorgang), spätestens seit Einführung des BDB-Backends, sehr performant.
Daher wird sich die Verlangsamung durch das Schreiben eines Attributs bei der Anmeldung, auf einem ausreichend dimensionierten System, vermutlich in Grenzen halten. Dies wird sich allerdings nicht ohne ausreichende Tests bestätigen oder wiederlegen lassen.

Mit freundlichen Grüßen
Janis Meybohm