[[tutoriel:comment_ajouter_machine_ubuntu_dans_domaine_active_directory]]
Piste: » comment_ajouter_machine_ubuntu_dans_domaine_active_directory
Comment ajouter une machine Ubuntu dans un domaine Active Directory ?
Logiciels utilisés
| Nom | Version |
|---|---|
| Microsoft Windows Server | 2003 SP1 ou supérieur |
| Linux | Ubuntu 6.06 ou supérieur |
| Winbind | 3.0.22-Ubuntu ou supérieur |
| Samba | 3.0.22-Ubuntu ou supérieur |
| krb5-user | Krb5-1.4.3 ou supérieur |
Termes employés
| Terme | Signification |
|---|---|
| 10.0.0.1 | Adresse IP du CD |
| 10.0.0.2 | Adresse IP du serveur de temps |
| 10.0.0.3 | Adresse IP du serveur Kerberos |
| AD | Active Directory |
| Administrateur | Utilisateur du domaine ayant des droits administrateur |
| CD (DC plus comunément) | Contrôleur de domaine |
| FQDN | Nom de domaine pleinement qualifié (Fully Qualified Domain Name) |
| MaMachine | Nom de machine de la station Ubuntu |
| MaMachine.MonDomaine | FQDN de la station Ubuntu |
| MonDomaine | Domaine AD |
| MONDOMAINE | Royaume Kerberos |
| NTP | Protocole de temps réseau (Network Time Protocol) |
| PAM | modules d'authentification enfichables (Pluggable Authentication Modules) |
| ServeurCD.MonDomaine | FQDN du contrôleur de domaine |
| ServeurKRB.MonDomaine | FQDN du serveur Kerberos |
| ServeurNTP.MonDomaine | FQDN du serveur de temps |
| Utilisateur | Utilisateur du domaine |
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é
Un FQDN est essentiel afin de faire fonctionner Kerberos. Dans « /etc/hosts » :
127.0.0.1 localhost.localdomain localhost MaMachine
Configurer Kerberos
Programmes requis
Installez le paquet 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@MONDOMAINE Password for Utilisateur@MONDOMAINE: ****
Dans certain cas plusieurs erreurs peuvent apparaitre :
kinit(v5): KDC has no support for encryption type while getting initial credentials
Il faut « rafraichir » votre mot de passe administrateur. Modifiez-le depuis votre contrôleur de domaine. Changez-le ou remettez le même, l'important est de forcer une mise à jour pour le mot de passe de ce compte.
kinit(v5): Clock skew too great while getting initial credentials
Il y a un décalage trop important (> 5min) entre l'heure de la machine et celle du CD. La communication est de ce fait impossible. Réglage de l'heure
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 (C'est la partie à vérifier)
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. Les paquets à installer sont winbind et 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
# empêche le client de devenir maitre explorateur
domain master = no
local master = no
preferred master = no
os level = 0
On redémarre le service pour prendre en compte les nouveaux paramètres.
sudo /etc/init.d/samba restart
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é (si lors de votre demande ticket kerberos vous vous être connecté en administrateur). Si non, le mot de passe administrateur vous sera demandé.
Redémarrer Winbind
sudo /etc/init.d/winbind restartSouvent, winbind est démarré automatiquement après l'installation. Il convient donc de le redémarrer pour prendre en compte les modifications apportées à la configuration de SaMBa. S'il n'avait pas été démarré, Linux n'arrivera pas à l'arrêter, mais le démarrera tout simplement !
Test
Pour obtenir une liste des utilisateurs du domaine :
wbinfo -u
Et une liste des groupes :
wbinfo -g
Configurer l'authentification
Le fichier « nsswitch.conf »
Dans « /etc/nsswitch.conf » :
passwd: compat winbind group: compat winbind shadow: compat hosts: files dns networks: files dns services: db files protocols: db files rpc: db files ethers: db files netmasks: files netgroup: files bootparams: files automount: files aliases: 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 pam_winbind.so account sufficient pam_unix.so
Dans « /etc/pam.d/common-auth » :
auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass auth required pam_deny.so
Dans « /etc/pam.d/common-session » :
session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel
umask=0000
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:~$
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 restart
Utiliser le compte utilisateur AD en mode hors connexion
Pour que le compte utilisateur puisse se connecter sans accéder à l'Active Directory. Par exemple, pour un utilisateur nomade qui se connecte en dehors des locaux de l'entreprise. Il faut effectuer les modifications suivantes
Ajouter la ligne suivante dans le fichier smb.conf
winbind offline logon = yes
Créer ou modifier le fichier /etc/security/pam_winbind.conf
# # Fichier de configuration pam_winbind # # /etc/security/pam_winbind.conf # [global] # (nécessite "winbind offline logon = yes" dans smb.conf) cached_login = yes
Il faut ouvrir une session en étant connecté à l'active directory pour charger le cache. La connexion sans l'active directory est possible ensuite.
Contributeurs : OStaquet, Floriang|bob philomene.