Integration une distribution linux (Debian) dans un domaine Windows
Par Romain Tiennot le dimanche 15 juillet 2012, 21:35 - Linux - Lien permanent
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.
- 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
Il y a 33 commentaires
Ca marche.
Ca a été un petit peu laborieux (j'ai été trop vite) mais aprés avoir regardé les vidéos, fait un peu le ménage dans mes approbations de l'AD, cela c'est bien passé.
Un grand MERCI pour le tuto.
Heureux de vous avoir aidé !
Merci beaucoup
génial ton tuto j'ai peu faire des partage smb avec des droits en fonction de l’utilisateur du domaine.
l'administration système est un art
Heureux de t'avoir aidé !
bonjour
merci pour votre tuto, je retrouve bien ma machine linux sur mon AD.
Cependant je n'arrive pas à me loguer en tant qu'administrateur.
quand je fait :
login : MONDOMAINE\administrateur
password: ****
ça me met "login incorrect"
avez vous une idée d'ou cela peut venir ?
merci
Merci pour le tuto, mais je me posais une petite question quand même : pourquoi s'embêter à compiler ntp alors que le paquet de debian fonctionne très bien à priori ?
@sawyhe : essaie de retirer le nom de domaine.
Bonjour,
Tu as quelle version de NTP?
Romain
La version 4.2.6.p2 que j'ai installé.
J'ai rencontré des problèmes avec cette version. C'est pour cela que je l'ai mis à jour manuellement.
Romain
Oki, du coup peut être bien d'ajouter quelques précisions dans ton tuto, car si possible c'est quand même mieux d'installer les versions paquets.
Bon en tout cas merci encore pour le tuto !
Cdlt,
Bonjour,
Je viens de suivre votre tuto pour l’intégration d'une Debian 6.0.4 dans mon AD, tout fonctionne a merveille, super tuto bien détaillé !
Merci beaucoup !
Bonjour,
L'intégration dans le domaine s'est bien passé mais je ne trouve pas les fichiers common-account, common-auth et common-session dans /etc/pam.d
Il faut installer quelques choses ou d'autres fichiers ont la meme fonction?
Merci d'avance
Etrange
Avez-vous installer Winbind ? Quel distribution utilisez-vous ?
Romain
Bonjour,
super tuto, merci.
Mais j'ai quelques soucis dès l'étape 1 :
il me dit que le paquet krb5-user contient des dépandances non satisfaites.
et lors de l'install des paquets winbind, samba et smbclient il ne m'a demandé que le nom du domaine, pas d'ip.
Bonjour,
Merci pour le retour.
Que tu mettes le nom ou l'IP n'a pas d'importance. Fais juste attention a ton fichier resolv
Romain
Effectivement, tout a très bien fonctionné jusqu'au point 3. Ce qui est suffisant pour ce que je veux faire. N'ayant pas pu installer krb5-ser j'ai pas pu faire la suite.
Merci et bonne continuation.
Humm étrange. apt-get install krb5-user n'a pas fonctionné?
non. Il me dit que le paquet contient des dépendances non satisfaites (...)krb5-config n'est pas installable : paquet défectueux.
J'ai fait quelques recherches mais ca ne donne rien.
Je vais voir à rajouter ce paquet manuellement.
Slut.j'ai un sujet qui se porte sur l'authenification ldap+kerberos.jé tt installé et configuré les serveurs marche bien. mais c'est quand je veux tester qu'il y'a probleme.lorsque j tape la commande ldapsearch -I c'est ça qu'il m'affiche
SASL/GSSAPI authentication started
SASL Interaction
Please enter your authorization name:
quand j'entre un nom il m repond
ldap_sasl_interactive_bind_s: Invalid credentials (49)
est que vous pouvez m'aider?
et pr l'interconnexion de ldap et php jé pri votre tuto mais ça ne marche pas.
merci j'attend vos réponses
Bonjour,
A vrai dire, je n'ai jamais utilisé le ldapsearch. Si tu es patient (ce week-end) je me monterais un lab pour essayer.
Pour l'authentification LDAP, peux-tu m'envoyer ton code ? J'ai fais un article sur le SSO et Apache qui va peut etre t'interresser.
J'ai prévu de refaire un article sur le php-ldap.
Romain
Bonjour,
J'ai un prôblème à la commande "kinit administrateur@MONDOMAINE.LAN", j'ai le message d'erreur "kinit: Cannot resolve network address for KDC in realm "DOMAINE.LOCAL" while getting initial credentials".
Je ne comprend pas pourquoi.
Merci
Bonjour,
Regarde si tu ping ton contrôleur de domaine, ton domaine et vérifie l'heure.
Romain
Merci pour ce tuto.
J'aurais besoin de connaitre la manipulation pour accéder à un dossier partagé se nommant "Partage" situé dans mon disk D: dans mon AD. Cela à partir d'une ouverture de session sur mon serveur debian, qui fait parti maintenant de mon AD :))
Je souhaiterai que l'utilsateur membre de l'AD qui se log avec son ID et mdp puisse se positionner directement sur le dossier partagé.
Une chose que je n'arrive pas comprendre aussi ?. Pourquoi l'utilisateur membre de l'AD, quand il se connecte peut accéder au dossier de l'utilisateur (exemple:TOTO) créé lors de l'installation du serveur debian ?.
Ce répertoire n'est normalement pas accessible au membre de l'AD puisqu'il appartient à l'utilisateur "TOTO" qui a un compte sur le serveur debian et qui n'est pas membre de l'AD.
Merci de me répondre rapidement par mail.
Et encore merci d'avance.
Est-ce que je dois à chaque fois modifier les droits d'accès au répertoire de l'utilisateur qui à un compte sur le serveur debian ?. Pour que les membres de l'AD ne puissent y accéder.
J'aurais besoin de connaitre la manipulation pour accéder à un dossier partagé se nommant "Partage" situé dans mon disk D: dans mon AD. Cela à partir d'une ouverture de session sur mon serveur debian, qui fait parti maintenant de mon AD :))
mount -t cifs //MACHINEDISTANTE/partage /media/dossierpartage -o username=IDENTIFIANT
Tu peux le mettre en script de démarrage.
Je souhaiterai que l'utilsateur membre de l'AD qui se log avec son ID et mdp puisse se positionner directement sur le dossier partagé.
Il faut passer par le fichier de conf Samba et l'option "template homedir".
Exemple : template homedir = /media/dossierpartage/U%
Tu dois aussi mettre un droit lors de la création du répertoire du genre :
directory mask = XXX
Pour ne pas remonter dans l'arborescence, il existe ceci :
browseable = No
Romain
Une chose que je n'arrive pas comprendre aussi ?. Pourquoi l'utilisateur membre de l'AD, quand il se connecte peut accéder au dossier de l'utilisateur (exemple:TOTO) créé lors de l'installation du serveur debian ?.
Ce répertoire n'est normalement pas accessible au membre de l'AD puisqu'il appartient à l'utilisateur "TOTO" qui a un compte sur le serveur debian et qui n'est pas membre de l'AD.
Merci de me répondre rapidement par mail.
Et encore merci d'avance.
Est-ce que je dois à chaque fois modifier les droits d'accès au répertoire de l'utilisateur qui à un compte sur le serveur debian ?. Pour que les membres de l'AD ne puissent y accéder.
Bonjour Romain, J'ai essayé les 2 manips et 1 seule fonctionne en ajoutant une autre option pour la 1er ( il manque (password=) pour accompagné username.
La 2éme ne fonctionne pas du tout.
En ajoutant le (U%) il trouve pas le chemin du dossier (template homedir = /media/share/U%)
Et même je vois pas comment il pourrait y accéder puisqu'il faut systématiquement le id+mdp ???.
Une solution peut etre ???
Mon dossier sur AD s'appelle "Partage" et j'ai créer un dossier /media/"share" avec un mask 777. Help please.
De plus je ne souhaite pas qu'il y a des mdp de mon AD stocker sur un fichier sur mon serv debian.
Parfait !!
Merci pour le retour
Bonjour.
Merci pour ce tuto j'ai rien trouvé de mieux.
A tu la même chose pour le faire en yum (CentOS)
il me faudrait un petit coup de main. s'il te plais.
Seul toi peut me sauvé! lol
Encore et toujours MERCI.
Bonjour à toi,
tout d'abord un grand merci pour ton tuto qui est génial!
mais je rencontre un petit problème lors de l'ajout de la machine au domaine il me retourne le message suivant : failed to lookup dc info for domain 'LABO.COM' over rpc logon failure
aurais-tu une idée sur ce problème?
merci (et encore super ton tuto :D)
rebonjour à toi,
je viens de regler le problème cité ci dessus c'etait une erreur dans mon fichier smb.conf.
mais maintenant j'ai une autre erreur, un peu similaire, 'failed to lookup dc info for domain over rpc the network cannot be found'
j'ai vérifié du côté serveur si le service associé était démarré et il l'est bel et bien.
je sèche un peu sur le sujet..
merci encore chère Romain
Un GRAND Merci pour ce billet. Ton site est très bien conçu et m'a beaucoup aidé dans mes recherches
Pour info, intégration Samba/ADDS (ubuntu server 12.04 + w2k8 r2) du premier coup. A noter que je n'ai pas eu besoin de mettre à jour ntpdate pour la synchro NTP avec mon PDC. Je viens également de terminer ton billet sur DFSR avec succès (avec 2 server W2K8 R2) et la je vais tenter d'intégrer mon server samba pour la réplication avec mon PDC...
Magnificent website. A lot of useful info
here. I am sending it to some pals ans also sharing in delicious.
And naturally, thank you to your effort!
You really make it seem so easy with your presentation but I find this matter to
be really something that I think I would never understand. It seems too complicated and extremely broad for me.
I am looking forward for your next post, I'll try to get the hang of it!