Ubuntu : Authentification active directory

Etapes :

  • dns
  • ntp (synchronisation des horloges)
  • kerberos (authentification)
  • samba/winbind (comptes utilisateurs)
  • nsswitch
  • pam (identification système)
  • [pam_mount (montage de "disques réseaux")]

 

Note: les démons sont ici démarrés avec "service" et non "invoke-rc.d", du à la version récente d'Ubuntu.


Dns

L'active directory s'appuyant sur les dns, assurez vous d'avoir comme serveur(s) dns le(s) dns de votre domaine windows, et comme domaine par défaut, votre domaine AD (visible dans /etc/resolv.conf.. a modifier soit ici, soit dans network-manager)

 


Ntp

Le protocole ntp (Network Time Protocol) permet de synchroniser l'horloge de l'ordinateur local avec un serveur de temps.

Pour un bon fonctionnement d'active directory, les clients doivent être synchronisé avec le serveur.

Installer les éléments ntp:

$ sudo aptitude install ntpdate ntp 

Stopper le serveur ntp le temps de configurer

$ sudo service ntp stop

Synchroniser l'horloge

$ sudo ntpdate srvdom.lan.netou.com

Configurer le démon ntp (fichier /etc/ntp.conf)
Remplacer les lignes "server ......" par une seule ligne:
server srvdom.lan.netou.com
Redémarrer le démon

$ sudo service ntp start

 


Installer kerberos

$ sudo aptitude install krb5-config krb5-user 

Configurer kerberos

Fichier /etc/krb5.conf

[libdefaults]
default_realm = LAN.NETOU.COM
ccache_type = 4
forwardable = true
proxiable = true
[realms]
LAN.NETOU.COM = {
default_realm = LAN.NETOU.COM
}

[domain_realm]
.lan.netou.com = LAN.NETOU.COM
lan.netou.com = LAN.NETOU.COM
[login]
krb4_convert = true
krb4_get_tickets = false

 

Tester l'authentification kerberos

$ kinit administrateur@LAN.NETOU.COM


Installer samba & winbind

$ sudo aptitude install samba winbind 

Couper les services samba et winbind

$ sudo service smbd stop
$ sudo service winbind stop

Configurer samba

fichier /etc/samba/smb.conf 

[global]
##AD
workgroup = lan
realm = LAN.NETOU.COM
netbios name = eg-latituded530
security = ads
#Mise en cache de l'authentification (en cas de non accès temporaire aux contrôleurs)
winbind offline logon = yes
winbind cache time = 15
#Les lignes "enum" ne doivent être à yes que sur des 'petits' domaines, pour éviter une charge excessive
winbind enum users = yes
winbind enum groups = yes
passdb backend = tdbsam
idmap backend = idmap_rid:LAN=10000000-30000000
idmap uid = 10000000-30000000
idmap gid = 10000000-30000000
template homedir = /home/%D/%U
template shell = /bin/bash
winbind use default domain = yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully*
pam password change = yes
obey pam restrictions = yes

###
map to guest = Bad User
unix charset = UTF-8
dos charset = CP850
printcap name = cups
printing = cups
 

A noter :

- Dans le cadre d'un domaine bien rempli, je conseille la désactivation des options "winbind enum users" et "".

- Depuis le passage à samba 3.6 (ubuntu 12.04), la syntaxe de idmap a (encore) changée... remplacer 

idmap backend = idmap_rid:LAN=10000000-30000000
idmap uid = 10000000-30000000
idmap gid = 10000000-30000000

par 

idmap config * : range = 10000000-30000000
idmap config * : backend = tdb
idmap config LAN : default = yes
idmap config LAN : range = 10000000-30000000
idmap config LAN : backend = rid

 

fichier /etc/security/pam_winbind.conf (pour l'identification hors connexion si les contrôleurs ne sont pas joignables)

[global]
cached_login = yes

 

Redémarrer le service samba

$ sudo service smbd start

le service nmbd

$ sudo service nmbd start

Intégrer au domaine

$ sudo net ads join -U administrateur

Vérifier l'intégration

$ sudo net ads testjoin

Redémarrer le service winbind

$ sudo service winbind start

Tester le listing des comptes utilisateurs.. (si le domaine n'est pas trop chargé..)

$ wbinfo -u


Configurer nsswitch:

fichier /etc/nsswitch.conf

passwd:         winbind compat
group:          winbind compat
shadow:         winbind compat


hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files


protocols:      db files
services:       db files
ethers:         db files

rpc:            db files


netgroup:       nis

Tester la résolution d'un compte utilisateur

$ id administrateur

 


Configurer Pam  (Pluggable Authentification Module .. authentification)
Installer la librairie pour les changements de mots de passe

$ sudo aptitude install libpam-smbpass
verifier la presence des lignes suivantes dans les fichiers
/etc/pam.d/common-account
account [success=1 new_authtok_reqd=done default=ignore]        pam_winbind.so
/etc/pam.d/common-auth
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
/etc/pam.d/common-password
password        [success=1 default=ignore]      pam_winbind.so use_authtok try_first_pass
password        optional                   pam_smbpass.so nullok use_authtok use_first_pass
/etc/pam.d/common-session
#create homedirs
session required        pam_mkhomedir.so
session optional                        pam_winbind.so

Félicitation, vous pouvez maintenant vous identifier sur le domaine 

(pour tester, passez sur une console texte .. ctrl-alt-f2 par exemple .. et alt-f7 ou alt-f8 pour revenir sur la console graphique ensuite)

 


Pam mount (permet le montage de répertoire(s), par exemple 'disques' réseau)
Installer pam_mount et cfis-utils
$ sudo aptitude install libpam-mount cifs-utils
Vérifier dans le fichier /etc/pam.d/common-session la présence de la ligne
session optional        pam_mount.so
et dans le fichier /etc/pam.d/common-auth
auth    optional        pam_mount.so
 
La configuration des montages automatiques s'effectue dans le fichier /etc/security/pam_mount.conf.xml
Exemple:
<volume fstype="cifs" server="srvdom" path="test" mountpoint="/media/%(USER)-commun/" user="*" options="rw,auto,iocharset=utf8" />


 
ATTENTION: pour que le montage fonctionne, l'utilisateur doit s'être authentifié sur le serveur de partage)

Créer un partage

Attention, pour profiter des droits "multi-utilisateurs", il faut disposer des acl sur le système..

$ sudo aptitude install acl

Ajouter l'option acl dans les options de montage (/etc/fstab). Exemple:
/dev/sdb1       /mnt/datas      ext4    rw,acl  0       0
Remonter la partition "modifiée"
$ sudo mount -o remount /mnt/datas
Ajouter la définition du partage en fin de fichier /etc/samba/smb.conf

[MonPartage]
comment = Partage
path = /mnt/donneespartagees
read only = no
writable = yes
level2 oplocks = yes
force security mode = 0
fake directory create times = no
create mode = 0770
directory mode = 2770
guest ok = no
store dos attributes = yes
map acl inherit = yes
admin users = LAN\Administrateur

Redémarrer samba ...

$ sudo service smbd restart

 

L'administrateur peut maintenant attribuer les droits depuis n'importe quel poste windows .. (sinon utiliser les commandes setfacl et getfacl)


 

Divers

En cas de résultats inattendus, il peut être utile de purger le cache de winbind: 

$ sudo rm -f /var/cache/samba/*.tdb

$ sudo net cache flush

 

Edition du 15/06/12: Ajout des remarques sur le changement de configuration induit par le passage à samba 3.6

Powered by Drupal, an open source content management system
titrepage = document.title */ ?>