🔧 Active Directory-Anbindung unter Ubuntu (22.04 LTS / 24.04 LTS)

🎯 Ziel

Ubuntu wird Mitglied einer Microsoft-AD-Domäne.
Damit können sich Benutzer mit ihren AD-Konten anmelden, erhalten automatisch Home-Verzeichnisse und CIFS-/SMB-Freigaben werden mit Kerberos-SSO eingebunden – ohne Klartextpasswörter.

🧩 1. Voraussetzungen

  • DNS-Konfiguration
    Der DNS-Resolver muss auf einen AD-Domain-Controller (DC) zeigen.
    Prüfen:

    resolvectl status
    dig _ldap._tcp.deinefirma.local SRV
  • Zeit-Synchronisierung
    AD-Kerberos verlangt eine Differenz von weniger als 5 Minuten:

    timedatectl set-ntp true
    timedatectl status
  • Hostname konfigurieren
    Setzen Sie den korrekten Hostname:

    hostnamectl set-hostname ubuntu01.deinefirma.local
  • Firewall-Regeln
    Erlauben Sie den Zugriff auf die DC-Ports für LDAP, LDAPS, Kerberos, DNS und SMB.

⚙️ 2. Pakete installieren

Aktualisieren der Paketliste und Installation der benötigten Pakete:

sudo apt update
sudo apt install -y realmd sssd-ad sssd-tools adcli samba-common krb5-user packagekit
  • realmd → Erkennt und verbindet Linux-Systeme mit Active Directory oder Kerberos-Domänen.

  • sssd-ad → AD-Backend für den System Security Services Daemon (SSSD), sorgt für Anmeldung und Benutzerverwaltung über AD.

  • sssd-tools → Zusatzwerkzeuge zur Verwaltung und Diagnose von SSSD (z. B. Cache löschen, Status prüfen).

  • adcli → Stellt die Verbindung zum AD her („Domäne beitreten“), erzeugt Computer-Objekte in AD.

  • samba-common → Grundkomponenten für SMB/CIFS-Kommunikation mit Windows-Servern.

  • krb5-user → Kerberos-Client, ermöglicht sichere Ticket-basierte Authentifizierung (Single Sign-On).

  • packagekit → Schnittstelle für automatische Paketinstallation, wird von realmd genutzt.

🏁 3. Domäne entdecken & beitreten

Ermitteln Sie die AD-Domäne:

realm discover DEINEFIRMA.LOCAL

Domänenbeitritt:

sudo realm join DEINEFIRMA.LOCAL -U Administrator

Die folgenden Konfigurationsdateien werden automatisch angelegt:

  • /etc/krb5.keytab
  • /etc/krb5.conf
  • /etc/sssd/sssd.conf

Steuern Sie die Login-Rechte:

sudo realm permit --all
# oder gezielt Gruppen:
# sudo realm permit "DOMÄNE\\Linux-Admins"

🔍 4. Grundtests

Führen Sie folgende Tests aus:

  • Kerberos-Ticket beziehen und prüfen:

    kinit benutzer@DEINEFIRMA.LOCAL
    klist
  • Benutzerinformationen aus AD abrufen:

    id benutzer@DEINEFIRMA.LOCAL
  • SSSD-Dienststatus überprüfen:

    systemctl status sssd
    journalctl -u sssd --since "10 min ago"

⚙️ 5. Konfiguration von SSSD & PAM

5.1 SSSD-Konfiguration (/etc/sssd/sssd.conf)

Erstellen bzw. Bearbeiten der Datei /etc/sssd/sssd.conf:

[sssd]
services = nss, pam
config_file_version = 2
domains = DEINEFIRMA.LOCAL
 
[domain/DEINEFIRMA.LOCAL]
id_provider = ad
access_provider = ad
ldap_id_mapping = true
use_fully_qualified_names = False
fallback_homedir = /home/%u
default_shell = /bin/bash
cache_credentials = True
krb5_store_password_if_offline = True
ad_domain = DEINEFIRMA.LOCAL
krb5_realm = DEINEFIRMA.LOCAL
case_sensitive = False

Stellen Sie sicher, dass die Rechte korrekt gesetzt sind:

sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd

5.2 Automatische Home-Verzeichnisse

Fügen Sie in der Datei /etc/pam.d/common-session am Ende folgenden Eintrag hinzu:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0077

Beim ersten Login eines AD-Benutzers wird somit automatisch das Home-Verzeichnis /home/<benutzer> erstellt.

👤 6. Benutzerverwaltung (AD-User auf Ubuntu)

  • Es werden keine lokalen Accounts in /etc/passwd benötigt.
    SSSD liefert die Benutzerinformationen dynamisch aus AD.

  • Anmeldung erfolgt als:
    DOMÄNE\benutzer oder benutzer@firma.local.

  • Cache der Benutzerdaten ermöglicht Offline-Login.
    Beispiel:

    id max.mustermann@DEINEFIRMA.LOCAL
    ls /home/   # → zeigt /home/max.mustermann/
  • Cache-Pfad: /var/lib/sss/db/

🧠 7. Sudo-Integration (optional)

Um AD-Benutzern, z. B. der Gruppe „Domänen-Admins“, Sudo-Rechte zu gewähren:

  1. Öffnen Sie eine neue Datei:

    sudo visudo -f /etc/sudoers.d/ad-admins
  2. Fügen Sie folgenden Inhalt ein:

  %DEINEFIRMA\\Domänen-Admins ALL=(ALL:ALL) ALL

Hinweis: Der Backslash in sudoers muss doppelt escaped (\) werden.

🔐 8. CIFS-/SMB-Freigaben ohne Passwort (Kerberos)

Beispiel-Eintrag in /etc/fstab:

# Kerberos-Authentifizierung, kein Passwort nötig
//fileserver.deinefirma.local/share  /mnt/share  cifs  sec=krb5,vers=3.0,multiuser,seal,cruid=1000,cache=strict,iocharset=utf8,x-systemd.automount,x-systemd.idle-timeout=600,_netdev,nofail  0  0

Erklärung:

  • sec=krb5: Aktiviert Kerberos-SSO.
  • multiuser: Mehrere Benutzer erhalten eigene Kerberos-Tickets.
  • seal: Aktiviert SMB-Verschlüsselung/Signierung.
  • cruid=1000: Gibt die UID des eingeloggten Benutzers an.
  • x-systemd.automount: Automatischer Mount beim Zugriff.

Prüfen Sie das Ticket:

klist
ls /mnt/share

🔄 9. Automatisches Kerberos-Ticket-Renewal (optional)

Für dauerhafte Sessions oder Dienste erstellen Sie folgenden systemd-Service in /etc/systemd/system/krenew@.service:

[Unit]
Description=Renew Kerberos ticket for %i
After=network-online.target
 
[Service]
Type=simple
ExecStart=/usr/bin/krenew -K 60 -i
User=%i
Restart=always
 
[Install]
WantedBy=default.target

Aktivieren:

sudo systemctl enable --now krenew@benutzer.service

🧰 10. Alternative (nur falls nötig): Winbind

Obwohl SSSD heute Standard ist, funktioniert auch Winbind:

  1. Installation:

    sudo apt install -y samba winbind libpam-winbind libnss-winbind
  2. Domänenbeitritt:

    sudo net ads join -U Administrator
    wbinfo -u
    wbinfo -g
  3. Beispielhafte Konfiguration in /etc/samba/smb.conf:

    [global]
       workgroup = DEINEFIRMA
       security = ADS
       realm = DEINEFIRMA.LOCAL
       winbind use default domain = yes
       idmap config * : backend = tdb
       idmap config * : range = 10000-20000

Wichtig: Winbind darf nicht gleichzeitig mit SSSD verwendet werden!

🚨 11. Troubleshooting-Checkliste

ProblemÜberprüfung
Kein Loginjournalctl -u sssd
Zeitdifferenztimedatectl
DNS-Fehlerdig _kerberos._tcp.DOMÄNE SRV
Kerberos-Fehlerkinit und klist
Share-Mount scheitertsmbclient -L //server -k
Ungültiger BenutzernameVarianten: user@DOMAIN, DOMAIN\user

↩️ 12. Domäne verlassen

Um die Domäne zu verlassen, führen Sie Folgendes aus:

sudo realm leave DEINEFIRMA.LOCAL
sudo systemctl restart sssd

🔒 13. Sicherheits-Empfehlungen

  • Keine Passwörter in /etc/fstab oder Skripten verwenden.
  • Schützen Sie /etc/sssd/sssd.conf mit chmod 600.
  • Sichern Sie /etc/krb5.keytab durch Backups.
  • Beschränken Sie den Zugriff über realm permit.
  • Für SMB-Verbindungen sollte, wenn möglich, sec=krb5p für signierte und verschlüsselte Verbindungen genutzt werden.

Tags:ActiveDirectoryUbuntuSSSDKerberosADIntegration

Linux-Blog-Overview