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
etldap-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 :
- 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 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_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-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
- 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