Warum der Aufwand?

Linux auf dem Desktop erfreut sich steigender Beliebtheit, wenn dies zugegeben auch nur ein langsames Wachstum ist. Die Gründe dafür sind vielfältig, hauptsächlich dürfte es an der Abhängigkeit und den damit verbundenen Problemen zu Microsoft-Produkten liegen (z.B. seltsame UI-Erscheinungen wie die aufgeteilte Systemsteuerung und Datenschutzprobleme in Windows 10). Der Linux-Desktop ist im Jahr 2020 auch von Laien benutzbar und daher sollte man seine Vorteile auch im Unternehmensumfeld wahrnehmen.

Nun gibt es im Unternehmensumfeld einige Besonderheiten, welche den großflächigen Einsatz erschweren. Auf dieser Seite möchte ich auf ein paar Probleme eingehen, welche sich mir beim Aufbau eines Linux-Desktops im Unternehmen in den Weg stellten.

1. Einbindung in eine Active Directory-Domäne (AD)

Benutzer sollen sich am Linux-Client genau so anmelden können, wie man es vom Windows-Client gewohnt ist. In den meisten Unternehmen besteht bereits ein AD-Server. Diesen wollen wir an dieser Stelle (noch) nicht ersetzen, sondern für die Authentifizierung verwenden. Für die Linux-AD-Authentifizierung gibt es mehrere Lösungen, zum einen den Samba Windbind und RedHats SSSD. Mit dem Winbind hatte ich Probleme bei der erstmaligen Anmeldung nach Neustart des Linux-Rechners (dies funktionierte immer erst nach etwa 20 Sekunden), daher beschreibe ich hier die Verfahrensweise mit SSSD. Weiterhin wird (in beiden Fällen) Samba für den Domainjoin benötigt sowie das Kerberos-Paket. Ich arbeite hier mit der Linux-Distribution "Linux Mint", alle angegebenen Schritte sollten aber ohne Probleme auf Ubuntu, Debian etc. übertragbar sein.

apt install krb5-user libpam-krb5 samba sssd libnss-db nss-updatedb

Die Samba-Konfiguration (/etc/samba/smb.conf) muss wie folgt aussehen. (MYDOMAIN bitte durch den eigenen NetBios-Domänennamen und MYDOMAIN.TLD durch den FQDN (vollqualifizierter Domänenname) ersetzen)

[global] lock directory = /var/cache/samba security = ads workgroup = MYDOMAIN realm = MYDOMAIN.TLD kerberos method = secrets and keytab idmap config * : backend = tdb idmap config * : range = 2000-3000 idmap config MYDOMAIN:backend = ad idmap config MYDOMAIN:default = yes idmap config MYDOMAIN:schema mode = rfc2307 idmap config MYDOMAIN:range = 10000-20000 idmap config MYDOMAIN:unix_nss_info = yes client use spnego = yes client ntlmv2 auth = yes load printers = no domain master = no local master = no preferred master = no os level = 0 # server string is the equivalent of the NT Description field server string = %h server (Samba, Ubuntu)

Als nächstes wird eine SSSD-Konfiguration erstellt (/etc/sssd/sssd.conf).

[sssd] config_file_version = 2 services = nss, pam domains = MYDOMAIN.TLD [pam] offline_credentials_expiration = 365 [domain/MYDOMAIN.TLD] id_provider = ad access_provider = ad sudo_provider = none cache_credentials = true entry_cache_timeout = 5400 ldap_id_mapping = true fallback_homedir = /home/%u default_shell = /bin/bash skel_dir = /etc/skel

Dann wird Kerberos konfiguriert (/etc/krb5.conf). Hier sind die zusätzlich Adressen zu den AD-Servern (ad1-3.mydomain.tld) entsprechend anzupassen.

[libdefaults] default_realm = MYDOMAIN.TLD dns_lookup_realm = false dns_lookup_kdc = false # The following krb5.conf variables are only for MIT Kerberos. kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true # The following libdefaults parameters are only for Heimdal Kerberos. fcc-mit-ticketflags = true [realms] MYDOMAIN.TLD = { kdc = ad1.mydomain.tld kdc = ad2.mydomain.tld kdc = ad3.mydomain.tld admin_server = ad3.mydomain.tld default_domain = mydomain.tld } [domain_realm] .mydomain.tld = MYDOMAIN.TLD mydomain.tld = MYDOMAIN.TLD

Nun wird die PAM-Konfiguration erweitert, damit bei der ersten Anmeldung eines Domänenbenutzers ein Home-Verzeichnis angelegt wird. In die Datei /usr/share/pam-configs/my-ad wird folgender Inhalt geschrieben.

Name: AD user home management Default: yes Priority: 127 Session-Type: Additional Session-Interactive-Only: yes Session: required pam_mkhomedir.so skel=/etc/skel umask=0077

Zum Schluss muss noch der Login-Manager angepasst werden, damit dieser auch nach dem Benutzernamen fragt und nicht nur eine Liste der lokalen Konten anzeigt. In meinem Fall des LightDMs unter Ubuntu/Mint muss die Datei /usr/share/lightdm/lightdm.conf.d/50-domainlogin.conf mit folgendem Inhalt erstellt werden.

[SeatDefaults] greeter-session=unity-greeter allow-guest=false greeter-show-remote-login=false greeter-show-manual-login=true greeter-hide-users=true

Damit ist die Konfiguration abgeschlossen. Mit folgenden Kommandos treten wir nun der Domäne bei.

net ads join -U ADMIN-USERNAME pam-auth-update --package systemctl daemon-reload && systemctl enable sssd && systemctl start sssd

Nach einem Neustart können wir uns nun mit Domänen-Logins am Anmeldebildschirm anmelden.

Nun gibt es noch das Problem, das vor allem bei Notebooks ein K.O.-Kriterium ist: die Offline-Anmeldung. Clients sind typischerweise nicht immer online, erst recht nicht, wenn man mit dem Notebook unterwegs ist. Hierfür müssen die Anmeldedaten (Credentials) zwischengespeichert (gecached) werden, damit eine Offline-Anmeldung möglich ist. Das geht ganz einfach über ein zusätzliches PAM-Modul, welches einfach über das Paket libpam-ccreds installiert wird:

apt install libpam-ccreds

Damit ist die Einrichtung des Domänenlogins abgeschlossen. Um diese Einstellungen einfacher auf viele Clients auszurollen kann z.B. ein eigenes .deb-Paket erstellt werden.

Das war die Pflicht, nun kommt die Kür. Für den Cinnamon-Desktop habe ich das LDAP-Passwort-Desklet entwickelt, welches dem Nutzer anzeigt, wann sein Domänenkennwort abläuft. Darüber kann das Kennwort auch mit einem Klick geändert werden.

More to come...

Dieser Beitrag wird noch erweitert!

Fragen? Fragen!