Comment ajouter une machine Linux dans un domaine Active Directory? Logiciels utilisés Nom Version Microsoft Windows Server 2003 SP1 Linux Debian Etch Winbind 3.0.22 Samba 3.0.22- krb5-user Krb5-1.4.3 Termes employés Terme Signification AD Active Directory CD Contrôleur de Domaine ServeurCD.MonDomaine FQDN du Contrôleur de Domaine 10.0.0.1 IP du CD NTP Network Time Protocol (Protocole de Temps Réseau) ServeurNTP.MonDomaine FQDN du serveur de temps 10.0.0.2 IP du serveur de temps ServeurKRB.MonDomaine FQDN du serveur Kerberos 10.0.0.3 IP du serveur Kerberos FQDN Nom de Domaine Pleinement Qualifié (Fully Qualified Domain Name) MonDomaine Domaine Active Directory MONDOMAINE Royaume Kerberos MaMachine nom de machine de la station Ubuntu MaMachine.MonDomaine FQDN de la station Ubuntu Utilisateur utilisateur du domaine Administrateur utilisateur du domaine ayant des droits administrateur
Réglage de l'heure Le temps est essentiel pour Kerberos. Le meilleur moyen de s'affranchir de cela est d'utiliser un serveur NTP (Network Time Protocol). Dans /etc/default/ntpdate : # serveur source à vérifier NTPSERVERS="ServeurNTP.MonDomaine" # options supplémentaires pour ntpdate NTPOPTIONS="-u" /etc/network/if-up.d/ntpdate Nom de Domaine Pleinement Qualifié (FQDN) Un FQDN est essentiel afin de faire fonctionner Kerberos. Dans /etc/hosts : 127.0.0.1 localhost.localdomain localhost MaMachine Configurer Kerberos Programmes requis Il faut décommenter les urls dans le fichier /etc/apt/sources.list : sudo apt-get update sudo apt-get install krb5-user La configuration de Kerberos (/etc/krb5.conf) n'est pas nécessaire, si les enregistrements du service DNS sont correctement configurés pour Kerberos. Fichier /etc/krb5.conf : [logging] default = FILE10000:/var/log/krb5lib.log [libdefaults] ticket_lifetime = 24000 default_realm = MONDOMAINE default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc [realms] MONDOMAINE = { kdc = ServeurKRB.MonDomaine admin_server = ServeurCD.MonDomaine default_domain = MONDOMAINE } [domain_realm].mondomaine = MONDOMAINE MonDomaine = MONDOMAINE
Test Demander un TGT (Ticket-Granting Ticket, il n'est pas nécessaire d'être administrateur, chaque compte valide du domaine peut être utilisé) : sudo kinit Utilisateur Password for Utilisateur@MONDOMAINE: **** Vérification de la validité du ticket sudo klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Utilisateur@MONDOMAINE Valid starting Expires Service principal 01/21/05 10:28:51 01/21/05 20:27:43 krbtgt/mondomaine@mondomaine renew until 01/21/05 20:28:51 Joindre un domaine AD Programme requis Pour vous connecter à Windows 2003 SP1, la version 3.0.14a de Winbind est nécessaire. sudo apt-get install winbind samba Joindre le domaine Dans /etc/samba/smb.conf : [global] security = ads realm = MONDOMAINE password server = ServeurCD.MonDomaine workgroup = MONDOMAINE winbind separator = + idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/%d/%u template shell = /bin/bash client use spnego = yes winbind use default domain = yes Effectuer une requête de TGT Kerberos valide, ce dernier étant autorisé à joindre des machines au domaine AD. sudo net join -U Administrateur -S ServeurCD.MonDomaine Using short domain name MONDOMAINE Joined 'MaMachine' to realm 'MONDOMAINE' Si l'authentification Kerberos est valide, aucun mot de passe ne doit vous être demandé.
Test Pour obtenir une liste des utilisateurs du domaine : wbinfo -u Et une liste des groupes : wbinfo -g Configurer l'authentification nsswitch.conf Dans /etc/nsswitch.conf : passwd: compat winbind group: compat winbind shadow: compat hosts: networks: files dns files dns services: db files protocols: db files rpc: db files ethers: db files netmasks: files netgroup: files bootparams: files automount: aliases: files files Test Tester le module nsswitch Winbind à l'aide de getent : sudo getent passwd root:x:0:0:root:/root:/bin/bash LAB+administrator:x:10000:10000:Administrator:/home/LAB/administrator:/bin/bash LAB+gast:x:10001:10001:Gast:/home/LAB/gast:/bin/bash sudo getent group root:x:0: daemon:x:1: bin:x:2: LAB+organisations-admins:x:10005:administrator LAB+domänen-admins:x:10006:manuel,administrator LAB+domänen-benutzer:x:10000: LAB+domänen-gäste:x:10001: LAB+linux-admins:x:10004:manuel
PAM Avec cette configuration, vous pouvez accéder à la machine à l'aide d'un compte local ou un compte du domaine. À la première connexion d'un utilisateur, un répertoire home sera créé. Dans /etc/pam.d/common-account : account sufficient account sufficient pam_winbind.so pam_unix.so Dans /etc/pam.d/common-auth : auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass Dans /etc/pam.d/common-session : session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel Dans /etc/pam.d/sudo : auth sufficient pam_winbind.so auth required pam_unix.so use_first_pass Configuration finale Chaque domaine a besoin d'un répertoire dans /home/ : sudo mkdir /home/mondomaine Mais il faut attribuer des droits au dossier : sudo chmod 777 /home/mondomaine Utilisation Connexion avec [Domain] [Winbind separator] [Nom_d_utilisateur] : login: Utilisateur Password: ***** Pour obtenir : Utilisateur@MaMachine:~$ Astuce En ajoutant le paramètre winbind use default domain = yes dans la configuration de Samba, il n'est plus nécessaire de spécifier le domaine lors de la connexion sur le domaine par défaut.
Résolution de problème Si le module PAM Winbind dans /var/log/auth.log dit que l'utilisateur AD n'existe pas, redémarrez Winbind. Il serait probablement préférable de redémarrer complètement la station si on était sous Windows, mais comme on est sous GNU/Linux, c'est inutile. sudo /etc/init.d/winbind start