La gestion des passerelles authentifiantes sous bash
est souvent problématique. Configurer la passerelle se fait alors par un export http_proxy
dans lequel le mot de passe est en clair. Il est évident que cette solution n’est pas satisfaisante. Dans la suite de ce billet ja vais présenter l’installation de cntlm
qui permet de régler ce problème de manière simple et sécurisée.
Installation et configuration de cntlm
Informations nécessaires
Avant de commencer, il faut connaitre son nom d’utilisateur, son mot de passe et le domaine dans lequel on travail. Dans la suite de cette explication ils seront remplacés par name, password et domain.
Évidement il faudra aussi connaitre l’adresse IP de la passerelle utilisée par le système, sous Windows on l’obtient avec la commande ipconfig
.
Installation de cntlm
Sous Ubuntu (et les descendants comme Mint,…) cntlm
est dans les dépôts :
sudo apt-get install cntlm
Dès l’installation le service cntlm est lancé, la configuration n’étant pas faite, il faut commencer par arrêter le service (sudo service cntlm stop
). Il reste à configurer les principaux éléments en éditant le fichier /etc/cntlm.conf
en superutilisateur (par exemple sudo gedit /etc/cntlm.conf &
). Les éléments importants du fichier sont les suivants :
# # Cntlm Authentication Proxy Configuration # # NOTE: all values are parsed literally, do NOT escape spaces, # do not quote. Use 0600 perms if you use plaintext password. # Username name Domain domain Auth PassNT Proxy 192.168.1.5:8080 NoProxy localhost, 127.0.0.*, 10.*, 192.168.* Listen 3128
Les différents champs sont assez explicites. Pour l’instant les champs Auth
et PassNT
sont laissés vierges.
Le champ Listen
correspond au port qui sera utilisé par cntml
, sauf si vous utilisez déjà ce port, ne le changez pas.
Il reste à remplir le mot de passe avec son condensé (hash). La solution la plus simple (qui permet en même temps de tester le reste de la configuration) et d’utiliser cntlm
en ligne de commande :
sudo cntlm -v -I -M http://www.google.fr
Le mot de passe doit être saisit ensuite et le résultat doit contenir les lignes suivantes (bien entendu les valeurs de condensés (hash) ne seront pas les mêmes) :
Config profile 1/4... Connection closed Config profile 2/4... OK (HTTP code: 200) ----------------------------[ Profile 1 ]------ Auth NTLM PassNT FF72C0DFC1C0D237CCEA5F7D53A17557 PassLM 48AC20D4C99F6423D42DDF2A2C6D325A ------------------------------------------------
On ferme tous les terminaux et on relance dans un nouveau terminal (sudo cntlm -v
pour voir ce qui passe par le proxy).Sous Mint (sous les autres interfaces on retrouvera les mêmes principes) on utilise l’applet réseaux pour configurer un serveur mandataire pour tout le système en http://127.0.0.1:3128.
Il est aussi possible de relancer le service mais dans ce cas, rien ne sera visible en cas de problème (sudo service cntlm start
).
Utilisation
Si le service est lancé au démarrage, rien à faire. Sinon le lancer dans un terminal qui restera ouvert comme ci-dessous.