vendredi 31 août 2007

Installation de WINBIND - SAMBA et configuration avec un LDAP sous UBUNTU 6.06

Pour cet atelier je me suis refferer à la documentation http://doc.ubuntu-fr.org/tutoriel/comment_ajouter_machine_ubuntu_dans_domaine_active_directory

1 - Prérequis
Cette installation suppose qu'on a
Un domaine Microsoft Windows Server 2003 SP1
Linux UBUNTU 6.06


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

Faire une copie de backup du fichier de configuration
sudo cp /etc/default/ntpdate /etc/default/ntpdate.07_08_2007

Dans « /etc/default/ntpdate » :
# serveur source à vérifier
#NTPSERVERS="ServeurNTP.MonDomaine"
NTPSERVERS="ntp.ubuntu.com"

# options supplémentaires pour ntpdate
NTPOPTIONS="-u"


sudo /etc/network/if-up.d/ntpdate
NB: il faut lancer la commande ntpdate en tant que su "sudo" sinon il n'y aura pas de changement d'heure, et aucun message d'erreur ne sera affiché

Nom de domaine pleinement qualifié
Un FQDN est essentiel afin de faire fonctionner Kerberos. Dans « /etc/hosts » :
192.168.1.2  NomDeLaMachine  NomDeLaMachine.NomDuDomaine.Suffix  
#par exemple ubuntu.dom1.local


2 - Configurer Kerberos
Faire une copie de backup du fichier de configuration
sudo cp /etc/apt/source.liste /etc/apt/source.list.07_08_2007

Il faut décommenter les URL dans le fichier « /etc/apt/sources.list » :
et surtout les 4 lignes
deb http://ma.archive.ubuntu.com/ubuntu/ drapper universe
deb-src http://ma.archive.ubuntu.com/ubuntu/ drapper universe
...
...
deb http://ma.archive.ubuntu.com/ubuntu/ drapper-security universe
deb-src http://ma.archive.ubuntu.com/ubuntu/ drapper-security universe


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.

Faire une copie de backup du fichier de configuration
sudo cp /etc/krb5.conf /etc/krb5.conf.07_08_2007

Fichier « /etc/krb5.conf » :
[logging]
default = FILE10000:/var/log/krb5lib.log

[libdefaults]
ticket_lifetime = 24000
default_realm = NOMDUDOMAIN.SUFFIX
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc

[realms]
MONDOMAINE = {
kdc = controleurdudomaine.nomdudomaine.suffix
admin_server = controleurdudomaine.nomdudomaine.suffix
default_domain = NOMDUDOMAINE.SUFFIX
}

[domain_realm]
.MonDomaine = NOMDUDOMAINE.SUFFIX
MonDomaine = NOMDUDOMAINE.SUFFIX


3 - 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: ****

NB: a- Le nom du domaine doit être en MAJISCULE sinon ça risque de ne pas fonctionner,
b- Pendant le lancen on peut recevoir le message "kinit(v5): KDC reply did not match expectations while getting initial credentials", pas de problème ça va marcher


Dans certain cas une erreur peut apparaitre :
kinit(v5): KDC has no support for encryption type while getting initial credentials
Il faut "raffraîchir" 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.
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

4- Joindre un domaine AD
Programme requis
Pour vous connecter à Windows 2003 SP1, la version supérieur à 3.0.14 de Winbind est nécessaire. Les paquets à installer sont « winbind » et « samba ».
SAMBA http://doc.ubuntu-fr.org/samba
sudo apt-get install samba

WINBIND
sudo apt-get install winbind
NB: la version de winbind que j'ai installé est 3.0.22

Joindre le domaine

Faire une copie de backup du fichier de configuration
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.07_08_2007

Dans « /etc/samba/smb.conf » :
[global]
security = ADS
realm = NOMDUDOMAINE.SUFFIX
password server = ServeurCD.MonDomaine
workgroup = NOMDUDOMAINE
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


NB:- j'avais mis workgroup = NOMDUDOMAINE.SUFFIX mais je recevais le message
"The workgroup in smb.conf does not match the short domaine name obtained from the server."
j'ai du remettre workgroup = NOMDUDOMAINE

- ne pas changer la valeur de realm il faut garder NOMDUDOMAINE.SUFFIX

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 NOMDUDOMAINE.SUFFIX
administrateur's password:
...
...
Using short domain name –- NOMDUDOMAINE
Joined 'UBUNTU' to realm 'NOMDUDOMAINE.SUFFIX'

NB: quand j'ai mis le login en MAJISCULE ça n'a pas fonctionner

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

5 - Test d'integration au domaine Active Directory
Pour obtenir une liste des utilisateurs du domaine :
wbinfo -u
Et une liste des groupes :
wbinfo -g

Configurer l'authentification
Le fichier « nsswitch.conf »
Faire une copie de backup du fichier de configuration
sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.07_08_2007

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


6 - Test du module nsswitch

Tester le module nsswitch Winbind à l'aide de getent :
sudo getent passwd
root:x:0:0:root:/root:/bin/bash
...
NOMDUDOMAINE+administrateur:x:10004:10004:Administrateur:/home/NOMDUDOMAINE/administrateur:/bin/bash
NOMDUDOMAINE+utilisateur:x:10014:10002:NOM UTILISATEUR:/home/NOMDUDOMAINE/utilisateur:/bin/bash
...

sudo getent group
root:x:0:
daemon:x:1:
bin:x:2:
...
NOMDUDOMAINE+admins du domaine:x:10014:NOMDUDOMAINE+administrateur,NOMDUDOMAINE+admin
...
NOMDUDOMAINE+dnsadmins:x:10019:
...

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

Faire une copie de backup du fichier de configuration
sudo cp /etc/pam.d/common-account /etc/pam.d/common-account.07_08_2007

Dans « /etc/pam.d/common-account » :
account sufficient pam_winbind.so
account sufficient pam_unix.so
#account required pam_unix.so


Faire une copie de backup du fichier de configuration
sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.07_08_2007

Dans « /etc/pam.d/common-auth » :
auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok_secure use_first_pass
#auth required pam_winbind.so


Faire une copie de backup du fichier de configuration
sudo cp /etc/pam.d/common-session /etc/pam.d/common-session.07_08_2007
Dans « /etc/pam.d/common-session » :
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
#session optional pam_foreground.so


Faire une copie de backup du fichier de configuration
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.07_08_2007
Dans « /etc/pam.d/sudo » :

auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass
#@include common-auth
#@include common-account


8 - Configuration finale

Chaque domaine a besoin d'un répertoire dans « /home » :
sudo mkdir /home/NOMDUDOMAINE

Mais il faut attribuer des droits au dossier :
sudo chmod 777 /home/NOMDUDOMAINE

9 - Utilisation

Connexion avec [Domain] [Winbind separator] [Nom_d_utilisateur] :
login: Utilisateur
Password: *****
...


Pour obtenir :
Utilisateur@MaMachine:~$

TRES IMPORTANT:
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 restart

Libellés :