Sudo-Berechtigungen von LDAP-Gruppen über nslcd

7

Ich habe ein Problem mit meinen Sudo-Berechtigungen in einem MS ActiveDirectory für Debian LDAP-Authentifizierungs- / Autorisierungs-Setup.

Was ich bisher
habe ich nslcd mit libpam-ldap über ldaps konfiguriert und ssh login funktioniert super.

getent passwd myuser
myuser:*:10001:10015:myuser:/home/myuser:/bin/bash

Auf meinem ActiveDirectory Server ist das Unix-Paket installiert, das die erforderlichen Attribute wie posixGroup, posixAccount, gid, gidNumber, uid, uidNumber usw. hinzufügt.

Mein Beispielbenutzer sieht folgendermaßen aus:
(Ich wähle 10000+, um auf der sicheren Seite zu sein.)

cn: myuser
uid: myuser
uidNumber: 10015
gidNumber: 10000

Ich kann SSH-Anmeldungen einschränken, indem ich Folgendes zu /etc/nslcd.conf hinzufüge

filter passwd (&(objectClass=posixAccount)(|(memberOf=CN=group1,OU=groups,DC=domain,DC=com)(memberOf=CN=group2,OU=groups,DC=domain,DC=com)))

Dies gibt an, dass sich nur Benutzer mit objecClass = posixAccount und Gruppe entweder Gruppe1 oder Gruppe2 anmelden können.

So weit, ist es gut. Ich kann sudo jedoch nicht anweisen, diese Gruppen zu verwenden.


Folgendes habe ich in / etc / sudoers versucht

// This one works, but only because the user has gidNumber=10000 set. 
// It doesn't matter if a group with this ID actually exist or not. 
// So it's not really permission by LDAP group.
%#10000 ALL=(root) ALL


// This is what I want, but it doesn't work.
%group1 ALL=(root) ALL

Das Problem
Irgendwie muss ich sudo anweisen, den anfordernden Benutzernamen zu übernehmen, zu überprüfen, zu welchen LDAP-Gruppen er gehört, und dann zu prüfen, ob die Berechtigungen für diese Gruppe ausreichen, um den Befehl auszuführen oder nicht.

Leider habe ich keine Ahnung, wo ich anfangen soll. Alles andere funktioniert soweit und ich bin nur mit Sudo-Berechtigungen festgefahren. Ich habe darüber nachgedacht, das gidNumber-Feld des Benutzers dem gidNumber-Feld der Gruppe zuzuordnen, aber ich weiß nicht, ob das Zuordnen eines Benutzerfelds zu einem Gruppenfeld überhaupt möglich ist.

Ich denke nicht, da das Mapping in nslcd so angegeben ist

map passwd field1 field2

und passwd teilt nslcd mit, dass Benutzerfelder zugeordnet werden müssen. Anstelle von passwd könnte ich Gruppen verwenden, aber nicht beide.

Mohrphium
quelle

Antworten:

7

Entschuldigung für den langen Beitrag, aber es scheint zu funktionieren. Ich hatte gerade einen Tippfehler in der Sudoers-Datei. Ich habe ein bisschen lange gebraucht, um es zu finden, da die Syntax immer noch korrekt war, ich aber keine Befehle ausführen konnte.

Es funktioniert jedoch jetzt.

 // Problem was that one ALL was missing, allowing me to execute no root cmds.
 %group1 ALL=(root) !/bin/su

 // Fixed it
 %group1 ALL=(root) ALL, !/bin/su

Update: Ich habe es etwas spät bemerkt, aber ich habe auch Folgendes in /etc/nsswitch.conf geändert

sudoers:        ldap files

Ich dachte nur nicht, dass es das Problem war, weil ich immer noch den oben genannten Tippfehler hatte.

Problem gelöst :)

Mohrphium
quelle
Warum negierst du übrigens / bin / su? Wenn Sie verhindern möchten, dass ein Benutzer eine Root-Shell erhält, reicht Ihre! / Bin / su nicht aus. sudo bash oder cp / bin / su / tmp / su & sudo / tmp / su sind nur zwei von vielen Möglichkeiten, um auf den meisten Systemen noch eine Root-Shell zu erhalten. (Ignorieren von Grsec, Systrace-Richtlinien usw.)
Etherfish
Danke auch für den Tipp! / Usr / sbin / visudo fehlt. Es war im Wesentlichen nur ein Test, um festzustellen, ob ein Befehl wirklich blockiert ist.
Mohrphium
@etherfish Sie sind richtig, aber man sollte wirklich tmp, var, / dev / shm, / home und dergleichen als noexec mounten, so dass nur / {, usr, usr / local} / [s] bin als die einzigen Stellen übrig bleiben, die sind mit Exec-Perms gemountet.
Dwight Spencer
1

Ich habe den Benutzern über pam_group lokale Gruppen zugewiesen, um die gleiche Funktionalität zu erhalten. In habe /etc/security/groups.confich die folgende Zeile hinzugefügt

*;*;%administrators;Al0000-2400;adm,sudo,lpadmin

So dass jeder LDAP - Benutzer, die auf die LDAP - Gruppe gehört administratorszu den lokalen abgebildet wird adm, sudound lpadminauf die Box - Gruppen. Scheint einfacher als installieren zu müssen sudo-ldap, es sei denn, mir fehlt etwas?

Andrew
quelle
Ich mag die Idee, aber sie hat bei mir nicht funktioniert. Können Sie Ihre Antwort verbessern? Vollständige Antworten sollten auf eine andere Seite
verlinken