Linux Server Login Policy

german

#1

Guten Tag,

ich würde gerne mittels UCS festlegen, welche spezifische Benutzergruppe/Benutzer sich auf einem entsprechenden Linuxserver (oder an allen Server in Gruppe XY) anmelden darf (sssd).

Gibt es hierzu eine Möglichkeit, dies zentral über UCS und Computergruppen/Usergruppen zu verwalten, oder muss ich das OS-spezifisch über einen PAM Eintrag lösen?

account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/login.group.allowed

Danke,

Michael


#2

Hallo Michael,

ja das geht recht einfach zentral zu erledigen. Dazu gibt es auch irgendwo offizielle Doku, findet sich sicher ganz leicht.

Wir wollten einer Gruppe Nutzer den Login per ssh nur auf bestimmte Server erlauben, standardmäßig ist der Login bei uns nicht erlaubt. Dazu haben wir im ersten Schritt eine Gruppe “Secure Shell Benutzer” angelegt und dann die Nutzer der Gruppe zugeordnet.

Danach wurde der Login für diese Gruppe auf dem Server erlaubt mittels: ucr set "auth/sshd/group/Secure Shell Benutzer"=yes

Da wir nur 2 solche Server haben: Schon fertig. :wink:

Du könntest jetzt noch einen Schritt weiter gehen und könntest dazu einfach eine domänenweite Richtlinie definieren, die dann auf den betreffenden Servern den Login erlaubt. (udm:policies --> Richtlinie: Univention Configuration Registry --> Werte einfügen --> Erweitert: Ldap Filter anlegen, der deine Rechner eingrenzt)

Der Vollständigkeit wegen: Du könntest auch einfach alle User erlauben: ucr set "auth/sshd/restrict"=no

hoffe das hilft so etwas weiter.

Gruß Lutz


#3

Hi Lutz,

danke für den Reply.

Ist mir noch nicht ganz klar. Ich integriere meine Linux Maschinen so (also nicht als UCS Master Server, sind ganz normale Linux Maschinen, ohne UCS Stack)

yum install realmd samba samba-common oddjob oddjob-mkhomedir sssd ntpdate ntp
vi /etc/ntp.conf
systemctl enable ntpd
ntpdate ucs-domaincontroller.domain.tld
systemctl start ntpd
realm join –user=administrator@domain.tld domain.tld
realm list
ssh administrator@domain.tld@domain.tld

Ich hab die Rechner vorher schon im UCS Directory angelegt (als Linux Computer), mit MAC Adresse und fixer IP und sie erhalten die richtige IP.

Auf diesen Maschinen läuft also Kerberos, und bei der Authentifizierung über SSH Service sollte also das Ticket nicht ausgestellt werden und somit der Login fehlschlagen.

Ich finde in der WebGui keine Möglichkeit, hier einer Usergruppe auf eine bestimmte Computergruppe bestimmte Services zu verbieten.

Oder ist mir da noch was nicht ganz klar? Gibt es eine “bessere” Möglichkeit, Linuxmaschinen ins UCS einzubinden, gibt es sowas wie einen UCS Client?

Thx, bin ganz neu mit UCS unterwegs,

Michael


#4

Für Nicht-UCS-Systeme gibt es in der Tat keinerlei Vorkehrungen für so etwas, und Sie werden um eine handgestrickte Lösung nicht drum herum kommen.

Für UCS-Systeme (Server und Univention Corporate Client) kann man, wie von Herrn Willek beschrieben, den Zugriff auf gewisse Dienste mit UCR-Variablen direkt auf den betroffenen Servern zu erlauben bzw. zu verhindern. Dies ist allerdings, wie gesagt, eine Maßnahme pro Server und pro Dienst und skaliert damit nur begrenzt gut.

Eine eher generische Lösung könnte sein, beim nss-ldap als Filter für die Benutzer eine Bedingung mitzugeben, die die Gruppenmitgliedschaft gegen eine bestimmte Gruppe testet. Das Problem mit diesem Ansatz ist, dass beim Standard-OpenLDAP-Schema die Gruppenmitgliedschaft am Gruppenobjekt und nicht am BenutzerInnenobjekt gespeichert wird. Sprich es gibt beim Gruppenobjekt eine Liste der BenutzerInnen. Darauf kann man aber so nicht filtern, wenn man nach einer BenutzerIn sucht.

Das ActiveDirectory-Schema des Samba 4 hat das genau umgekehrt: dort steht die Gruppenmitgliedschaft am BenutzerInneobjekt und erlaubt die Filterung. Das nächste Problem ist hier aber, dass das Samba-/AD-Schema die von Linux/POSIX benötigten Attribute an den BenutzerInnenobjekten gar nicht enthält, also kann man nss-ldap auch nicht direkt gegen das Samba-LDAP loslassen.

Ein möglicher Ausweg ist die Verwendung des memberOf-Overlays. Das bildet in einem OpenLDAP nach, was im AD auch der Fall ist, nämlich das Attribut »memberOf« am BenutzerInnenobjekt. Leider hat auch dieser Ansatz einige Einschränkungen, weswegen ich Ihnen dringend die gründliche Lektüre des eben verlinkten Artikels empfehle.

Letztlich können Sie natürlich auch ein Script schreiben, das die benötigten Informationen aus dem LDAP ausliest und daraus wie auch imemr geartete Konfigurationsdateien/-schnipsel erstellt.


#5

Dann 2 einfache und eine schwierige Möglichkeit:

Am einfachsten: Anstelle eines fremden (In Deinem Fall wohl Fedora/CentOS/Redhat/Suse) Systems einfach einen “UCS Member” Server installieren. Damit hast Du sofort alle Vorteile von Univention, z.B. auch Policys wie in meinem ersten reply beschrieben auch auf den Memberservern.

Noch relativ einfach: Bleibe bei Fedora/Redhat/Suse, aber installiere zuerst einen IPA Server, der sich seine Daten vom UCS Master aus dem ldap holt. Alle Deine weiteren “Fremd” Systeme werden dann mittels ipa-Client konfiguriert. Ipa bietet (ähnlich wie UCS) einige Policys die Du dann relativ einfach nutzen kannst. Der große Nachteil an dieser Lösung: Das Gesamtsystem wird komplexer, die Fehlersuche und -Behebung daher schwieriger: Du mußt dann eben zwei Systeme beherrschen.
unixmen.com/configure-freeip … -centos-7/

Etwas schwieriger: Installiere Die einen UCS Member-Server und baue das entsprechende Setup des UCS-Memberservers einfach auf Deinem gewünschten System nach. Du wirst wenn Du diesen Weg gehst jedoch viel von Hand arbeiten müssen. (Siehe Antwort von Moritz Bunkus, die geht darauf etwas genauer ein)

In meinen Augen liegt der große Vorteil von UCS darin Dir genau diese Aufgaben abzunehmen, deshalb würde ich dazu raten einfach einen UCS Member Server zu installieren. Das funktioniert dann einfach. (So einfach das ich den Link zur entsprechenden Doku erst suchen muss…) Lass mich das für Dich googeln:

Login über eine Gruppe erlauben:
docs.software-univention.de/hand … e_Benutzer

Policies:
docs.software-univention.de/hand … l:policies

I[quote]ch finde in der WebGui keine Möglichkeit, hier einer Usergruppe auf eine bestimmte Computergruppe bestimmte Services zu verbieten.[/quote]
Korrekt, lies dazu die Doku. Der Login ist nur Domänenadmins und root erlaubt. Du musst das also erst erlauben.

[quote]
Oder ist mir da noch was nicht ganz klar? Gibt es eine “bessere” Möglichkeit, Linuxmaschinen ins UCS einzubinden, gibt es sowas wie einen UCS Client?[/quote]

Ja, es gibt beides, den “UCS Client” und auch den “UCS Memberserver”. Hier: docs.software-univention.de/hand … eBeitreten

[quote]Thx, bin ganz neu mit UCS unterwegs,

Michael[/quote]

Ja ganz sehr Willkommen! Als allgemeiner Tipp: Die Doku von Univention ist im allgemeinen sehr gut, es lohnt also bei offenen Fragen immer zuerst in der Doku zu suchen, oder hier im Forum zu suchen. (Kleine Einschränkung: Bis auf den Teil mit der Doku der Kommandozeilenbefehle, da haben die Jungs leider leider immer noch kein Referenzhandbuch dazu hinbekommen).

Wenn Du vor hast ein UCS System nicht nur privat zum spielen einzusetzen empfehle ich Dir einen Adminworkshop bei Univention zu buchen: Das lohnt sich.

Gruß Lutz