Wie man Sudoers mit OpenLDAP Server integriert

Sudo ist eine Anwendung, mit der du auf Linux- und Unix-Betriebssystemen Root- oder Administrator-Rechte erhalten kannst. Sudo ist in den meisten Linux-Distributionen standardmäßig installiert. Du kannst die Benutzerberechtigung auch über die Datei /etc/sudoers einrichten und unprivilegierten Benutzern erlauben, bestimmte Befehle als Root-Benutzer auszuführen.

Sudo kann auf verschiedene Arten konfiguriert werden: Du kannst sudo auf einem lokalen Computer/Server einrichten oder ein zentrales sudo über Software von Drittanbietern einrichten. In diesem Beispiel verwendest du den OpenLDAP-Server, um eine zentrale sudo-Einrichtung einzurichten.

In diesem Lernprogramm werden wir sudoers einrichten und in den OpenLDAP-Server integrieren. Damit hast du eine zentrale Benutzer- und sudo-Berechtigungsverwaltung auf deinem OpenLDAP-Server, die die Installation auf der Client-Seite beschleunigt. Jeder SSSD-Dienst auf dem Client-Rechner, der mit einer sudo-Authentifizierungsquelle konfiguriert ist, ermöglicht es OpenLDAP-Benutzern, sudo auszuführen.

Voraussetzungen

Du musst sicherstellen, dass du über die folgenden Voraussetzungen verfügst, um diesen Leitfaden abzuschließen:

  • Ein Server, auf dem OpenLDAP Server installiert und konfiguriert ist.
  • Ein Client-Rechner mit konfiguriertem OpenLDAP Client und SSSD-Dienst.
  • Wenn du RHEL-basierte Distributionen verwendest, stelle sicher, dass SELinux im permissiven Modus läuft.

In diesem Beispiel werden zwei Rechner für den OpenLDAP Server und den Client verwendet. Auf beiden Rechnern läuft der Rocky Linux 9 Server. Im Folgenden findest du eine detaillierte Beschreibung der Server:

Hostname    IP Address      Used as             Domain/FQDN
--------------------------------------------------------------
ldap        192.168.5.25    OpenLDAP Server     ldap.hwdomain.lan
client      192.168.5.80    OpenLDAP Client     client.hwdomain.lan

Sudoers Schema in OpenLDAP Server importieren

Im ersten Schritt musst du das Standard-Sudoers-LDAP-Schema auf deine OpenLDAP-Server importieren. Dies kann über die LDIF-Datei und das Dienstprogramm„ldapadd“ erfolgen.

Melde dich beim OpenLDAP-Server an und kopiere das Standard-Sudoers-Schema für LDAP, indem du den folgenden cp-Befehl eingibst.

sudo cp /usr/share/doc/sudo/schema.OpenLDAP  /etc/openldap/schema/sudo.schema

Als Nächstes gibst du den folgenden nano-Befehl in den Editor ein, um eine neue LDIF-Datei „/etc/openldap/schema/sudo.ldif“ zu erstellen.

sudo nano /etc/openldap/schema/sudo.ldif

Füge die folgenden Zeilen in die Datei ein.

dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may  run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) )

Speichere und beende die Datei, wenn du fertig bist.

Ändere die Eigentümerschaft der sudoers LDIF-Datei „/etc/openldap/schema/sudo.ldif“, um sicherzustellen, dass OpenLDAP auf sie zugreifen kann.

sudo chown ldap:ldap /etc/openldap/schema/sudo.ldif

Gib nun den folgenden„ldapadd„-Befehl ein, um das sudoers LDAP-Schema zum OpenLDAP-Server hinzuzufügen. Damit fügst du die neue„cn“ namens„sudo“ zum OpenLDAP-Server hinzu und erlaubst allen OpenLDAP-Benutzern innerhalb der„cn=sudo„, den sudo-Befehl auf Client-Rechnern auszuführen.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/sudo.ldif

Wenn du erfolgreich bist, solltest du eine Ausgabe wie„adding new entry „cn=sudo,cn=schema,ch=config““ erhalten.

sudo Schema zu OpenLDAP Server hinzufügen

Nachdem das LDAP-Schema für die sudoers hinzugefügt wurde, musst du eine„ou“ oder Organisationseinheit für die sudoers einrichten.

Organisationseinheit für Sudo erstellen

Nachdem du das LDAP-Schema sudoers hinzugefügt hast, erstellst du eine neue Organisationseinheit namenssudo“, die es allen OpenLDAP-Benutzern innerhalb dieser Einheit ermöglicht, den Befehl sudo auszuführen. Außerdem richtest du die Standardkonfiguration von sudoers für OpenLDAP-Benutzer ein.

Gib den folgenden nano-Editor ein, um eine neue Datei„sudoers.ldif“ zu erstellen.

sudo nano sudoers.ldif

Füge die folgenden Zeilen in die Datei ein und achte darauf, dass du die Hauptdomäne durch den Domänennamen deines OpenLDAP-Servers ersetzt.

# sudoers.ldif

dn: ou=sudo,dc=hwdomain,dc=lan
objectClass: organizationalUnit
objectClass: top
ou: sudo
description: Default ou for SUDO

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes gibst du den folgenden„ldapadd„-Befehl ein, um die sudoers ou zum OpenLDAP-Server hinzuzufügen. Wenn du zur Eingabe eines Passworts aufgefordert wirst, gibst du das richtige OpenLDAP-Root-Passwort ein.

sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f sudoers.ldif

Wenn der Vorgang erfolgreich ist, solltest du eine Ausgabe wie„adding new entry „ou=sudo,dc=hwdomain,dc=lan““ erhalten.

sudo einrichten ou

Gib nun den folgenden„ldapsearch„-Befehl ein, um ein„ou“ mit dem Wert„sudo“ auf dem OpenLDAP-Server zu finden.

sudo ldapsearch -x -b "dc=hwdomain,dc=lan" ou=sudo

Die folgende Ausgabe bestätigt, dass die „ou=sudo“ hinzugefügt wurde und auf dem OpenLDAP-Server verfügbar ist.

verifizieren sudo oder

Als Nächstes erstellst du eine weitere LDIF-Datei, in der die Standardkonfiguration für sudoers festgelegt wird. Gib den folgenden Befehl in den nano-Editor ein, um eine neue Datei„sudoconf.ldif“ zu erstellen.

sudo nano sudoconf.ldif

Füge die folgenden Zeilen in die Datei ein.

# sudoconf.ldif

dn: cn=defaults,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: defaults
sudoOption: env_reset
sudoOption: mail_badpass
sudoOption: secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
#sudoOrder: 1

Speichere und schließe die Datei, wenn du fertig bist.

Gib nun den Befehl„ldapadd“ ein, um die Standard-Sudoers-Konfiguration zum OpenLDAP-Server hinzuzufügen. Alle OpenLDAP-Benutzer innerhalb der„ou=sudo“ werden die Standard-Sudoers-Konfiguration übernehmen.

sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f sudoconf.ldif

Gib dein OpenLDAP-Root-Passwort ein, wenn du dazu aufgefordert wirst. Wenn du erfolgreich bist, bekommst du eine Ausgabe wie diese:

setup standard sudoconf

Damit ist die Konfiguration von sudoers auf dem OpenLDAP-Server abgeschlossen. Du kannst nun OpenLDAP-Benutzer zu den ‚ou=sudo‚ hinzufügen, die es OpenLDAP-Benutzern erlauben, den sudo-Befehl auszuführen.

Hinzufügen von OpenLDAP-Benutzern zu Sudo

In diesem Abschnitt erfährst du, wie du OpenLDAP zu „ou=sudo“ hinzufügst, damit Benutzer den „sudo“-Befehl auf OpenLDAP-Client-Rechnern ausführen können. Dabei fügst du einen bestehenden OpenLDAP-Benutzer zum‚ou=sudo‚ hinzu oder du fügst einen neuen Benutzer mit dem‚ou=sudo‚ hinzu.

Erstelle eine neue LDIF-Datei ‚adduser_sudo.ldif‘ mit dem folgenden nano-Editor-Befehl.

nano adduser_sudo.ldif

Füge die folgenden Zeilen in die Datei ein. Dadurch wird ein bestehender OpenLDAP-Benutzer „rocky“ zu„ou=sudo“ hinzugefügt und der Benutzer „rocky“ kann den„sudo„-Befehl auf den Client-Rechnern ausführen. Achte außerdem darauf, dass du den Domänennamen„dc=hwdomain,dc=lan“ durch die Domäne deines OpenLDAP-Servers ersetzt.

# adduser_sudo.ldif
dn: cn=rocky,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: rocky
sudoCommand: ALL
sudoHost: ALL
sudoRunAsUser: ALL
sudoUser: rocky

Speichere und schließe die Datei, wenn du fertig bist.

Wenn du einen neuen OpenLDAP-Benutzer mit der Standardeinstellung„ou=sudo“ erstellen möchtest, verwende die folgende LDIF-Datei und ändere die Parameter„userPassword„, den Benutzernamen und den Standarddomänennamen für deinen OpenLDAP-Server.

# adduser.ldif
dn: uid=rocky,ou=People,dc=hwdomain,dc=lan
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: rocky
sn: temp
userPassword: {SSHA}cDG5NuQd+rYn6rWh1r5UnysUOwJlt1uk
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/rocky
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

dn: cn=rocky,ou=Group,dc=hwdomain,dc=lan
objectClass: posixGroup
cn: rocky
gidNumber: 2000
memberUid: rocky

dn: cn=rocky,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: rocky
sudoCommand: ALL
sudoHost: ALL
sudoRunAsUser: ALL
sudoUser: rocky

Als Nächstes gibst du den folgenden „ldapadd“-Befehl ein, um die Änderungen auf die OpenLDAP-Server anzuwenden. Wenn du dazu aufgefordert wirst, gib dein OpenLDAP-Server-Passwort ein.

sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f adduser_sudo.ldif

Wenn du erfolgreich warst, solltest du eine Ausgabe wie‚adding new entry „cn=rocky,ou=sudo,dc=hwdomain,dc=lan“‚ erhalten.

OpenLDAP-Benutzer zu sudo hinzufügen

Zum Schluss gibst du den folgenden„ldapsearch„-Befehl ein, um die Liste der Benutzer für„ou=sudo“ anzuzeigen und zu überprüfen. Jetzt solltest du sehen, dass dein neuer Benutzer hinzugefügt wurde und für„ou=sudo“ verfügbar ist.

sudo ldapsearch -x -b "ou=sudo,dc=hwdomain,dc=lan"

sudo openldap Benutzer verifizieren

Jetzt hast du einen bestehenden OpenLDAP-Benutzer namens„rocky“ zu„ou=sudo“ hinzugefügt und ihm erlaubt, den„sudo„-Befehl auf Client-Rechnern auszuführen.

Im nächsten Schritt fügst du dem SSSD-Dienst neue Einstellungen hinzu, um die sudoers über den OpenLDAP-Server zu aktivieren.

OpenLDAP-Client-Rechner einrichten

Auf dem Client-Rechner musst du einige Einstellungen zu den Konfigurationen nsswitch und sssd hinzufügen. Die folgenden Befehle müssen auf dem OpenLDAP-Client-Rechner ausgeführt werden.

In der Nsswitch-Konfigurationsdatei „/etc/nsswitch.conf“ solltest du den sudoers-Namensdienst definieren, um die Verwaltung von sudoers über den SSSD-Dienst zu ermöglichen. Dann musst du in der SSSD-Konfigurationsdatei „/etc/sssd/sssd.conf“ den„sudo_provider“ des„ldap“ hinzufügen, den„sudo„-Dienst definieren und dann den Abschnitt „[sudo]“ für die zusätzliche Konfiguration der sudoers hinzufügen.

Öffne die Nsswitch-Konfigurationsdatei„/etc/nsswitch.conf“ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/nsswitch.conf

Füge die folgende Konfiguration hinzu, um den Namensdienst„sudoers“ zu definieren und seine Verwaltung über den SSSD-Dienst zu ermöglichen.

sudoers: files sss

Speichere und schließe die Datei, wenn du fertig bist.

nsswitch sudoers

Als Nächstes gibst du den folgenden nano-Editor-Befehl ein, um die SSSD-Konfigurationsdatei „/etc/sssd/sssd.conf“ zu öffnen.

sudo nano /etc/sssd/sssd.conf

Füge im Abschnitt ‚[domain/default]‚ die neuen Parameter’sudoers_base‚ und’sudo_provider‚ hinzu. Im Abschnitt ‚[sssd]‘ musst du den Parameter’sudo‚ zum Parameter’services‚ hinzufügen. Wenn du zusätzliche sudoers-Konfigurationen benötigst, füge den Abschnitt ‚[sudo]‚ am Ende der Zeile hinzu.

[domain/default]
....
sudoers_base ou=sudo,dc=hwdomain,dc=lan
sudo_provider = ldap
[sssd]
services = nss, pam, autofs, sudo
domains = default

[nss]
homedir_substring = /home

[sudo]

Speichere und schließe die Datei, wenn du fertig bist.

sssd aktivieren sudo

Gib abschließend den folgenden systemctl-Befehl ein, um den SSSD-Dienst neu zu starten und die Änderungen zu übernehmen.

sudo systemctl restart sssd

Nach dem Neustart des SSSD-Dienstes ist die sudoers-Verwaltung über den OpenLDAP-Server nun aktiviert. Alle OpenLDAP-Benutzer, die sich mit dem Standard-ou für sudo angemeldet haben, können den Befehl„sudo“ auf dem Client-Rechner ausführen.

Überprüfen der Sudoers-Integration mit dem OpenLDAP-Server

Melde dich vom OpenLDAP-Server mit dem OpenLDAP-Benutzer„rocky“ über den unten stehenden„ssh„-Befehl am Client-Rechner mit der IP-Adresse„192.168.5.80“ an.

ssh rocky@192.168.5.80

Wenn du dazu aufgefordert wirst, gibst du das Passwort ein. Wenn du erfolgreich bist, solltest du am OpenLDAP-Client-Rechner angemeldet sein.

sudoers OpenLDAP Server Integration überprüfen

Gib die folgenden Befehle ein, um den aktuell verwendeten Benutzer, die gid und die uid zu überprüfen. Du solltest die Ausgabe erhalten, dass der OpenLDAP-Benutzer„rocky“ mit gid und uid„2000„.

id
whoami

Gib abschließend den folgenden Befehl„sudo su“ ein, um die Integration des sudoers in den OpenLDAP-Server zu überprüfen.

sudo su

Wenn du dazu aufgefordert wirst, gib das Passwort für den Benutzer„rocky“ ein. Wenn die Eingabe erfolgreich war, lautet die Eingabeaufforderung im Terminal„root@client ….“.

Führe nun den folgenden Befehl erneut aus, um den aktuellen Benutzer zu überprüfen, und du solltest sehen, dass der aktuelle Benutzer„root“ ist.

id
whoami

Dies bestätigt, dass die sudoers-Integration mit dem OpenLDAP-Server abgeschlossen und erfolgreich ist.

Fazit

In diesem Lernprogramm hast du sudoers mit dem OpenLDAP-Server konfiguriert und integriert, so dass OpenLDAP-Benutzer den Befehl „sudo“ auf Client-Rechnern ausführen können. Außerdem hast du sudoers in den SSSD-Dienst auf den Client-Rechnern integriert, der sudo für OpenLDAP-Benutzer automatisch aktiviert.

Damit kannst du nun weitere OpenLDAP-Benutzer zu den „ou=sudo“-Benutzern hinzufügen, um ihnen die Ausführung von sudo auf dem Client-Rechner zu ermöglichen. Außerdem musst du die Konfiguration von nsswitch und SSSD auf den Client-Rechnern aktualisieren, damit sich die OpenLDAP-Benutzer mit den OpenLDAP sudo-Anbietern verbinden können.

Weitere Informationen über OpenLDAP findest du in der offiziellen Dokumentation von OpenLDAP. Und für Sudoers besuche die Dokumentation von sudoers.

Das könnte dich auch interessieren …