Comment utiliser un proxy KDC dans Active Directory pour un accès distant sécurisé

Comment configurer un proxy KDC Kerberos pour l’accès externe

Si vous avez déjà utilisé l’authentification Kerberos à distance, vous savez que c’est un peu complexe. Il ne suffit pas d’ouvrir des ports et de croiser les doigts, surtout avec des clients externes ou des machines de groupe de travail. Généralement, si les contrôleurs de domaine ne sont pas accessibles directement (ou si NTLM est désactivé, ce qui est fréquent pour des raisons de sécurité), l’authentification échoue. C’est là qu’intervient un proxy KDC. Il s’agit d’un pont sécurisé permettant aux clients externes de s’authentifier via Kerberos sur HTTPS, évitant ainsi d’exposer vos ports Kerberos directement sur Internet. Cela peut vous éviter bien des soucis, notamment pour les configurations d’accès distant comme les passerelles RDP fonctionnant en mode Kerberos uniquement. Cependant, sa configuration est un peu délicate. Il faut un certificat valide sur le proxy KDC, ouvrir certains ports et configurer les paramètres côté client. Dans le pire des cas, si vous modifiez incorrectement le certificat ou les règles du pare-feu, l’authentification est tout simplement bloquée. Voici donc un guide approximatif pour y parvenir — avec une touche de réalisme, car rien n’est jamais parfaitement simple.

Comment résoudre les problèmes d’authentification externe Kerberos avec un proxy KDC

Pourquoi vous en avez besoin et quand cela s’applique

Cette approche s’avère utile lorsque les utilisateurs externes ou les machines non membres du domaine ne peuvent pas se connecter directement à vos contrôleurs de domaine via Kerberos, notamment si l’authentification NTLM est bloquée. Si vous rencontrez des erreurs telles que « Oracle de chiffrement CredSSP » ou si vos journaux RDP indiquent une impossibilité d’authentifier le KDC, le problème vient probablement de la configuration du proxy. Attendez-vous à une connexion à distance plus fluide une fois la configuration correctement effectuée. Cela dit, la mise en œuvre de cette méthode requiert une certaine expertise en matière de certificats et de paramétrage du pare-feu, ce qui peut s’avérer fastidieux.

Étape 1 : Préparez votre certificat SSL pour le proxy KDC

Le certificat est crucial car il chiffre tout le trafic entre vos clients externes et le proxy. Il *doit* comporter les EKU suivantes : – Authentification du serveur – Authentification du client – Authentification Kerberos. Le SAN doit inclure le nom de domaine complet (FQDN) de votre proxy. Un certificat auto-signé convient aux environnements de test, mais pour la production, utilisez une autorité de certification (CA) de confiance. Une fois le certificat obtenu, copiez-le dans le magasin de certificats de votre serveur (`cert:\LocalMachine\My`) et notez son empreinte numérique. Vous pouvez le faire avec PowerShell : `powershell Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_. Subject -like « *CN=yourproxy.domain.com* » } | Select-Object -ExpandProperty Thumbprint`.Si vous utilisez un certificat auto-signé ou un certificat d’autorité de certification interne, vous devrez installer le certificat racine de l’autorité de certification sur vos clients pour qu’ils lui fassent confiance (sinon, vous obtiendrez des erreurs de confiance).

Étape 2 : Associer le certificat SSL au port 443 sur le serveur

Commencez par réserver l’URL pour HTTPS : `powershell NETSH http add urlacl url=https://+:443/KdcProxy user= »NT authority\Network Service »`.Cela autorise votre serveur à écouter sur cette URL. Ensuite, attribuez le certificat SSL au port 443 : `powershell $appid = [Guid]::NewGuid().ToString(« B ») $certHash = « VOTRE_EMPREINTE_DE_CERTIFICAT » # remplacez ceci par l’empreinte de votre certificat netsh http add sslcert ipport=0.0.0.0:443 certhash=$certHash appid=$appid`.Si cela échoue, vérifiez si un autre certificat utilise déjà le port 443 ou redémarrez le service HTTP. Ensuite, puisque vous ignorez volontairement l’authentification par certificat client par souci de simplicité, désactivez-la via le registre : powershell REG ADD « HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings » /v HttpsClientAuth /t REG_DWORD /d 0 /f REG ADD « HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings » /v DisallowUnprotectedPasswordAuth /t REG_DWORD /d 0 /f Activez ensuite le service proxy KDC : powershell Set-Service kpssvc -StartupType Automatic Start-Service kpssvc Assurez-vous que le port 443 est autorisé en entrée dans le Pare-feu Windows : powershell New-NetFirewallRule -DisplayName « KDCProxy TCP_In » -Direction Inbound -Protocol TCP -LocalPort 443

Étape 3 : Créer une réservation d’URL et lier le certificat

Déjà montré, mais rappelez-vous : 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

Étape 4 : Configurer les clients pour utiliser le proxy KDC

Sur les machines clientes, vous devrez configurer Windows pour qu’il achemine les requêtes Kerberos via votre proxy. Vous pouvez le faire via la stratégie de groupe ou en modifiant le registre. Dans la stratégie de groupe : – Ouvrez Configuration ordinateur > Stratégies > Modèles d’administration > Système > Kerberos – Activez Spécifier les serveurs proxy KDC pour les clients Kerberos – Ajoutez une chaîne au format : `` (ou le domaine et le port de votre proxy) Ou directement via le registre (plus manuel, mais fonctionnel) : powershell reg add « HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos » /v KdcProxyServer_Enabled /t REG_DWORD /d 1 /f reg add « HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\KdcProxy\ProxyServers » /v votredomaine.com /t REG_SZ /d «  » /f Un redémarrage est nécessaire pour appliquer ces modifications sur le client.

Étape 5 : Vérifier que tout fonctionne

Après le redémarrage, connectez-vous à une machine cliente et tentez d’obtenir un ticket Kerberos : `powershell klist get krbtgt`.​​Si la configuration est correcte, le ticket émis par le proxy devrait s’afficher. Consultez également l’Observateur d’événements, sous : Observateur d’événements > Journaux des applications et des services > Microsoft > KDCProxy > Opérationnel, pour obtenir des journaux relatifs à l’activité du proxy.

Un détail étrange : il arrive que l’installation nécessite un redémarrage ou une actualisation du cache client pour être prise en compte. Je ne sais pas exactement pourquoi, mais Windows a parfois des comportements bizarres.

Résumé

  • Obtenez un certificat SSL valide avec un EKU et un SAN corrects.
  • Associez le certificat au port 443 avec `netsh`
  • Configurez le service proxy KDC et ouvrez le pare-feu.
  • Configurez les politiques client pour qu’elles pointent vers le proxy.
  • Testez avec `klist` et consultez les journaux d’événements.

Conclure

Configurer un proxy Kerberos n’est pas sorcier, mais ce n’est pas non plus un jeu d’enfant. Il faut s’assurer que vos certificats, règles de pare-feu et configurations client sont cohérents. C’est un peu étrange, mais une fois en marche, les problèmes liés à Kerberos à distance disparaissent. J’espère que cela vous fera gagner du temps. N’oubliez pas : si cela ne fonctionne pas immédiatement, redémarrez ou revérifiez vos configurations. Bonne chance !