Ceci est une ancienne révision du document !



Comment ajouter une machine Ubuntu dans un domaine Active Directory ?

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
10.0.0.3 Adresse IP du serveur Kerberos
Terme Signification
AD Active Directory
Administrateur Utilisateur du domaine ayant des droits administrateur
CD (DC plus communément) Contrôleur de domaine
FQDN Nom de domaine pleinement qualifié (Fully Qualified Domain Name)
SLINUX3001 Nom de machine de la station Ubuntu
SLINUX3001.DHYDRONIC.DCIAT.FR FQDN de la station Ubuntu
DHYDRONIC.DCIAT.FR Domaine AD
DHYDRONIC 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
172.20.20.20 Adresse IP du contrôleur de domaine
10.0.0.2 Adresse IP du serveur de temps

Le temps est essentiel pour Kerberos. Le meilleur moyen de s'affranchir de cela est d'utiliser un serveur de temps (serveur NTP). On utilise donc un client NTP, ntpdate étant installé par défaut. Vérifier les informations suivantes dans le fichier « /etc/default/ntpdate » :

# serveur source à vérifier
NTPSERVERS="ServeurNTP.MonDomaine"
# options supplémentaires pour ntpdate
NTPOPTIONS="-u"

Pour synchroniser l'heure :

sudo /usr/sbin/ntpdate-debian

Comme tout horloge, il y aura des dérives au fil du temps. Il faut donc synchroniser régulièrement l'heure ! On peut mettre la commande précédente dans une tâche cron qui s'exécutera tous les jours à minuit. Pour cela éditez la crontab de l'utilisateur root :

sudo crontab -e

et insérez

# m h  dom mon dow   command

# SYNCHRO NTP
00 00   *   *   *   /usr/sbin/ntpdate-debian

Remarque : par défaut, le client ntpdate se lance avec comme paramètre le serveur sur lequel synchroniser exemple : ntpdate serveur.mondomaine.tld. Dans l'exemple plus ci-dessus, on utilise ntpdate-debian qui est clone de ntpdate mais à la sauce debian : il n'y a pas de paramètre mais on passe par un fichier de configuration (/etc/defaut/ntpdate).

Un FQDN est essentiel afin de faire fonctionner Kerberos. Dans « /etc/hosts » :

127.0.0.1 localhost.localdomain localhost slinux3001

Programmes requis

Installez le paquet krb5-user.

Configurer Kerberos (via le fichier « /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é, le nom de domaine doit être en majuscules) :

sudo kinit Utilisateur@MONDOMAINE
Password for Utilisateur@MONDOMAINE: ****

Dans certains 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

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é.

Si vous recevez une erreur du genre:

Failed to join domain: failed to find DC for domain mondomaine.LOCAL

Avahi-deamon est probablement la cause du problème. Pour le désactiver veuillez inscrire la commande ci-dessous.

sudo update-rc.d -f avahi-daemon remove

Redémarrer Winbind

sudo /etc/init.d/winbind restart

Souvent, 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é, Ubuntu 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

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

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
Si vous voulez que les utilisateurs n'aient pas le droit d'écrire dans le répertoire qui leur sera assigné, mettre :
umask=0000

Dans « /etc/pam.d/sudo » :

auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass

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

Connexion avec [Domain] [Winbind separator] [Nom_d_utilisateur] :

login: Utilisateur
Password: *****
...

Pour obtenir :

Utilisateur@MaMachine:~$
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.

Si le module PAM Winbind dans « /var/log/auth.log » dit que l\'utilisateur AD n\'existe pas, redémarrez Winbind.

sudo  /etc/init.d/winbind restart

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 alors possible.


Contributeurs principaux : OStaquet, Ner0lph (mise en forme), bob philomene.

  • tutoriel/comment_ajouter_machine_ubuntu_dans_domaine_active_directory.1243497139.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)