Outils personnels

Samba avec authentification sur Active Directory

De wikiGite

Tout d'abord vérifiez si les paquets suivants sont installés ou non:

krb5-libs krb5-workstation pam_krb5 samba-client nss

Ensuite il faut configurer le fichier /etc/krb5.conf comme ceci:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = DOMAIN.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true

[realms]
 DOMAIN.COM = {
  kdc = controleur.domain.com:88
  admin_server = controleur.domain.com:749
  default_domain = domain.com
 }

[domain_realm]
 .domain.com = DOMAIN.COM
 domain.com = DOMAIN.COM

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

Les deux lignes suivantes:

dns_lookup_realm = true
dns_lookup_kdc = true

indiquent qu'il faut se reposer sur la résolution DNS (enregistrements SRV) pour trouver le/les serveur(s) kerberos, mais s'il devait y avoir un soucis avec la résolution, tester ces paramètres à false : dans ce cas utiliser le fichier /etc/hosts du serveur.

Modifier la configuration samba (fichier /etc/samba/smb.conf) de la manière suivante:

- passer security à "ads" (security = ads)
- donner le domaine kerberos: realm = domain.com
- indiquer le serveur de mot de passe: password server = controleur
- vérifier qu'il y a bien:
    encrypt passwords = yes
    local master = no
    domain master = no
    preferred master = no
    dns proxy = no
- renommer pour backup le fichier secrets.tdb: mv /etc/samba/secrets.tdb /etc/samba/secrets.tdb.bak

Relancer samba:

/etc/init.d/smb restart

Maintenant il faut vérifier que le kerberos passe bien, pour se faire:

# klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)
 
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

Il n'y a pas de ticket en cache, tentons d'en obtenir un:

# kinit utilisateur@DOMAIN.COM
Password for utilisateur@DOMAIN.COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: utilisateur@DOMAIN.COM

Valid starting     Expires            Service principal
03/17/09 16:35:43  03/18/09 02:35:45  krbtgt/DOMAIN.COM@DOMAIN.COM
        renew until 03/18/09 16:35:43

Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

Nous avons bien un ticket kerberos v5 en cache. Détruisons le:

# kdestroy
# klist

Maintenant il faut joindre la machine avec Samba au domaine:

# kinit Administrator@DOMAIN.COM
[...]
# net ads join -Uadministrator%password
[...]
# /etc/init.d/smb restart

Avec ce type de configuration il n'y a plus besoin de créer les utilisateurs avec smbpasswd, mais il faut que l'utilisateur zxiste au niveau de l'OS pour les droits du/des filesystem(s). Pour ça nous pouvons utiliser winbind. Winbind est normalement déjà installé sur les CentOS et RedHat sinon il faut installer le paquet "nss".

Ajouter ceci à smb.conf:

idmap uid = 15000-20000
idmap gid = 15000-20000

winbind enum users = yes
winbind enum groups = yes
template shell = /bin/bash
winbind use default domain = Yes

Vérifier le fichier /etc/nsswitch.conf et éventuellement modifier les lignes suivantes:

passwd:     db files winbind
shadow:     db files
group:      db files winbind
hosts:      files dns winbind

Relancer le démon winbind: /etc/init.d/winbind start

Il n'y a plus qu'à tester !