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
slapdetldap-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=frobjectClass: organizationalUnitou: people dn: ou=groups,dc=cyril,dc=frobjectClass: organizationalUnitou: 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=frobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: shadowAccountcn: Cyril Audrassn: CyriluserPassword: (indiquer ici le mot de passe généré par la commande slappasswd)loginShell: /bin/bashuidNumber: 10000gidNumber: 10000homeDirectory: /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=frobjectClass: posixGroupcn: Cyril AudrasgidNumber: 10000memberUid: 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 :
- LDAP Account Manager (solution de gestion des utilisateurs et groupes) : https://www.ldap-account-manager.org/lamcms/
- Fusion Directory (autre solution de gestion des utilisateurs et groupes) : https://www.fusiondirectory.org/
- Self Service Password (afin de permettre à un utilisateur de changer facilement son mot de passe) : https://ltb-project.org/documentation/self-service-password
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
- Adresse IP du serveur 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 ldapgroup: compat systemd ldap
Fichier /etc/pam.d/common-passwd
Afin d'autoriser le changement de mot de passe par l'utilisateur, supprimez use_authtok 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_authtok 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-mountorg.freedesktop.udisks2.filesystem-mount-systemorg.freedesktop.udisks2.filesystem-mount-other-seatorg.freedesktop.udisks2.filesystem-fstaborg.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.Xauth_param basic children 5auth_param basic realm Identifiant et mot de passeacl ldapauth proxy_auth REQUIREDhttp_access deny !ldapauthhttp_access allow ldapauth
Fichier squidguard.conf
ldapbinddn cn=admin=dc=cyril,dc=frldapbindpass xxxxxxxldapcachetime 300ldapprotover 3
src xxx { ldapusersearch ldap://X.X.X.X/cn=xxx,ou=groups,dc=cyril,dc=fr?memberUid?sub?(&(objectclass=posixGroup)(memberUid=%s)) }
Sources
- https://computingforgeeks.com/how-to-install-and-configure-openldap-ubuntu-18-04/
- https://computingforgeeks.com/how-to-configure-ubuntu-18-04-ubuntu-16-04-lts-as-ldap-client/
- https://computingforgeeks.com/how-to-install-and-configure-ldap-account-manager-on-ubuntu-18-04-ubuntu-16-04-lts/
- https://www.linux.com/topic/desktop/how-authenticate-linux-desktop-your-openldap-server/
- https://wiki.archlinux.fr/Gestion_de_volumes_avec_udisks
