3 Minuten Lesezeit (618 Worte)

SSSD – Zentrale Benutzer- und Rechteverwaltung – Teil 2: Konfiguration

Der System Security Services Daemon (SSSD) ermöglicht es Verzeichnisdienste und diverse Authentifizierungsmöglichkeiten für Linux/Unix-Systeme erreichbar zu machen. Neben einfacher Benutzerverwaltung mit Authentifizierung per Benutzername und Passwort können auch SSH-Key-Verfahren eingesetzt werden. Weiter können die Berechtigungen direkt im zentralen Verzeichnis verwaltet werden. Wie der SSSD konfiguriert wird, um dieses zu ermöglichen, soll dieser Artikel darstellen.

Überblick

Im ersten Teil dieser Reihe wurden bereits die grundlegenden Informationen und Möglichkeiten aufgezeigt, in diesem Artikel wird [HD1] die Konfiguration genauer betrachtet.

Der SSSD Daemon startet abhängig von der Konfiguration eine Reihe von Services (sssd_Daemons) und kommuniziert so mit SSHD, AutoFS und LDAP-Daemons. Die aktivierten Services werden als Kindprozesse des SSSD Daemons gestartet:

sssd─┬─sssd_autofs
     ├─sssd_be
     ├─sssd_nss
     ├─sssd_pam
     ├─sssd_ssh
     └─sssd_sudo 

Grundlegende Konfiguration

Die Konfiguration des SSSD erfolgt hauptsächlich über die Datei /etc/sssd/sssd.conf. Die Datei ist in drei Abschnitte unterteilt:

  • [sssd]
    Hier werden globale Standardwerte und die eingesetzten Module definiert
  • [<service_name>]
    Unter dem jeweiligen Service werden service-spezifische Konfigurationen vorgenommen
  • [<domain_type>/<domain_name>]
    Konfigurationsmöglichkeiten für jeden definierten Verzeichnisdienst

Die Parameter sind ausführlich in der Man-Page beschrieben.

Beispiel: Anbindung an LDAP-Verzeichnis mit Authentifizierung via SSH-Key

In diesem Beispiel soll ein SSSD Daemon so konfiguriert werden, dass Benutzer aus einem bestehenden LDAP-Verzeichnis abgerufen werden und diese sich per SSH-Key authentifizieren können. Die Public Keys können anschließend sowohl im LDAP-Verzeichnis als auch lokal auf dem Server abgelegt werden. Bevor die Schlüssel in das LDAP-Verzeichnis abgelegt werden können, muss das Schema openssh-lpk-openldap.ldif installiert werden.

Installation von SSSD

Die Installation von SSSD wird hier auf einem RHEL 8 System durchgeführt, bei anderen Distributionen kann die Installation abweichen.

Mit dem Paketmanager dnf wird der SSSD mit Abhängigkeiten installiert:

# dnf -y install sssd sssd-ldap oddjob oddjob-mkhomedir authselect-compat

Anschließend wird der SSSD als Authentifizierungsprovider festgelegt:

# authselect select sssd with-mkhomedir

Anbindung an LDAP

Zur Anbindung an LDAP wird die Domain unter dem Abschnitt [sssd] hinzugefügt und ein neuer Abschnitt [domain/ldap_ordix] angelegt. Die Konfigurationsdatei sieht dann folgendermaßen aus:

# /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services            = nss, pam, autofs, ssh
domains             = ldap_ordix
[ssh]
[nss]
[pam]
[domain/ldap_ordix]
id_provider              = ldap
auth_provider            = ldap
chpass_provider          = ldap
access_provider          = ldap
ldap_user_ssh_public_key = sshPublicKey
cache_credentials        = True
ldap_search_base         = dc=ordix,dc=de
ldap_uri                 = ldap://ldap.ordix.de
ldap_default_bind_dn     = cn=admin, dc=ordix, dc=de
ldap_default_authtok     = ordix
ldap_tls_reqcert         = demand
ldap_tls_cacert          = /etc/pki/tls/cacert.crt
ldap_tls_cacertdir       = /etc/pki/tls
ldap_id_use_start_tls    = True
ldap_search_timeout      = 50
ldap_network_timeout     = 60
ldap_access_order        = filter
ldap_access_filter       = (objectClass=posixAccount)
 

Konfigurationen des SSH-Daemons

Beim SSH-Daemon muss die SSH-Key Methode aktiviert werden und der sssd als Provider festgelegt werden. Dazu werden folgende Attribute angepasst:

# /etc/ssh/sshd_config
PubkeyAuthentication      yes
AuthorizedKeysCommand     /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser root
 

Abschluss der Konfiguration

Abschließend müssen der SSSD und SSH-Daemon neugestartet werden:

# systemctl restart sssd sshd

Zum Testen kann nun ein User aus dem LDAP abgefragt und eine neue SSH-Verbindung aufgebaut werden:

$ id user1
uid=10000(user1) gid=10000(user1) groups=10000(user1)
$ ssh user1@localhost
[user1@localhost /home/user1]$
 

Beispielhafter OpenLDAP-Eintrag

dn:            uid=user1,ou=Users,dc=ordix,dc=de
uid:           user1
uidNumber:     10000
gecos:         user1 - LDAP
homeDirectory: /home/user1
gidNumber:     10000
cn:            user1 - LDAP
sn:            user1 - LDAP
userPassword:  <password-hash>
description:   LDAP Benutzer user1
objectClass:   ldapPublicKey
objectClass:   person
objectClass:   posixAccount
objectClass:   top
sshPublicKey:  <public-key>
 

Fazit

Die Konfiguration des SSSD ist übersichtlich gehalten, durch die optionalen Module können diverse Funktionen, wie beispielsweise die zentrale Verwaltung von Public-Keys verwendet werden. Bei vorhandenem LDAP-Verzeichnis können so Linux/Unix-Systeme ohne viel Aufwand angebunden und verwendet werden.

Im nächsten Teil der Serie werden die Konfigurationsmöglichkeiten im Hinblick auf die Verwaltung von SUDO-Berechtigungen ausführlicher beschrieben.

Junior Consultant bei ORDIX.

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Gäste
Freitag, 07. Oktober 2022

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie