Have any questions?
+44 1234 567 890
combined.expert - Kerberos-Authentifizierung für Outlook und grommunio
Diese Anleitung zeigt wie können wir die Kerberos-Authentifizierung zwischen Microsoft Outlook und grommunio Server aktivieren und verwenden.
Referenz:
https://community.grommunio.com/d/1789-spnegokerberos-authentifizierung-fur-outlook
Bevor wir uns mit der Konfiguration auf den grommunio Server beschäftigen, müssen wir sicherstellen, dass die Voraussetzungen für eine funktionierende Kerberos-Authentifizierung korrekt eingerichtet sind.
Alle beteiligte Geräte (Client, Domain Controller, grommunio Server müssen die Zeit mit einem NTP-Server synchronisieren. Kerberos verlangt, dass die Zeit synchron ist. Zeitunterschiede von mehr als 5 Minuten brechen die Authentifizierung ab.
Bei der DNS-Auflösung ist es wichtig, dass die A- und PTR-Record für den grommunio Server konfiguriert sind. Obwohl Alias (CNAME) mit Kerberos funktionieren können – sofern die SPN korrekt konfiguriert sind – empfehlen wir die Verwendung von A- und PTR-Record.
PTR-Record nicht vergessen, das ist sehr wichtig für Kerberos.
Der Domain Controller muss als DNS-Server auf den grommunio Server konfiguriert sein.
Der grommunio Server muss mit dem Domain Controller kommunizieren und falls beide Server sich in unterschiedlichen Netzwerken befinden, müssen wir die entsprechende Firewall-Ports öffnen:
- LDAP (389) oder LDAPS (636)
- DNS (53)
- Kerberos (88)
- Weitere Ports je nach Konfiguration/Bedarf
Eventuell noch Global Catalog freigeben. Port 464 für Kerberos ist nicht notwendig.
Auf dem Client, dort wo Outlook ausgeführt wird, müssen wir einige Registry-Einstellungen vornehmen. Dies kann über Gruppenrichtlinien, Configuration Manager Compliance-Regel, Scripts oder andere Methoden erledigt werden.
Pfad:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover
oder
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Outlook\AutoDiscover
Eintrag (Name): ExcludeExplicitO365Endpoint
Typ: DWORD
Wert: 1
Um folgende Meldung beim Start von Outlook auszublenden müssen wir noch einen Registry-Wert erfassen:
Pfad:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover\RedirectServers
Eintrag (Name): autodiscover.mydomain.ch
Typ: String
Wert: (leer lassen)
Referenz:
Weitere Anpassungen an die Registry sind nicht notwendig.
An dieser Stelle können wir einen Dienstkonto (Service Account) für grommunio konfigurieren. Wir erstellen das Konto im Active Directory. In unserem Beispiel heisst der Dienstkonto «gromox».
Bei den Optionen können wir die Kerberos-Verschlüsselung konfigurieren. Die Verschlüsselung muss dann später beim Erstellen der Keytab-Datei korrekt angegeben werden und muss übereinstimmen.
SPN für den Service Account erstellen. Wir benötigen SPN für die Dienste gromox (Mail und Domain Controller) und HTTP (Mail und Autodiscover).
setspn -S gromox/mail.domain.ch gromox
setspn -S gromox/dc01.domain.ch gromox
setspn -S HTTP/mail.domain.ch gromox
setspn -S HTTP/autodiscover.domain.ch gromox
SPN abfragen und prüfen, ob korrekt erstellt wurde:
setspn -L gromox
Folgende SPN müssen aufgelistet werden:
Falsche SPN können mit dem Parameter «D» wieder entfernt werden:
setspn -D grommmoxFAIL/mail.domain.ch gromox
[Update 16.09.2024] Wir müssen sicherstellen, dass die Einstellungen für die Delegierung wie folgt konfiguriert sind:
Sobald der Dienstkonto fertig konfiguriert ist und die SPN erstellt wurden, können wir die Keytab-Datei erstellen. Dieser Prozess findet auf einem Domain Controller statt:
.\ktpass.exe -princ gromox/mail.domain.ch@DOMAIN.CH -mapUser gromox@DOMAIN.CH -pass PASSW0RD -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -out C:\Temp\gromox.keytab
Die wichtigsten Parameter erklärt:
princ <principalname>
Gibt den Prinzipalnamen im Format host/computer.domain.ch@DOMAIN.CH an. Warnung: Bei diesem Parameter wird die Gross-/Kleinschreibung beachtet. Für grommunio müssen wir folgendes Format verwenden: gromox/mail.domain.ch@DOMAIN.CH
mapUser <useraccount>
Ordnet den Namen des Kerberos-Prinzipals, der durch den Parameter princ angegeben wird, dem angegebenen Domänenkonto zu. Wir verwenden unser Dienstkonto für grommunio mit dem format gromox@DOMAIN.CH
pass <password>
Gibt das Kennwort für den Namen des Prinzipalbenutzers an, der vom Parameter princ angegeben wird. Verwenden Sie * (Stern), um zur Eingabe eines Kennworts aufzufordern.
ptype
Gibt den Prinzipaltyp an.
- KRB5_NT_PRINCIPAL: Der allgemeine Prinzipaltyp (empfohlen, für grommunio diesen Typ verwenden).
- KRB5_NT_SRV_INST: Die Benutzerdienstinstanz
- KRB5_NT_SRV_HST: Die Hostdienstinstanz
crypto
Gibt die Schlüssel an, die in der Schlüsseltabellendatei generiert werden:
- DES-CBC-CRC: Wird aus Kompatibilitätsgründen verwendet.
- DES-CBC-MD5: Hält sich mehr an die MIT-Implementierung und wird aus Kompatibilitätsgründen verwendet.
- RC4-HMAC-NT: Verwendet eine 128-Bit-Verschlüsselung.
- AES256-SHA1: Verwendet die AES256-CTS-HMAC-SHA1-96-Verschlüsselung. Für grommunio können wir diesen Schlüssel verwenden, sofern in den Eigenschaften des Dienstkontos aktiviert ist.
- AES128-SHA1: Verwendet die AES128-CTS-HMAC-SHA1-96-Verschlüsselung.
- All: Gibt an, dass alle unterstützten Kryptografietypen verwendet werden können.
out <filename>
Gibt den Namen der zu generierenden Schlüsseltabellendatei (.keytab) von Kerberos Version 5 an.
Nach der Ausführung von ktpass.exe wird der Dienstkonto (User Logon Name) entsprechend automatisch ergänzt. Wenn nicht, müssen wir den Wert wie folgt korrigieren:
Der korrekte Eintrag ist der SPN gromox/mail.domain.ch
Wir müssen jetzt die erstellte Datei gromox.keytab als krb5.keytab umbenennen und auf den grommunio-Server nach als /etc/krb5.keytab kopieren.
Wir passen die Konfigurationsdatei /etc/krb5.conf wie folgt an:
includedir /etc/krb5.conf.d
[libdefaults]
# "dns_canonicalize_hostname" and "rdns" are better set to false for improved security.
# If set to true, the canonicalization mechanism performed by Kerberos client may
# allow service impersonification, the consequence is similar to conducting TLS certificate
# verification without checking host name.
# If left unspecified, the two parameters will have default value true, which is less secure.
dns_canonicalize_hostname = false
rdns = false
default_realm = DOMAIN.CH
default_tgs_enctypes = aes256-sha1 aes128-sha1
default_tkt_enctypes = aes256-sha1 aes128-sha1
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
DOMAIN.CH = {
kdc = dc01.DOMAIN.CH
admin_server = dc01.DOMAIN.CH
default_domain = DOMAIN.CH
}
[domain_realm]
.domain.ch = DOMAIN.CH
domain = DOMAIN.CH
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
Hinweis: Auch wenn wir nur eine Domäne verwenden, müssen wir die Abschnitte [realms] und [domain_realm] konfigurieren.
Um Kerberos für MAPI zu aktivieren müssen wir folgende Datei auf den grommunio-Server editieren:
/etc/gromox/http.cfg
Folgende Zeilen am Ende hinzufügen und Datei speichern:
http_auth_spnego=yes
http_krb_service_principal=gromox@mail.domain.ch
Für das Testen starten wir den grommunio Server nach jeder Änderung neu, somit stellen wir sicher, dass alle Einstellungen sofort ohne Verzögerung aktiv sind und die Dienste neu initialisiert sind.
Prüfen, ob Outlook mit Kerberos authentifiziert. CTRL+Rechtsklick auf das Outlook-Symbol in der Taskleiste und Connection Status anklicken:
Die Spalte Authn muss den Wert Nego* zeigen.