openldap user soll sich nur einmal anmelden dürfen
Hallo, meine User melden sich im Netz über ldap an. Soweit so gut aber wie kann ich es verhindern das sich user an 2 Arbeitsplätzen gleichzeitig einloggen? Bei einigen Users sind Mehrfach-Anmeldungen ok aber bei einigen anderen möchte ich das gerne blocken da ansonsten bestimmte Anwendungen Probleme bekommen. Gruß und Dank -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Ralf Prengel wrote:
Hallo,
meine User melden sich im Netz über ldap an. Soweit so gut aber wie kann ich es verhindern das sich user an 2 Arbeitsplätzen gleichzeitig einloggen? Bei einigen Users sind Mehrfach-Anmeldungen ok aber bei einigen anderen möchte ich das gerne blocken da ansonsten bestimmte Anwendungen Probleme bekommen.
Völlig unabhängig von LDAP: /etc/security/limits.conf: May 28 21:48:04 katgar sshd[5636]: Accepted keyboard-interactive/pam for user from 192.168.0.5 port 2572 ssh2 May 28 21:48:04 katgar sshd[5647]: pam_limits(sshd:session): Too many logins (max 1) for user # für Gruppe users: @users hard maxlogins 1 # für Gruppe admins: @admins hard maxlogins 10 # für user poweruser: poweruser hard maxlogins 3 -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
* Mittwoch, 28. Mai 2008 um 12:50 (+0200) schrieb Ralf Prengel:
meine User melden sich im Netz über ldap an. Soweit so gut aber wie kann ich es verhindern das sich user an 2 Arbeitsplätzen gleichzeitig einloggen? Bei einigen Users sind Mehrfach-Anmeldungen ok aber bei einigen anderen möchte ich das gerne blocken da ansonsten bestimmte Anwendungen Probleme bekommen.
Eine interessante Aufgabenstellung... Ich habe aber auch keine Lösung und ich bezweifele auch, dass es da etwas Fertiges gibt. Ein Problem ist IMHO, dass es AFAIK keine standardisierte netzwerkweite Erfassung gibt, ob und wo ein User angemeldet ist. Also muss man es selbst "basteln"... Wenn ich es machen müsste, dann würde ich es so machen (Grobplanung): - Eines der "pam_script"-Module installieren, z.B. "https://sourceforge.net/projects/pam-script/". - Ein "session-open"-Skript erstellen, dass - überprüft, ob es sich um einen der "begrenzten" Benutzer handelt (entweder Gruppenzugehörigkeit oder LDAP-Attribut). - anhand eines ggfs. selbsterstellten LDAP-Attributs (z.B. "isSession") prüft, ob schon eine Session läuft und falls ja mit einem Fehlercode abbricht. Falls noch keine Session läuft, wird "isSession" "yes" gesetzt und das Skript ohne Fehler beendet. - Ein "session-close"-Skript erstellen, dass "isSession" auf "no" setzt. - PAM konfigurieren, dass "pam_script.so" ausgeführt wird. Alternativ könnte man natürlich auch ein komplettes PAM-Modul mit ähnlicher Funktionalität schreiben oder "pam_ldap" modifizieren oder erweitern. Gruß Andreas -- Amarok spielt gerade nichts... GPG-ID/Fingerprint: 6F28CF96/0B3B C287 30CE 21DF F37A AF63 A46C D899 6F28 CF96 GPG-Key on request or on public keyservers -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Andreas, Am Mittwoch 28 Mai 2008 22:23:57 schrieb Andreas Koenecke:
Eine interessante Aufgabenstellung... Ich habe aber auch keine Lösung und ich bezweifele auch, dass es da etwas Fertiges gibt. Ein Problem ist IMHO, dass es AFAIK keine standardisierte netzwerkweite Erfassung gibt, ob und wo ein User angemeldet ist. Also muss man es selbst "basteln"... Wenn ich es machen müsste, dann würde ich es so machen (Grobplanung):
- Eines der "pam_script"-Module installieren, z.B. "https://sourceforge.net/projects/pam-script/". - Ein "session-open"-Skript erstellen, dass - überprüft, ob es sich um einen der "begrenzten" Benutzer handelt (entweder Gruppenzugehörigkeit oder LDAP-Attribut). - anhand eines ggfs. selbsterstellten LDAP-Attributs (z.B. "isSession") prüft, ob schon eine Session läuft und falls ja mit einem Fehlercode abbricht. Falls noch keine Session läuft, wird "isSession" "yes" gesetzt und das Skript ohne Fehler beendet. - Ein "session-close"-Skript erstellen, dass "isSession" auf "no" setzt. - PAM konfigurieren, dass "pam_script.so" ausgeführt wird.
Prinzipiell hast du sicherlich eine (theoretisch) funktionierende Lösung, nur was machst du in dem Fall wenn der Client das isSession nicht mehr zurücksetzt? Dann stehst du da und brauchst nen Admin um es zurückzusetzen. Wenn man das so macht müsste man die session id* da rein schreiben und zwar so das sie vom pam_script auch geprüft werden kann ob sie überhaupt noch existiert. Alles was allgemein für Lockfiles gilt, gilt hier auch! *) zb. ip-adresse des Rechners und prozess-id, dann könnte man theor. prüfen ob es die session schon gibt oder nicht. Die richtige (und zwar eine die über die gesamte Sitzung erhalten bleibt) prozessid zu finden könnte allerdings in einigen Fällen einigermaßen schwierig werden, zb. wenn ein Loginmanager den login prüft und anschließend die eigentliche session eine ganz andere pid bekommt, aber vielleicht gibt es dafür ja Lösungen. zb. ein update der prozessid im isSession Attribut nachdem der start der session vollständig abgeschlossen ist, dann muß man aber wiederum sicher verhindern das aus einer laufenden session heraus noch weitere gestartet werden können. Hört sich alles nach 'much fun' an. Gruss Falk -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Falk. * Donnerstag, 29. Mai 2008 um 06:48 (+0200) schrieb Falk Sauer:
Am Mittwoch 28 Mai 2008 22:23:57 schrieb Andreas Koenecke:
[ Session-Kontrolle mit pam-script]
Prinzipiell hast du sicherlich eine (theoretisch) funktionierende Lösung, nur was machst du in dem Fall wenn der Client das isSession nicht mehr zurücksetzt? Dann stehst du da und brauchst nen Admin um es zurückzusetzen.
Wenn man das so macht müsste man die session id* da rein schreiben und zwar so das sie vom pam_script auch geprüft werden kann ob sie überhaupt noch existiert. Alles was allgemein für Lockfiles gilt, gilt hier auch!
*) zb. ip-adresse des Rechners und prozess-id, dann könnte man theor. prüfen ob es die session schon gibt oder nicht. Die richtige (und zwar eine die über die gesamte Sitzung erhalten bleibt) prozessid zu finden könnte allerdings in einigen Fällen einigermaßen schwierig werden, zb. wenn ein Loginmanager den login prüft und anschließend die eigentliche session eine ganz andere pid bekommt, aber vielleicht gibt es dafür ja Lösungen. zb. ein update der prozessid im isSession Attribut nachdem der start der session vollständig abgeschlossen ist, dann muß man aber wiederum sicher verhindern das aus einer laufenden session heraus noch weitere gestartet werden können. Hört sich alles nach 'much fun' an.
"Have a lot of fun..." ist ja schon immer das Suse-Motto ;-) Natürlich sind noch einige Detailprobleme zu lösen, es ging mir ja auch nur um eine Möglichkeit, wie man so etwas prinzipiell machen könnte. Trotzdem halte ich den Aufwand für vertretbar, denn was ist die Alternative? "Geht nicht."? Zu dem o.g. Detailproblem: Ich würde die IP-Adresse oder den Hostnamen in das Attribut schreiben lassen und mit dem guten alten 'finger' prüfen, ob die Session auf dem Rechner tatsächlich noch läuft. Gruß Andreas -- Amarok spielt gerade nichts... GPG-ID/Fingerprint: 6F28CF96/0B3B C287 30CE 21DF F37A AF63 A46C D899 6F28 CF96 GPG-Key on request or on public keyservers -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Andreas Koenecke
-
Falk Sauer
-
Ralf Prengel
-
Sandy Drobic