So richten Sie einen Kerberos KDC-Proxy für den externen Zugriff ein
Wer schon einmal mit Remote-Kerberos-Authentifizierung gearbeitet hat, weiß, dass das etwas knifflig sein kann. Es reicht nicht, einfach Ports zu öffnen und auf das Beste zu hoffen, insbesondere bei externen Clients oder Rechnern in Arbeitsgruppen. Sind die Domänencontroller nicht direkt erreichbar oder ist NTLM deaktiviert (was aus Sicherheitsgründen heutzutage üblich ist), schlägt die Authentifizierung in der Regel fehl. Hier kommt ein KDC-Proxy ins Spiel. Er fungiert als sichere Brücke, die es externen Clients ermöglicht, sich über HTTPS mit Kerberos zu authentifizieren und so zu verhindern, dass die Kerberos-Ports direkt im Internet erreichbar sind. Das kann viel Ärger ersparen, insbesondere bei Remote-Zugriffskonfigurationen wie RDP-Gateways im reinen Kerberos-Modus. Die Einrichtung ist allerdings etwas kompliziert. Man benötigt ein gültiges Zertifikat auf dem KDC-Proxy, muss einige Ports öffnen und clientseitige Einstellungen konfigurieren. Im schlimmsten Fall, wenn man etwas mit dem Zertifikat oder den Firewall-Regeln falsch macht, bleibt die Authentifizierung einfach hängen. Hier also eine grobe Anleitung, wie das Ganze funktioniert – inklusive einiger praktischer Tipps, denn nichts läuft perfekt reibungslos.
Wie man die externe Kerberos-Authentifizierung mit einem KDC-Proxy behebt
Warum Sie das brauchen und wann es zutrifft
Dieser Ansatz ist hilfreich, wenn externe Benutzer oder Rechner außerhalb der Domäne sich nicht direkt per Kerberos an Ihren Domänencontrollern anmelden können – insbesondere, wenn NTLM gesperrt ist. Sollten Fehlermeldungen wie „CredSSP encryption oracle“ auftreten oder Ihre RDP-Protokolle melden, dass die KDC-Authentifizierung fehlgeschlagen ist, liegt das Problem wahrscheinlich in der Proxy-Konfiguration. Nach korrekter Einrichtung ist eine reibungslosere Remote-Anmeldung zu erwarten. Allerdings erfordert dies etwas Erfahrung mit Zertifikaten und Firewall-Anpassungen, was mitunter aufwendig sein kann.
Schritt 1: Bereiten Sie Ihr SSL-Zertifikat für den KDC-Proxy vor.
Das Zertifikat ist unerlässlich, da es den gesamten Datenverkehr zwischen Ihren externen Clients und dem Proxy verschlüsselt. Es *muss* die folgenden EKUs enthalten: – Serverauthentifizierung – Clientauthentifizierung – Kerberos-Authentifizierung. Der SAN sollte außerdem den FQDN Ihres Proxys enthalten. Ein selbstsigniertes Zertifikat ist zwar für Testumgebungen ausreichend, für den Produktivbetrieb sollten Sie jedoch eine vertrauenswürdige Zertifizierungsstelle (CA) verwenden. Sobald Sie das Zertifikat erhalten haben, kopieren Sie es in den Zertifikatsspeicher Ihres Servers (`cert:\LocalMachine\My`) und notieren Sie sich den Fingerabdruck. Dies können Sie in PowerShell tun: `powershell Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_. Subject -like „*CN=yourproxy.domain.com*“ } | Select-Object -ExpandProperty Thumbprint`.Wenn Sie ein selbstsigniertes oder internes CA-Zertifikat verwenden, müssen Sie das Stammzertifikat der CA auf Ihren Clients installieren, damit diese ihm vertrauen (andernfalls treten Vertrauensfehler auf).
Schritt 2: Binden Sie das SSL-Zertifikat an Port 443 auf dem Server.
Zuerst reservieren Sie die URL für HTTPS: `powershell NETSH http add urlacl url=https://+:443/KdcProxy user=“NT authority\Network Service“`.Dadurch kann Ihr Server an dieser URL lauschen. Weisen Sie anschließend das SSL-Zertifikat Port 443 zu: `powershell $appid = [Guid]::NewGuid().ToString(„B“) $certHash = „YOUR_CERT_THUMBPRINT“ # Ersetzen Sie dies durch Ihren Zertifikat-Fingerabdruck netsh http add sslcert ipport=0.0.0.0:443 certhash=$certHash appid=$appid`.Falls dies fehlschlägt, prüfen Sie, ob ein anderes Zertifikat Port 443 belegt, oder starten Sie den HTTP-Dienst neu. Da Sie die Clientzertifikatsauthentifizierung aus Gründen der Einfachheit absichtlich überspringen, deaktivieren Sie diese über die Registrierung: PowerShell: `REG ADD „HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings“ /v HttpsClientAuth /t REG_DWORD /d 0 /f` und `REG ADD „HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings“ /v DisallowUnprotectedPasswordAuth /t REG_DWORD /d 0 /f`.Aktivieren Sie anschließend den KDC-Proxydienst: PowerShell: `Set-Service kpssvc -StartupType Automatic` und `Start-Service kpssvc`.Stellen Sie sicher, dass Port 443 in der Windows-Firewall für eingehende Verbindungen freigegeben ist: PowerShell: `New-NetFirewallRule -DisplayName „KDCProxy TCP_In“ -Direction Inbound -Protocol TCP -LocalPort 443`.
Schritt 3: URL-Reservierung erstellen und Zertifikat binden
Bereits gezeigt, aber zur Erinnerung: PowerShell netsh http add urlacl url=https://+:443/KdcProxy user=“NT authority\Network Service“ netsh http add sslcert ipport=0.0.0.0:443 certhash=$certHash appid=$appid
Schritt 4: Clients für die Verwendung des KDC-Proxys konfigurieren
Auf Clientrechnern müssen Sie Windows anweisen, Kerberos-Anfragen über Ihren Proxy zu leiten. Dies können Sie über Gruppenrichtlinien oder Registry-Änderungen erreichen. In der Gruppenrichtlinie: – Öffnen Sie Computerkonfiguration > Richtlinien > Administrative Vorlagen > System > Kerberos – Aktivieren Sie KDC-Proxyserver für Kerberos-Clients angeben – Fügen Sie eine Zeichenfolge im folgenden Format hinzu: `
Schritt 5: Überprüfen Sie, ob alles funktioniert
Nach dem Neustart melden Sie sich an einem Client-Rechner an und versuchen Sie, ein Kerberos-Ticket zu erhalten: `powershell klist get krbtgt`.Wenn alles korrekt konfiguriert ist, sollte das über den Proxy ausgestellte Ticket angezeigt werden.Überprüfen Sie außerdem die Ereignisanzeige unter „Ereignisanzeige > Anwendungs- und Dienstprotokolle > Microsoft > KDCProxy > Betriebsbereit“ auf Protokolle zur Proxy-Aktivität.
Eine merkwürdige Sache: Manchmal muss die Einrichtung neu gestartet oder der Client-Cache aktualisiert werden, damit sie wirksam wird. Ich bin mir nicht ganz sicher, warum, aber Windows kann da schon mal etwas eigenwillig sein.
Zusammenfassung
- Besorgen Sie sich ein gültiges SSL-Zertifikat mit korrekter EKU und SAN.
- Binden Sie das Zertifikat mit `netsh` an Port 443.
- Konfigurieren Sie den KDC-Proxy-Dienst und öffnen Sie die Firewall.
- Clientrichtlinien so konfigurieren, dass sie auf den Proxy verweisen.
- Testen Sie mit `klist` und prüfen Sie die Ereignisprotokolle.
Zusammenfassung
Einen Kerberos-Proxy einzurichten ist zwar keine Raketenwissenschaft, aber auch kein Kinderspiel. Es geht darum, sicherzustellen, dass Zertifikate, Firewall-Regeln und Client-Konfigurationen übereinstimmen. Klingt etwas seltsam, aber sobald es funktioniert, sind die Probleme mit Kerberos-Verbindungen vom Server verschwunden. Hoffentlich spart das jemandem ein paar Stunden. Und denken Sie daran: Wenn es nicht sofort klappt, starten Sie den Server neu oder überprüfen Sie Ihre Konfigurationen. Viel Erfolg!