Menu

Integration von Debian Clients in eine UCS Domäne

Die Integration von Debian Clients in eine UCS (Univention Corporate Server) Domäne funktioniert ähnlich wie bei Ubuntu Clients die bereits sehr gut von Univention dokumentiert wurde. Ich bin bei Debian allerdings an ein paar Stellen von der offiziellen Doku abgewichen, sodass ich in diesem Beitrag nochmal die Integration für Debian festhalten möchste.

Um einen Debian Client in die UCS Domäne aufzunehmen werden grundsätzlich folgende Schritte benötigt:
  1. LDAP und SSL CA Integration
  2. System Security Services Daemon (SSSD) einrichten
  3. PAM einrichten
  4. Kerberos einrichten
Für die gesamte Konfiguration werden root-Rechte benötigt, es ist daher sinnvoll zuerst in mit dem Befehl sudo -s in eine administrative Shell zu wechseln.

1. LDAP und SSL CA Integration

Im ersten Schritt werden alle benötigten Informationen vom UCS beschafft und im Verzeichnis /etc/univention abgelegt.

  1. # Umgebungsvariable setzen
  2. export MASTER_IP=192.168.1.1
  3. # Konfigurationsverzeichnis anlegen
  4. mkdir /etc/univention
  5. ssh -n root@${MASTER_IP} 'ucr shell | grep -v ^hostname=' >/etc/univention/ucr_master
  6. echo "master_ip=${MASTER_IP}" >>/etc/univention/ucr_master
  7. chmod 660 /etc/univention/ucr_master
  8. # Umgebungsvariablen setzen
  9. . /etc/univention/ucr_master
  10. echo "${MASTER_IP} ${ldap_master}" >>/etc/hosts
  11. # Download tdes SSLZertifikats
  12. mkdir -p /etc/univention/ssl/ucsCA/
  13. wget -O /etc/univention/ssl/ucsCA/CAcert.pem \
  14. http://${ldap_master}/ucs-root-ca.crt

Anschließend wird für den Host noch ein Computeraccount im LDAP Directory angelegt, damit dieser das Directory lesen kann. Außerdem muss der LDAP Client eingerichtet werden.

  1. # Computeraccount anlegen
  2. password="$(tr -dc A-Za-z0-9_ </dev/urandom | head -c20)"
  3. ssh -n root@${ldap_master} udm computers/ubuntu create \
  4.     --position "cn=computers,${ldap_base}" \
  5.     --set name=$(hostname) --set password="${password}" \
  6.     --set operatingSystem="$(lsb_release -is)" \
  7.     --set operatingSystemVersion="$(lsb_release -rs)"
  8. printf '%s' "$password" >/etc/ldap.secret
  9. chmod 0400 /etc/ldap.secret
  10.  
  11. # ldap.conf anlegen
  12. cat > /etc/ldap/ldap.conf <<__EOF__
  13. TLS_CACERT /etc/univention/ssl/ucsCA/CAcert.pem
  14. URI ldap://$ldap_master:7389
  15. BASE $ldap_base
  16. __EOF__

Hinweis: Sollte bei euch die Datei ldap.conf bereits existieren, kann der Befehl cat > /etc/ldap/ldap.conf die Datei nicht überschreiben. In diesem Fall könnt ihr die Datei entweder mit rm /etc/ldap/ldap.conf löschen oder aber den Befehl cat >! /etc/ldap/ldap.conf benutzen.

2. System Security Services Daemon (SSSD)

SSSD ist ein Systemdienst und dient hauptsächlich dazu, Zugriff auf entfernte Identitäts- und Authentifizierungressourcen bereitzustellen.

  1. # Benötigte Pakete installieren
  2. DEBIAN_FRONTEND=noninteractive apt-get -y install sssd libnss-sss libpam-sss libsss-sudo
  3. # sssd.conf anlegen
  4. cat >/etc/sssd/sssd.conf <<__EOF__
  5. [sssd]
  6. config_file_version = 2
  7. reconnection_retries = 3
  8. sbus_timeout = 30
  9. services = nss, pam, sudo
  10. domains = $kerberos_realm
  11.  
  12. [nss]
  13. reconnection_retries = 3
  14.  
  15. [pam]
  16. reconnection_retries = 3
  17.  
  18. [domain/$kerberos_realm]
  19. auth_provider = krb5
  20. krb5_kdcip = ${master_ip}
  21. krb5_realm = ${kerberos_realm}
  22. krb5_server = ${ldap_master}
  23. krb5_kpasswd = ${ldap_master}
  24. id_provider = ldap
  25. ldap_uri = ldap://${ldap_master}:7389
  26. ldap_search_base = ${ldap_base}
  27. ldap_tls_reqcert = never
  28. ldap_tls_cacert = /etc/univention/ssl/ucsCA/CAcert.pem
  29. cache_credentials = true
  30. enumerate = true
  31. ldap_default_bind_dn = cn=$(hostname),cn=computers,${ldap_base}
  32. ldap_default_authtok_type = password
  33. ldap_default_authtok = $(cat /etc/ldap.secret)
  34. __EOF__
  35. chmod 600 /etc/sssd/sssd.conf

4. PAM einrichten

In diesem Schritt müssen noch die Authentifizierungsmodule (PAM) konfiguriert werden. Unter Ubuntu funktioniert das über auth-client-config, das Paket gibt es unter Debian aber nicht, deshalb müssen wir die Änderungen an den einzelnen Modulen selbst vornehmen.

  1. nano /etc/pam.d/common-auth
  2. auth    [success=2 default=ignore]      pam_unix.so nullok_secure try_first_pass
  3. auth    [success=1 default=ignore]      pam_sss.so use_first_pass
  4. auth    requisite                       pam_deny.so
  5. auth    required                        pam_permit.so
  6.  
  7. nano /etc/pam.d/common-account
  8. account         [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
  9. account         required                        pam_deny.so
  10. account         required                        pam_permit.so
  11. account         sufficient                      pam_localuser.so
  12. account         [default=bad success=ok user_unknown=ignore] pam_sss.so
  13.  
  14. nano /etc/pam.d/common-password
  15. password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
  16. password        sufficient                      pam_sss.so use_authtok
  17. password        required                        pam_deny.so
  18. password        required                        pam_permit.so
  19.  
  20. nano /etc/pam.d/common-session
  21. session         required                        pam_mkhomedir.so silent skel=/etc/skel/ umask=0077
  22. session         required                        pam_limits.so
  23. session         [success=1 default=ignore]      pam_sss.so
  24. session         required                        pam_unix.so

An dieser Stelle sollten wir SSSD mir dem Befehl systemctl restart sssd neustarten um die Änderungen zu übernehmen. Wenn ihr alles richtig gemacht habt, sollte der Befehl getent passwd eine Lister aller Benutzer (inkl. Domainusers) und getent group eine Lister aller Gruppen (inkl. Domaingroups) ausspucken.

3. Kerberos einrichten

Kerberos Tickets werden meinst für einen gewissen Zeitraum ausgestellt und sind auch nur in diesem gültig. Daher sollte man sicherstellen, dass die Zeit zwischen Server und Client synchron ist.

  1. apt install -y ntp
  2. nano /etc/ntp.conf
  3. # die Standardserver auskommentieren oder löschen und durch den UCS ersetzen
  4. server dc.example.com
  5. systemctl enable ntp
  6. systemctl restart ntp

Den Status könnt ihr anschließend mit dem Befehl ntpq -p prüfen.

Im nächsten Schritt wird der Kerberos Client eingerichtet.

  1. # Pakete installieren
  2. DEBIAN_FRONTEND=noninteractive apt-get install -y heimdal-clients
  3. # krb5.conf anlegen
  4. cat >/etc/krb5.conf <<__EOF__
  5. [libdefaults]
  6.     default_realm = $kerberos_realm
  7.     kdc_timesync = 1
  8.     ccache_type = 4
  9.     forwardable = true
  10.     proxiable = true
  11.  
  12. [realms]
  13. $kerberos_realm = {
  14.    kdc = $master_ip $ldap_master
  15.    admin_server = $master_ip $ldap_master
  16. }
  17. __EOF__

Die Kerberos Konfiguration könnt ihr folgendermaßen testen, die Anmeldung am UCS sollte ohne eine Passworteingabe funktionieren.

  1. # Kerberos Ticket anfordern
  2. kinit Administrator
  3. ssh -n Administrator@$ldap_master ls /etc/univention
  4.  
  5. # Kerberos Ticket zerstören
  6. kdestroy

Das wars, euer Debian Client ist damit vollständig in die Domäne integriert.

Euch hat der Beitrag gefallen, ihr habt Fragen oder Anregungen? Hinterlasst mir einen Kommentar oder diskutiert im OSBN-Chat.
Geeklabor am : SSH Single Sign On mittels Kerberos
Single Sign On (SSO) ist eine feine Sache. Der Benutzer authentifiziert sich einmal mit seinen Benutzernamen und Kennwort (z. B. bei der Anmeldung am Client) und hat anschließend Zugriff auf diverse Anwendungen ohne sich erneut anmelden zu müssen. In dies

Kommentare

Linear Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht veröffentlicht, sondern nur für eventuelle Benachrichtigungen verwendet.
Die Formatierung der Kommentare ist über Markdown möglich.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar Autoren-Bilder werden unterstützt.
Markdown-Formatierung erlaubt