Authentification de comptes Solaris sur un Active Directory

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Mise en place d’une authentification sur Solaris à partir d’un Active Directory (AD).

Ce que permet cette mise en place pour la gestion des utilisateurs sur une machine :

  • les comptes solaris sont à créer avec un identifiant identique à celui de l’AD, avec un espace disque.
  • la vérification du mot de passe se fait via l’AD.

Ce document s’appuie sur un scénario de mise en place de ce type d’authentification sur une Solaris 9.

Les concepts décrits ici s’appliquent à tous les systèmes d’exploitation UNIX prenant en charge le protocole Kerberos version 5.

Environnement :

  • serveur_ad.domaine.fr est le serveur Active Directory,
  • domaine.fr est le domaine géré par serveur_ad.

2 Prérequis

Les prérequis :

  • Kerberos version 5 (dans le produit Sun Enterprise Authentication Mechanism (SEAM) 1.0.1),
  • s’assurer que le DNS est bien configuré sur le domaine qui est géré par l’Active Directory,
  • s’assurer que la date est bien synchrone avec le serveur AD (ntpdate).

3 Configuration

Les fichiers à configurer pour permettre une authentification sur la station solaris via l’AD sont :

  • /etc/pam.conf pour indiquer que Kerberos doit être utilisé pour l’authentification,
  • /etc/krb5/krb5.conf pour l’utilisation du KDC (Key Distribution Center) du domaine de l’AD.

3.1 krb5.conf

Nouveau fichier de configuration /etc/krb5/krb5.conf :

  # Configuration de PAM
  # Le 13/03/2007 - Yann Le Thieis
  #
  # Authentification
  #
  other   auth sufficient         pam_krb5.so.1
  other   auth sufficient         pam_unix.so.1 try_first_pass
  #
  # Password
  #
  other   password sufficient     pam_krb5.so.1
  other   password sufficient     pam_unix.so.1
  #
  # Account
  #
  other   account optional        pam_krb5.so.1
  other   account optional        pam_unix.so.1
  #
  # Session
  #
  other   session optional        pam_krb5.so.1
  other   session optional        pam_unix.so.1

3.2 pam.conf

Tout d’abords sauvegarde de la version originale de krb5.conf :

bash-2.05# cp -p /etc/krb5/krb5.conf /etc/krb5/krb5.conf.old

La configuration :

  # krb5.conf configuration pour le domaine domaine.fr
  # Le 13/03/2007 par Yann Le Thieis
  #
  [libdefaults]
          default_realm = DOMAINE.FR
          verify_ap_req_nofail = false
 
  [realms]
          domaine.fr = {
                  kdc = serveur_ad.domaine.fr:88
                  admin_server = serveur_ad.domaine.fr:749
                  default_domain = domaine.fr
          }
 
  [domain_realm]
          .domaine.fr = DOMAINE.FR
          domaine.fr = DOMAINE.FR
 
  [logging]
          default = FILE:/var/krb5/kdc.log
          kdc = FILE:/var/krb5/kdc.log
          kdc_rotate = {
 
  # How often to rotate kdc.log. Logs will get rotated no more
  # often than the period, and less often if the KDC is not used
  # frequently.
 
                  period = 1d
 
  # how many versions of kdc.log to keep around (kdc.log.0, kdc.log.1, ...)
 
                  versions = 10
          }
 
  [appdefaults]
          kinit = {
                  renewable = true
                  forwardable= true
          }
          gkadmin = {
                  help_url = http://docs.sun.com:80/ab2/coll.384.1/SEAM/@AB2PageView/1195
          }

La ligne “verify_ap_req_nofail = false” est extrèmement importante si le fichier /etc/krb5/krb5.keytab n’est pas renseigné avec une ligne pour votre domaine (enfin une clé qui valide le KDC, voir le manuel man krb5.conf).

4 Essai de cette configuration

Le compte de l’AD qui est utilisé pour le test est ylethieis, qui n’existe pas sur le poste solaris en local. Mais dans un premier temps, essai avec un compte bidon qui n’existe nulle part.

bash-2.05# kinit bidon
Mot de passe de [email protected] :
kinit: Client introuvable dans la base de données Kerberos lors de l'obtention des références initiales
bash-2.05#

remarque: kinit – obtain and cache Kerberos ticket-granting ticket.

Essai avec le compte ylethieis mais en entrant un mauvais mot de passe :

bash-2.05# kinit ylethieis
Mot de passe de [email protected] :
kinit: La pré-authentification a échoué lors de l'obtention des références initiales
bash-2.05#

Essai avec le compte ylethieis et le bon mot de passe pour l’AD :

bash-2.05# kinit ylethieis
Mot de passe de [email protected] :
bash-2.05#

Le service client de Kerberos sur la machine solaris interroge correctement l’AD.

Les tickets en cache :

bash-2.05# klist
Cache ticket : /tmp/krb5cc_0
Personne par défaut : [email protected]

Valide à partir de                               expire        principal de service
mardi 13 mars 2007, 11:03:14 GMT  mardi 13 mars 2007, 21:03:14 GMT  krbtgt/[email protected]
       renouvellement jusqu'à mardi 13 mars 2007, 21:03:14 GMT

5 Création d’un environnement de comptes AD sur la machine solaris

Création de l’espace des comptes authentifiés via l’AD, et d’un groupe utilisateur ad afin de les distinguer des autres (non obligatoire!) :

bash-2.05# mkdir /export/home/ad
bash-2.05# groupadd ad

Ajout d’un compte ylethieis :

bash-2.05# useradd -g ad -m -d /export/home/ylethieis ylethieis
UX: useradd: ylethieis name too long.
64 blocs

Ce compte a pour groupe principal le groupe ad.

Le nom de login est indiqué comme trop long mais le compte a bien été créé!

A cette étape, sur le système Solaris, l’utilisateur ylethieis :

  • n’a pas de mot de passe,
  • a pour groupe principal ad,
  • est juste renseigné dans /etc/passwd.

Connexion au système Solaris avec le compte ylethieis :

[email protected]:~$ telnet serveur_solaris
Trying 192.168.0.120...
Connected to 192.168.0.120.
Escape character is '^]'.

SunOS 5.9

login: ylethieis
Enter Kerberos password for ylethieis:
Last login: Tue Mar 13 14:27:52 from yuluth
Sun Microsystems Inc.   SunOS 5.9       Generic January 2003
$

Nous pouvons constater que l’authentification via l’Active Directory a réussi sur le compte ylethieis.