VMware – Ubuntu 16.04 LTS – Authentifizierung mit Active Directory Accounts

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