Memo : Utiliser un Active Directory pour l'authentification de Spacewalk.

Procédure utilisée pour avoir Spacewalk utilisant PAM pour l’authentification des utilisateurs. Le serveur est joint au domaine AD avec Winbind et on utilise Kerberos pour gérer l’authentification.

Après avoir suivi nombre de docs, posts de mailing-list, tuto en tout genre pour mettre en place toute la chaine d’authentification sur un AD. Voici ce qui a été déployé chez nous pour que Spacewalk puisse utiliser les utilisateurs de l’AD.

Spacewalk ne dispose pas de composants ou plugin permettant cette authentification. Il délègue cette tâche à PAM, le module utilisé par tout Linux pour authentifier les utilisateurs. PAM se branche sur à peu près tout et n’importe quoi permettant d’authentifier et je vous renvoie à leur site pour en apprendre plus.

Pour se connecter à l’AD on utilisera Winbind, qui joindra le domaine et permet l’interrogation des informations stocké dans l’AD. Il faut savoir qu’AD n’est qu’une implémentation propriétaire de Windows de LDAP et Kerberos. Cela dit on configure d’un seul tenant les clients Samba, Kerberos et PAM grâce à l’outil de configuration de l’authentification redhat “authconfig-tui” (ou -gui si vous préférez la version graphique) :

Configuration de PAM

Installation du nécessaire :

# yum -y install samba-winbind samba-winbind-clients authconfig

Configuration :

# authconfig-tui
+------------------¦ Configuration de l'authentification +-------------------+
¦                                                                            ¦ 
¦  Informations utilisateur    Authentification                              ¦ 
¦  [*] Informations du cache   [ ] Utiliser des mots de passe MD5            ¦ 
¦  [ ] Utiliser LDAP           [*] Utiliser des mots de passe masqués        ¦ 
¦  [ ] Utiliser NIS            [ ] Utiliser l'authentification LDAP          ¦ 
¦  [ ] Utiliser IPAv2          [ ] Utiliser Kerberos                         ¦ 
¦  [*] Utiliser Winbind        [ ] Utiliser le lecteur d'empreinte digitale  ¦ 
¦                              [*] Utiliser l'authentification Winbind       ¦ 
¦                              [*] Une autorisation locale est suffisante    ¦ 
¦                                                                            ¦ 
¦             +---------+                          +---------+               ¦ 
¦             ¦ Annuler ¦                          ¦ Suivant ¦               ¦ 
¦             +---------+                          +---------+               ¦ 
¦                                                                            ¦ 
¦                                                                            ¦ 
+----------------------------------------------------------------------------+ 

Le cache pour ne pas toujours interroger le serveur AD et Cocher les choix correspondant à Winbind et cocher “Une autorisation locale est suffisante” pour ne pas avoir besoin d’un serveur tiers pour valider l’authentification. Laisser le reste en l’état et faire Suivant :

+----------------------¦ Paramètres Winbind +-----------------------+
¦                                                                   ¦ 
¦     Modèle de sécurité : (*) ads                                  ¦ 
¦                          ( ) domain                               ¦ 
¦                Domaine : Domain__________________________________ ¦ 
¦ Contrôleurs de domaine : pdc.domain.example______________________ ¦ 
¦               Zone ADS : Domain.example__________________________ ¦ 
¦        Modèle de shell : (*) /sbin/nologin                        ¦ 
¦                          ( ) /bin/sh                              ¦ 
¦                          ( ) /bin/bash                            ¦ 
¦                          ( ) /bin/tcsh                            ¦ 
¦                          ( ) /bin/zsh                             ¦ 
¦                                                                   ¦ 
¦    +-----------+        +--------------------+        +----+      ¦ 
¦    ¦ Précédent ¦        ¦ Joindre le domaine ¦        ¦ Ok ¦      ¦ 
¦    +-----------+        +--------------------+        +----+      ¦ 
¦                                                                   ¦ 
¦                                                                   ¦ 
+-------------------------------------------------------------------+ 

Domaine est le nom de domaine Netbios, Zone ADS est le nom de domaine DNS. Choississez un shell si vous voulez que l’utilisateur puisse se connecter à la console aussi ou /sbin/nologin dans le cas contraire.
Joindre le domaine est bugger, faites Ok.

Joindre le domaine

# /usr/bin/net ads join -U 
Enter administrateur's password:
Using short domain name -- DOMAINE
Joined 'host' to dns domain 'domaine.example'
DNS Update for host.domaine.example failed: ERROR_DNS_UPDATE_FAILED
DNS update failed!

Les erreurs à propos de la mise à jour DNS échouée n’est pas importante. Si le nom de votre serveur n’est pas résolu sur le réseau faites la mise à jour dans les DNS AD à la mano.

Tester que vous avez bien joins le domaine :

# wbinfo -t

Tester la récupération d’information depuis Winbind :

# wbinfo -u
checking the trust secret for domain DOMAINE via RPC calls succeeded
# getent passwd 
user:*:16777216:16777216::/home/DOMAINE/user:/sbin/nologin
# wbinfo -a %
plaintext password authentication succeeded
challenge/response password authentication succeeded

A présent votre système peut utiliser l’AD pour authentifier des utilisateurs. Désormais il suffit de brancher Spacewalk dessus. Pour cela, éditer le fichier de configuration /etc/rhn/rhn.conf et ajouter ou modifier le fichier pour avoir la ligne :

pam_auth_service = system-auth

La doc officielle de RedHat à ce propos utilise un autre fichier pam que je n’ai pas réussi à faire fonctionner mais vous pouvez l’utiliser si cela vous intéresse. Créer et éditer le fichier /etc/pam.d/rhn-satellite.conf :

auth        required      pam_env.so
auth        sufficient    pam_sss.so 
auth        required      pam_deny.so
account     sufficient    pam_sss.so
account     required      pam_deny.so

Modifier la configuration de Spacewalk pour avoir la ligne

pam_auth_service = rhn-satellite

Une fois la configuration de Spacewalk faites redémarrer-le :

# spacewalk-service restart

ou :

# rhn-satellite restart

Ensuite, pour chaque utilisateur de l’AD à se connecter à Spacewalk, créer un utilisateur et cocher la case Use PAM. Pour les utilisateurs existant si leurs identifiants correspondent à leurs identifiants AD, cocher simplement la case aussi.