MAJ 15/07/2012

J'ai utilisé mon article pour intégrer une Debian 6.0.5 dans un domaine Windows 2008 R2 et je n'ai eu aucun soucis. J'ai mis à jour l'article pour la nouvelle version de NTP et corrigé une ou deux coquilles.

----------------------------------------------------------------------------------------

Cette article a pour but d'intégrer une distribution linux (dans mon cas une Debian) dans un domaine Windows afin de profiter à l'annuaire LDAP. Les avantages d'avoir une authentification LDAP sont :

  • Créer des partages Samba avec des droits par groupe ou utilisateur.
  • Donner accès ou non au service FTP.
  • Authentification LDAP en PHP via LAMP.
  1. Installation des paquets

Avant tous, il faut mettre à jours la distribution. Pour cela, nous devons mettre à jour la liste des paquets disponible dans notre fichier sources.list "/etc/apt/sources.list"

apt-get update

Une fois la liste des paquets mise à jour, nous devons installer les nouvelles versions des paquets :

apt-get upgrade

Maintenant, nous allons installer les paquets pour l’intégration du Debian dans le domaine Windows. Pour cela, nous avons besoin :

  • "gcc" et "make" pour l'installation de la version 4.2.6p5 de ntpdate qui n'est pas disponible via apt-get install. Seul la version 4.2.6p2 est disponible mais bugé pour ma part.
  • "winbind", "samba", "smbclient", "krb5-user" pour la configuration de la distribution avant l'intégration du domaine.
apt-get install winbind samba smbclient make krb5-user gcc

Durant l'installation des paquets, il faudra indiquer le nom de domaine et l'ip ou le nom du contrôleur de domaine primaire.

2. Configuration de NTPDATE 4.2.6p5 

L'installation terminée, nous allons installer la bonne version de "ntpdate". Il va nous servir à synchroniser l'heure avec le même serveur de temps que le contrôleur de domaine pour que les tickets kerberos n'expire pas. Nous devons télécharger le paquet directement sur le site grâce à la commande "wget" :

wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz

Ensuite décompresser le paquet :

tar xvf ntp-4.2.6p5.tar.gz
cd ntp-4.2.6p5.tar.gz

Nous allons préparer l'installation du paquet :

./configure

Attendre la fin de la préparation puis exécuter :

make

Puis débuter l'installation :

make install

Le paquet est correctement installé. Le service se trouve dans "/usr/local/bin/ntpdate". Pour mettre à jours la distribution, deux méthodes :

  • Manuellement :
/usr/local/bin/ntpdate IP_DU_SERVEUR_NTP
  • Automatique via crontab ;

Editer le fichier cron :

crontab -e

Saisir à la fin du fichier : (Par exemple, pour synchroniser toute les 5 minutes) :

*/5 * * * * /usr/local/bin/ntpdate IP_DU_SERVEUR_NTP

Pour synchroniser à chaque démarrage :

@reboot  /usr/local/bin/ntpdate IP_DU_SERVEUR_NTP

Pour quitter et enregistre, "ALT+X", valider avec "o" puis "entrer" pour valider le nom du fichier.

3. Configuration de Samba

La configuration de Samba se fait via le fichier "/etc/samba/smb.conf". Avant tous, nous allons exporter la configuration actuelle :

cp /etc/samba/smb.conf /etc/samba/smb.conf.old

Ensuite modifier le fichier avec l’éditeur de votre choix (nano, vim). Par habitude, j'utilise "vi" :

vi /etc/samba/smb.conf

Nous allons modifier d'abord la partie nommée global en indiquant les informations (nom de domaine, IP du contrôleur de domaine) :

[global]
server string = debian #nom du serveur linux
netbios name = debian # nom du serveur linux
security = ads
realm = DRINKEVOL.LAN # nom du domaine en majuscule
password server = 172.16.0.254 # ip du controleur de domaine principal
workgroup = drinkevol # nom du domaine en minuscule sans le tld
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
template homedir = /data/commun # chemin par defaut des futur utilisateur
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
winbind use default domain = yes
restrict anonymous = 2

Seule cette partie est essentielle pour l'intégration du domaine. Pour la configuration des partages, ça sera dans un autre article ;). Nous allons redémarrer "Winbind" et "Samba" pour qu'ils prennent en compte le fichier de conf fraichement modifier :

invoke-rc.d samba restart
invoke-rc.d winbind restart

4. Intégration dans le domaine

Nous allons envoyer un ticket Kerberos. S'il nous envoi aucun message d'erreur, c'est que nous avons bien configuré notre serveur de temps et notre Samba :

kinit administrateur@DRINKEVOL.LAN
(kinit compte_admin_du_domaine@NOM_DU_DOMAINE_EN MAJUSCULE)

Maintenant, l’intégration dans le domaine :

net ads join -S evok3srv1.drinkevol.lan -U Administrateur
(net ads join -S serveur_controleur_de_domaine_principal -U compte_admin_du_domaine)

Clapo, Clapo !!! Votre distribution fait partie de votre domaine Windows.

5. Terminer la configuration

Nous allons interroger l'annuaire LDAP par utilisateur :

wbinfo -u

Par groupe :

wbinfo -g

Nous devons modifier quatre fichier pour indiquer à la distribution d'interroger le LDAP lorsqu'il reçoit une demande d'authentification. Le premier, "/etc/nsswitch.conf" :

vi /etc/nsswitch.conf
passwd:         compat winbind
group:          compat winbind
shadow:         compat
 
hosts:          files dns
networks:       files
 
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
 
netgroup:       nis

Le second "/etc/pam.d/common-account" :

vi /etc/pam.d/common-account
account sufficient	pam_winbind.so
account	required	pam_unix.so

Le troisième "/etc/pam.d/common-auth" :

vi /etc/pam.d/common-auth
auth	sufficient	pam_winbind.so krb5_auth krb5_ccache_type=FILE
auth	sufficient	pam_unix.so nullok_secure use_first_pass
auth	required	pam_deny.so

Puis le dernier "/etc/pam.d/common-session" :

vi /etc/pam.d/common-session
session	required	pam_unix.so
session required	pam_mkhomedir.so umask=0022 skel=/etc/skel

Un petit redémarrage de service :

invoke-rc.d winbind restart
invoke-rc.d samba restart

Il ne reste plus qu'a essayé de vous connecter avec un compte de l'active directory :

utilisateur : domaine\utilisateur
mot de passe : mot_de_passe_du_domaine

A bientôt :)