FLASH INFORMATIQUE FI



Authentification des utilisateurs Linux sur un serveur Windows




Paulo DE JESUS


Contexte

L’authentification d’utilisateurs Linux sur Active Directory, en utilisant Kerberos.

La théorie

Kerberos

C’est un protocole d’authentification en réseau conçu pour fournir une authentification solide pour des applications client/serveur en utilisant la cryptographie. Microsoft utilise le protocole d’authentification centralisé Kerberos V5 dont une version Open source est disponible pour Linux sous le nom krb5.

Démarrage

Sous Linux, après avoir configuré le client krb5 via le fichier /etc/krb5.conf, on adresse une requête d’authentification à un server KDC (Key Distribution Center) avec la commande kinit username@domain ; on obtient un ticket et par la commande :

smbclient //serveur_w2k/dossier_partagé -k

on teste la validité du ticket obtenu. Il est à noter que Windows utilise le protocole propriétaire de Microsoft smb pour communiquer entre les postes Windows dont une version libre de smb a été développé sous le nom Samba. La version 3 permet d’utiliser les mécanismes d’authentification Kerberos avec l’implémentation de l’Api GSS-API (Generic Security Services Application Program Interface).
Maintenant, l’utilisateur Linux, muni de son ticket valable, peut accéder à des fichiers partagés de façon transparente comme s’il était sur une machine Windows. À ce point, on parle encore d’un utilisateur qui se connecte sur une machine Linux en utilisant son compte local.
Il faut encore que le poste Linux puisse authentifier l’utilisateur en utilisant son compte sur un serveur central, un serveur Windows dans notre cas.
C’est là qu’entre en action la couche pam (Pluggable Authentication Module) qui est une couche d’authentification supplémentaire disponible sur les systèmes Linux. Chaque service compilé avec les libraires Pam peut déléguer l’authentification à la couche pam et dans notre cas au module pam_krb5 .
Au démarrage, le service responsable de l’authentification sur Linux transmet l’ordre à pam, qui lui, essaye d’obtenir un ticket TGT (Ticket Granting Ticket) auprès du serveur.
Après avoir reçu le TGT la couche pam effectue une requête auprès du TGS (Ticket Granting Service) pour obtenir un ticket pour Active Directory. Le serveur TGS vérifie les droits de l’utilisateur et transmet le ticket à Active Directory. Le module pam utilise le module ldap pour confirmer l’existence de l’utilisateur dans AD et, si c’est le cas, l’utilisateur est authentifié et peut accéder au réseau, monter son répertoire personnel, etc .

Les modules nécessaires

  • le client kerberos
  • les modules pam_krb5, pam_ldap, pam_mkhomedir et éventuellement pam_automount
  • Samba 3
  • OpenLdap

Les fichiers à modifier

(pour simplifier, je donne le vrai nom des serveurs utilisés)

        /etc/krb5.conf
        /etc/pam.d/system-auth
        /etc/samba/smb.conf

krb5.conf :

[libdefaults]
        default_realname = ENAC.INTRANET.EPFL.CH
        dns_lookup_realm = true
        dns_lookup_kdc = true
[realms]
                ENAC.INTRANET.EPFL.CH = {
                Kdc = enacdc3.epfl.ch
                default_domain = enac.intranet.epfl.ch
        }       
[domain_realm]
                .enac.intranet.epfl.ch = ENAC.INTRANET.EPFL.CH
                        enac.intranet.epfl.ch = ENAC.INTRANET.EPFL.CH

system-auth

ce qu’il faut ajouter

#%PAM-1.0
auth    sufficient  /lib/security/$ISA/pam_krb5.so use_first_pass

account   required   /lib/security/$ISA/pam_unix.so broken_shadow
account   [default=bad success=ok user_unknown=ignore] /lib/security/$ISA/pam_krb5.so
password  sufficient  /lib/security/$ISA/pam_krb5.so use_authtok
session   optional   /lib/security/$ISA/pam_krb5.so
session   optional   /lib/security/$ISA/pam_mkhomedir.so skel=/etc/skel umask=027

Pour que les utilisateurs Windows puissent accéder aux partages sur les machines Linux, on doit créer un compte machine dans Active Directory avec la commande :

NET RPC join ENAC -U utilisateur.

(l’utilisateur doit avoir les droits nécessaires pour créer un compte machine dans le domaine)

smb.conf

# smb.conf
[global]

# realm = Kerberos realm
 realm = ENAC.INTRANET.EPFL.CH
# workgroup = NT-Domain-Name or Workgroup-Name
 workgroup = ENAC
# Security mode
 security = ADS
# Use password server option only with security = server
 password server = *
# Password encryption
 encrypt passwords = yes

Une fois l’authentification acceptée, la machine Linux a un compte dans le domaine et les utilisateur Windows peuvent accéder aux partages sur les machines Linux en utilisant le ticket donné par AD.
Pour cette partie de la configuration de samba, je conseille la lecture de l’excellent article de Xavier Barmaz paru dans le FI5/04, http://dit.epfl.ch/publications-spip/article.php3?id_article=553.

Conclusion

On montre encore une fois l’ouverture et la puissance d’un système ouvert comme Linux.
Dans un contexte 100% Windows c’est une solution confortable d’intégration des postes Linux. Toutefois, dans notre contexte universitaire multi-plateforme, il serait préférable de s’appuyer plutôt sur un annuaire ldap que de dépendre de systèmes propriétaires.

A lire

  • Linux in a Windows World, Roderick W. Smith, O’Reilly 1st Edition 02.05 , ISBN : 0-596-00758-2

Note

La distribution utilisée pour les tests a été Fedora (Core 3). Les chemins d’accès aux fichiers à configurer et les paquetages installés peuvent donc être différents selon les distributions.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.