Intégrer un Debian GNU/Linux dans une Active Directory grâce à Samba

Cette procédure va vous permettre d'intégrer votre serveur (ou poste de travail) Linux dans un Microsoft Windows Active Directory. Cela vous permettra, par exemple, d'autoriser vos utilisateurs à se connecter à notre serveur Linux via un partage Samba et de ne pas devoir gérer les utilisateurs.

Version de Debian

La procédure ci-dessous a été testée sur un Debian GNU/Linux version 6.0

Installation de Kerberos

Windows utilise Kerberos pour authentifier les ordinateurs qui sont intégrés dans l'AD. On va installer Kerberos afin que Samba puisse communiquer avec les ordinateurs de l'AD.

# apt-get install krb5-user

Royaume « realm » Kerberos version 5 par défaut : EXAMPLE.COM

Editez le fichier /etc/krb5.conf pour qu'il corresponde à ceci :

[libdefaults] 
        default_realm = EXAMPLE.COM 

[realms] 
        EXAMPLE.COM = { 
                kdc = serv01.example.com 
                admin_server = serv01.example.com 
} 

[domain_realm] 
        .example.com = EXAMPLE.COM 
        example.com = EXAMPLE.COM 

[login] 
        krb4_convert = true 
        krb4_get_tickets = false 

Maintenant, on va établir une connexion Kerberos pour tester la configuration:

# kinit Administrateur@EXAMPLE.COM

Remarque : Bien respecter les majuscules sur le nom de domaine.

Si tout va bien, il doit vous rendre la main. De plus, avec la commande suivante, on doit avoir un ticket Kerberos:

# klist

Résultat de la commande:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrateur@EXAMPLE.COME 

Valid starting     Expires            Service principal 
07/12/11 11:36:14  07/12/11 21:36:17  krbtgt/EXAMPLE.COM@EXAMPLE.COM 
renew until 07/13/11 11:36:14

Installation de Samba

# apt-get install samba winbind

Nom de domaine ou de groupe de travail : EXAMPLE

Editez le fichier /etc/samba/smb.conf pour qu'il corresponde à ceci :

[global] 
   workgroup = EXAMPLE
   server string = %h server 
   dns proxy = no 

   log file = /var/log/samba/log.%m 
   max log size = 1000 
   syslog = 0 
   panic action = /usr/share/samba/panic-action %d 

   security = ADS 
   realm = EXAMPLE.COM 
   password server = serv01.example.com
   winbind separator = \\ 
   client use spnego = yes 
   winbind use default domain = yes 
   domain master = no 
   local master = no 
   preferred master = no 
   winbind enum groups = yes 
   winbind enum users = yes 
   winbind use default domain = no 
   idmap uid = 10000-20000 
   idmap gid = 10000-20000 
   template shell = /bin/bash 
   encrypt passwords = true 
   passdb backend = tdbsam 
   obey pam restrictions = yes 
   unix password sync = yes 
   pam password change = yes

On redémarre Samba pour la prise en compte

# invoke-rc.d samba restart

Intégration du serveur dans l'AD

On va maintenant intégrer le serveur dans l'AD:

# net ads join -U Administrateur

Saisir le mot de passe du compte Administrateur.

Si tout va bien, on doit avoir le message suivant: Joined 'NAME' to realm 'example.com'

De même, sur le contrôleur AD, avec l'outil Utilisateurs et Ordinateurs Active Directory, on doit voir le serveur.

Winbind

Tout d'abord, on relance winbind:

# invoke-rc.d winbind restart

On va vérifier que Winbind est capable d'interroger la liste des utilisateurs et des groupes de l'AD.

# wbinfo -u # ''liste des utilisateurs''

# wbinfo -g   # ''liste des groupes''

PAM

On va paramétrer le système de contrôle PAM pour qu'il recherche d'autres comptes sur le système winbind.

# vim /etc/nsswitch.conf

Ajouter l'option winbind uniquement aux 2 lignes suivantes:

passwd:         compat winbind
group:          compat winbind

Pour vérifier la bonne configuration, on va utiliser les 2 commandes suivantes :

# getent passwd

# getent group

On doit voir des comptes de l'AD.

Conclusion

Sous Debian 6.0, le système PAM est déjà configuré.

Il est maintenant possible de se connecter au serveur en utilisant le nom d'utilisateur EXAMPLE\\username et son mot de passe.

Pour créer automatiquement le répertoire home de l'utilisateur, ajouter la ligne suivante au fichier /etc/pam.d/common-session

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022