Auf der Hilfeseite von Ubuntu gibt es einen Guide, damit man Active Directory Accounts zum Login auf einem Linux System verwenden kann, leider ist so wie er dort vorgestellt wird nicht besonders optimal für virtuelle Maschinen und funktioniert mit einer Windows 2012 R2 Domäne in der Standardkonfigration nicht, somit anbei die Korrektur 😉
Software Installation
sudo apt install krb5-user samba sssd
Neue Konfiguration von Kerberos
sudo mv /etc/krb5.conf /etc/krb5.conf.org sudo nano /etc/krb5.conf
[libdefaults] default_realm = MEINE.DOMAIN.TLD dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true
Interessant ist, wenn vorab die virtuelle Maschine vorab DHCP & DNS Einträge bekommen, dann muss man anscheinend weniger in der Konfigurationdateien nacharbeiten.
Samba
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org sudo nano /etc/samba/smb.conf
In die Datei: /etc/samba/smb.conf folgendes eintragen:
[global] workgroup = SHORTDOMAINNAME client signing = yes client use spnego = yes kerberos method = secrets and keytab realm = MEINE.DOMAIN.TLD security = ads
Ich verschiebe die Orginal Datei immer gerne, so hat man rückwirkend noch ein Backup der Basis Konfiguration und vor allem eine übersichtliche Konfigdatei, in welcher man nicht 1000 Zeilen durcharbeiten muss, bis man verstanden hat, was dort alles konfiguriert wurrde.
SSSD Configuration
Folgende Datei erstellen, die aus dem Guide kann unter Umständen nicht funktionieren, ich hatte jedenfalls Probleme damit:
sudo nano /etc/sssd/sssd.conf
[sssd] services = nss, pam config_file_version = 2 domains = MEINE.DOMAIN.TLD [domain/MEINE.DOMAIN.TLD] id_provider = ad access_provider = ad ldap_id_mapping=true krb5_server = MEINE.DOMAIN.TLD ad_domain = MEINE.DOMAIN.TLD krb5_realm = MEINE.DOMAIN.TLD cache_credentials = True id_provider = ad auth_provider = krb5 krb5_server = DC.MEINE.DOMAIN.TLD krb5_ccachedir = /tmp krb5_store_password_if_offline = True default_shell = /bin/bash use_fully_qualified_names = False fallback_homedir = /home/%d/%u ldap_idmap_autorid_compat = True ldap_max_id = 2000200000 override_homedir = /home/%d/%u
Nach dem Speichern:
sudo chown root:root /etc/sssd/sssd.conf && sudo chmod 600 /etc/sssd/sssd.conf
Samba neustarten
sudo systemctl restart smbd.service nmbd.service
Kerberos Ticket abholen & Domäne joinen
sudo kinit Administrator sudo klist
Domänen joinen mit:
sudo net ads join -k
Ich hatte hier 2 Probleme mit dem Joinen:
1. NetBIOS Name zu lang
=> Lösung: In der Datei /etc/samba/smb.conf folgenden Eintrag hinzufügen: netbios name = KURZERNAME
2. DNS Update failed, ist bei mir als Folgefehler zu 1. aufgetreten
=> Lösung: In der Datei /etc/hosts ebenfalls KURZERNAME anhängen
Danach sollte alles klappen! 🙂
SSSD Starten
Erst jetzt kann man den SSSD Service starten, denn ohne gültiges Kerberos-Ticket verweigert der Dienst die Arbeit. (Im Guide wird er vorab gestartet, was bei mir nicht funktioniert hat.
sudo systemctl start sssd.service
Home Directories
sudo nano /etc/pam.d/common-session
Und direkt nach „session required pam_unix.so“ folgendes einfügen:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Danach sollte der Login per SSH klappen 🙂
Update:
Anscheinend gab es nach einen Update von SSSD irgendwelche Änderungen… und bei mir kam es zu Problemen, nach ein wenig Suchen fand ich raus, dass es mit den Gruppenpolicies zusammenhängt
Lösung:
/etc/sssd/sssd.conf:
ad_gpo_access_control = disabled
hinzufügen