No module Published on Offcanvas position

Authentification LDAP avec Ubuntu

L'utilisation d'un annuaire pour gérer les utilisateurs est un service inévitable dans un réseau informatique. La centralisation des données des comptes facilite la gestion par l'administrateur réseau et permet à chaque usager de se connecter sur différents postes tout en retrouvant son environnement de travail. Sans oublier les nombreux services liés à l'annuaire. Dans un environnement Microsoft, cet annuaire est implémenté avec Active Directory, qui utilise notamment le protocole LDAP (Lightwieght Directory Access Protocol). Dans un environnement Linux, un annuaire peut être mis en place avec OpenLDAP.

 

Configuration du serveur Ubuntu

 

Préparation

Afin déviter les soucis de nommage, il est préférable de définir le FQDN (serveur.cyril.fr par exemple) du serveur LDAP comme nom de machine :

  • Dans le fichier /etc/hosts, associez l'adresse IP du serveur LDAP et son FQDN.
  • Définisser le FQDN comme nom de machine sur serveur LDAP.

 

Installation du service LDAP
  • Installez les paquets slapd et ldap-utils.
  • Lors de l'installation des paquets, le mot de passe administrateur LDAP vous est demandé, ne le perdez pas !

 

Création du domaine
  • Créez un fichier LDIF (basedn.ldif par exemple) permettant de créer le domaine dans OpenLDAP (respectez bien les espaces et les sauts de ligne). Voici un exemple pour créer le domaine cyril.fr
dn: ou=people,dc=cyril,dc=fr
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=cyril,dc=fr
objectClass: organizationalUnit
ou: groups
  • Ajoutez le contenu du fichier dans l'annuaire : ldapadd -x -D cn=admin,dc=cyril,dc=fr -W -f basedn.ldif

 

 Ajout d'un utilisateur
  • Générez un mot de passe avec la commande slappasswd.
  • Créez un fichier LDIF (utilisateur.ldif par exemple) permettant d'ajouter un utilisateur dans votre domaine et en insérant le mot de passe récupéré par la commande slappasswd :
dn: uid=cyrilaudras,ou=people,dc=cyril,dc=fr
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Cyril Audras
sn: Cyril
userPassword: (indiquer ici le mot de passe généré par la commande slappasswd)
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/cyrilaudras
  •  Ajoutez le contenu du fichier dans l'annuaire : ldapadd -x -D cn=admin,dc=cyril,dc=fr -W -f utilisateur.ldif

Un utilisateur se trouve dans un groupe, il faut donc créer le groupe associé à l'utilisateur que l'on vient d'insérer dans le domaine.

  • Créez un fichier LDIF (groupe.ldif par exemple) permettant d'ajouter le groupe dans le domaine :
dn: cn=cyrilaudras,ou=groups,dc=cyril,dc=fr
objectClass: posixGroup
cn: Cyril Audras
gidNumber: 10000
memberUid: cyrilaudras
  •  Ajoutez le contenu du fichier dans l'annuaire : ldapadd -x -D cn=admin,dc=cyril,dc=fr -W -f groupe.ldif

 

Interfaces de gestion des comptes

Le serveur LDAP est opérationnel, vous pouvez y ajouter des utilisateurs et de groupes. Pour éviter d'utiliser des fichiers et des lignes de commandes, il existe différentes interfaces web à installer sur votre serveur en fonction de vos besoins :

 

Configuration des clients Ubuntu

 

Préparation

Comme pour le serveur, il est préférable d'éassocier le FQDN du serveur LDAP (serveur.domaine.tld) avec son adresse IP dans le fichier /etc/hosts.

 

Installation et configuration des paquets
  • Installez les paquets libnss-ldap, libpam-ldap et ldap-utils.
  • Lors de l'installation, des informations sont demandées :
    • Adresse IP du serveur LDAP : ldap://X.X.X.X
    • Nom de la base : dc=cyril,dc=fr
    • Version de LDAP : 3
    • Création d'une base locale pour l'administration : oui
    • Authentification nécessaire pour la base LDAP : non
    • Compte de l'administrateur LDAP : cn=admin,dc=cyril,dc=fr
    • Saisie du mot de passe de l'administrateur LDAP

 

Paramétrage de l'authentification LDAP
Fichier /etc/nsswitch.conf

Afin d'autoriser l'authentification LDAP, ajoutez ldap à la fin des lignes passwd et group :

passwd: compat systemd ldap
group: compat systemd ldap
 Fichier /etc/pam.d/common-passwd

Afin d'autoriser le changement de mot de passe par l'utilisateur, supprimez use_authok dans la ligne concernant l'authentification avec le module pam_ldap :

password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass

 L'instruction use_authok se trouvait entre pam_ldap.so et try_first_pass.

Fichier /etc/pam.d/common-session

Afin de permettre la création d'un répertoire personnel lors de la première connexion d'un utilisateur, ajoutez la ligne suivante à la fin du fichier (avant le commentaire indiquant la fin de la configuration pam-auth-update) :

session optional pam_mkhomedir.so skel=/etc/skel umask=077
Vérification du paramétrage

Afin de vérifier le paramétrage de votre client, tapez la commande su - identifiantutilisateur (en remplaçant évidemment identifiantutilisateur par l'identifiant d'un utilisateur se trouvant dans votre domaine). Si l'instruction "Creating directory '/home/identifiantutilisateur'" apparait et si la commande id renvoie l'UID, le GID et les groupes de l'utilisateur, le paramétrage est correct.

 

Création d'un profil par défaut

Afin de créer un profil par défaut pour les utilisateurs, il suffit de configurer un utilisateur modèle et de copier tout les fichiers du répertoire personnel de cet utilisateur modèle dans le répertoire /etc/skel/. Ne pas oublier de copier également les fichiers et répertoires cachés.

 

Attribution des groupes système aux utilisateurs LDAP
Fichier /etc/security/group.conf

Ajoutez une ligne indiquant les groupes attribués à quels utilisateurs et à quels horaires.

Par exemple, pour attribuer les groupes floppy, audio, cdrom, video, plugdev, scanner, vboxusers, sambashare et netdev à tous les utilisateurs LDAP et tout le temps :

*;*;*;Al00002400;floppy,audio,cdrom,video,plugdev,scanner,vboxusers,sambashare,netdev
Fichier /etc/pam.d/common-auth

Ajoutez la ligne appelant le module de gestion des groupes :

auth required pam_group.so use_first_pass

 

Autorisation de montage des partitions et des clés USB

Les utilisateurs n'ont pas par défaut le droit de monter des partitions ni des périphériques de stockage en USB. Pour leur donner ces autorisations, il faut modifier le fichier /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy en passant à yes les autorisations pour tous les utilisateurs pour les items suivants :

  • org.freedesktop.udisks2.filesystem-mount
  • org.freedesktop.udisks2.filesystem-mount-system
  • org.freedesktop.udisks2.filesystem-mount-other-seat
  • org.freedesktop.udisks2.filesystem-fstab
  • org.freedesktop.udisks2.filesystem-unmount-others

Plus d'informations sur les polkit : https://wiki.archlinux.fr/polkit

 

Squid et Squidguard

L'accès à Internet dans unréseau est parfois régi par l'utilisation d'un proxy Squid associé à Squidguard. Il est possible d'utiliser votre serveur OpenLDAP pour l'authentification sur Squid et Squidguard.

 

Fichier squid.conf
auth_param basic program /usr/lib/squid/basic_ldap_auth -b "dc=cyril,dc=fr" -f "uid=%s" X.X.X.X
auth_param basic children 5
auth_param basic realm Identifiant et mot de passe
acl ldapauth proxy_auth REQUIRED
http_access deny !ldapauth
http_access allow ldapauth

 

Fichier squidguard.conf
ldapbinddn cn=admin=dc=cyril,dc=fr
ldapbindpass xxxxxxx
ldapcachetime 300
ldapprotover 3
src xxx {
ldapusersearch ldap://X.X.X.X/cn=xxx,ou=groups,dc=cyril,dc=fr?memberUid?sub?(&(objectclass=posixGroup)(memberUid=%s))
}

 

Sources