Traverser un proxy NTLM/SSPI

Sous Windows, un proxy NTLM/SSPI récupère automatiquement l’identité de votre session pour vous donner accès à Internet. L’avantage est que vous n’avez pas à saisir de mot de passe ; l’inconvénient est que si vous utilisez un outil qui ne supporte pas ce protocole (svn, wget, …), la connexion est impossible.

La solution est d’installer un proxy local qui gèrera l’authentification auprès du proxy SSPI. Le programme qui permet de faire cela s’appelle Cntlm.

  1. Téléchargez l’archive cntlm-0.92.3-win32.zip et décompressez-la dans le dossier Mes Programmes\ ;

  2. Éditez le fichier cntlm.ini et renseignez les infos Username et Domain de votre compte Windows (le Password est inutile), puis le nom ou l’IP du proxy SSPI. Par défaut Cntlm utilise le port 3128 mais vous pouvez le modifier ;

  3. Ouvrez une fenêtre de commandes dans le répertoire de Cntlm (depuis l’explorateur de fichiers, Shift+Clic droit sur le répertoire, puis Ouvrir une fenêtre de commandes ici), et lancez la commande suivante : cntlm -M http://test.com

  4. Cntlm vous demande de saisir votre Password (celui de votre compte Windows), puis teste différentes options NTLM. Si la connexion réussit, il vous renvoie 2 lignes comme celles-ci : Config profile 1/4... OK (HTTP code: 200) ----------------------------[ Profile 0 ]------ Auth NTLMv2 PassNTLMv2 7EC64ACD3326B069CF6B4ACD3326B0BD ------------------------------------------------

  5. Ajoutez ces 2 lignes (Auth et PassNTLMv2) dans le fichier cntlm.ini après Username et Domain ;

  6. Pour vérifier que Cntlm fonctionne, revenez à la fenêtre de commandes et lancez-le en mode verbeux : cntlm -v

  7. Ensuite paramétrez votre navigateur pour utiliser le proxy localhost:3128 et vérifiez que la navigation se fait bien en HTTP et en HTTPS ;

  8. Si cela fonctionne, vous pouvez arrêter Cntlm et le lancer en tâche de fond en retirant l’option -v.

Vous pouvez désormais utiliser ce proxy local avec tous les outils qui ne supportaient pas le proxy SSPI.

Pour aller plus loin, il est possible via PuTTY d’ouvrir une session SSH à travers ce proxy HTTP, et d’utiliser la fonction Tunnel pour mirrorer sur la machine locale un port de la machine distante. Par exemple, si votre machine distante héberge un serveur MySQL sur le port 3306, en forwardant ce port de votre machine locale vers la machine distante vos applications pourront accéder à cette base à l’adresse localhost:3306, sans se soucier de l’existence d’un proxy.


En lire plus sur : windows