Authentification SSO avec NTLM sur serveur Web Linux

ntlm login

Dans ce billet je présente une procédure simple afin de rendre accessible du contenu WEB après une authentification sur un AD avec le protocole NTLM.
Ce protocole est une méthode d’authentification à utiliser dans un réseau Microsoft Active Directory.
NTLM utilise un mécanisme de question réponse, le client envoie une requête, le proxy lui répond avec une demande d’authentification et le client lui renvoie la même requête avec ces identifiants de connexion.

Vous devez avoir un serveur apache fonctionnel. Je détail le tout depuis une configuration sous Debian 6. Je possède un active directory, dns et DHCP déjà configuré et testé.

Téléchargez les sources avec la commande ci-dessous

1
2
apt-get install libapache2-mod-perl2 perl build-essential
apt-get install libapache2-authenntlm-perl

Ajoutez et adaptez votre fichier de virtualhost 000-default en y ajoutant ce « directory » (voir imprime ecran ci-dessous)

1
gedit /etc/apache2/sites-enabled/000-default
    Vous devez modifier plusieurs lignes suivant votre configuration :

  • Directory « /var/www/intranet » : URL vers le dossier contentant vos pages web
  • PerlAddVar ntdomain : le premier est votre nom de domaine complet, puis le nom NETBIOS de votre controleur de domaine windows
  • PerlSetVar defaultdomain : Le nom de domaine complet
1
2
3
4
5
6
7
8
9
<Directory "/var/www/intranet">
    PerlAuthenHandler Apache2::AuthenNTLM
    AuthType ntlm,basic
    AuthName paipartners
    require valid-user
    PerlAddVar ntdomain "SRV1.PPEGR5.LOCAL SRV1PPEGR5"
    PerlSetVar defaultdomain SRV1.PPEGR5.LOCAL
    PerlSetVar splitdomainprefix 1
</Directory>

0001 modification etc apache2 sites-enabled 000-default

Pensez à redémarrer apache avec la commande :

1
/etc/init.d/apache2 restart

Pensez également à créer cette clée dans le registre de chaque PC client. Donc depuis regedit.exe, insérez y une nouvelle clé DWORD 32 bits avec la valeur 1. (Détails sur l’utilité de cette clé)

1
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/LmCompatibilityLevel

0002 modification clef de registre  windows client

Sur votre page d’index du site, vous pouvez retourner l’utilisateur courant avec ce code PHP :

0004 authentification ntlm client win7

1
2
3
<?php
echo "Bonjour" . $_SERVER['REMOTE_USER'] . " !";
?>

Le module est également disponible pour windows : mod_authnz_sspi sur .apachehaus.net
Ajoutez : LoadModule authnz_sspi_module modules/mod_authnz_sspi.so dans votre httpd.conf

En référence sur l’article travaux pratique de bts sio vous pouvez utiliser cette configuration IP sur votre serveur WEB:
Réseau Orange

1
2
3
4
5
6
7
auto eth0
iface eth0 inet static
address 172.16.1.49
netmask 255.255.255.0
gateway 172.16.1.254
dns-domain 10.0.0.100
dns-nameservers 10.0.0.100

Réseau Vert

1
2
3
4
5
6
7
auto eth0
iface eth0 inet static
address 10.0.0.42
netmask 255.0.0.0
gateway 10.0.0.254
dns-domain 10.0.0.100
dns-nameservers 10.0.0.100

Laisser un commentaire

Assemblé dans la station orbitale WordPress