Gestion et sécurisation des comptes d’utilisateurs sur un système Linux

By | September 23, 2020

Sur Linux, il existe plusieurs fonctionnalités servant à faciliter la gestion des comptes d’utilisateurs et leur sécurisation.
Dans cet article, j’essaierai d’évoquer les plus populaires (importants).
Les fonctionnalités que nous aborderons sont: les Quota, les permissions de fichier, le SGID, les ACLs, libpam_cracklib et les outils de gestion d’utilisateur chmod, chown, useradd, passwd, chage, groupadd.

Supposons donc que les tâches ci-dessous nous soient confiées:

  1. Créer les groupes d’utilisateurs suivants: security, development, management, ainsi que leurs utilisateurs en se basant sur l’illustration suivante:
  2. Ci-dessous les propriétés des comptes d’utilisateurs à définir:
  • Les utilisateurs doivent impérativement changer leur mots de passe chaque trimestre,
  • Le nombre minimum de jours autorisés entre les modifications des mots de passe sera d’un jour,
  • Générer un mot de passe aléatoire pour chaque nouvel utilisateur pour leur première connexion,
  • Les utilisateurs seront forcés à modifier leurs mots de passe lors de leur première connexion,
  • Historique des mots de passe à 5.
  • Imposer la complexité des mots de passe. Les mots de passe devront contenir au moins une lettre majuscule, une lettre minuscule, un chiffre, un caractère spécial et doivent être longs de 8 lettres.
  1. Créer un 4ème groupe partagé workers qui comprendra tous les employés. S’assurer que workers est le groupe primaire de tous les employés.
  2. Monter les répertoires de travail /security, /development, /management respectivement dans les devices /dev/sda, /dev/sdb, /dev/sdc en utilisant la fonctionnalité Quota.
  3. Régler un quota pour chaque utilisateur sur chaque répertoire de travail. 30000 inodes pour les utilisateurs du répertoire /security. 70000 inodes pour les utilisateurs du répertoire /development. 70000 inodes pour les utilisateurs du répertoire /management.
  4. Chaque employé doit pouvoir lire/créer et accéder à tous les fichiers de son répertoire de travail.
  5. Tout fichier créé doit avoir comme propriétaires son créateur et le groupe du créateur.
  6. Les utilisateurs ne devraient pas pouvoir supprimer les fichiers des autres hormis leurs supérieurs hiérarchiques.
  7. Le groupe development doit avoir un accès en lecture sur le répertoire /security.
  8. Le groupe security doit avoir un accès en lecture sur le répertoire /development.
  9. Le groupe management doit avoir un accès en lecture sur le répertoire /security.
  10. Le groupe management doit avoir un accès en lecture sur le répertoire /development.
  1.  

Nous réaliserons ces tâches sur un système Ubuntu Bionic.

Groupadd, login.def

Sans plus tarder, commençons par la création des groupes d’utilisateurs à l’aide de la commande groupadd.

La syntaxe:

# groupadd group-name

Avant de passer à la création des utilisateurs, il nous faudra configurer certains fichiers pour la définition de leurs propriétés par défaut.

Ainsi, nous devons modifier les directives PASS_MAX_DAYS et PASS_MAX_DAYS du fichier /etc/login.defs qui serviront respectivement à forcer les utilisateurs à modifier leurs mots de passe après un nombre défini de jours et à fixer le nombre de jour minimal entre les modifications de mot de passe.

Libpam_cracklib

Le package libpam_cracklib inclut un module PAM imposant la complexité des mots de passe.
Une fois installé, ce module éffectue une série de tests pour vérifier la force des mots de passe des utilisateurs. Le module cherche à savoir par exemple si le mot de passe utilisé est un palindrome, s’il est monotonique ou s’il contient un nom d’utilisateur. Je vous invite à lire cet article si vous souhaitez en savoir plus sur le package Libpam_cracklib

Libpam_cracklib peut être installé comme suit:

# apt-get install libpam_cracklib

Pour configurer la complexité des passwords sur notre système comme stipulé dans l’énoncé, il faudra modifier le fichier /etc/pam.d/common-password, en y ajoutant les directives minlen=8, ucredit=-1, lcredit=-1, dcredit=-1, ocredit=-1 à la ligne invoquant pam_cracklib.so.
Quant à la définition de l’historique des mots de passe, il faudra ajouter la directive remember 5 à la ligne invoquant le module pam_unix.so.

Nous sommes à présent sûrs que tous les futurs utilisateurs de ce système auront tous les mêmes propriétés de compte et de mots de passe.

Useradd, Passwd

A l’aide de useradd, créeons donc les utilisateurs de telle sorte qu’ils aient pour groupe principal workers, puis comme second groupe, leur groupe de travail.

La syntaxe:

# useradd -m user -g primary-group -G working-group

L’option m servant à créer un répertoire de base pour l’utilisateur, l’option g à configurer le groupe primaire et l’option G le groupe secondaire.

 

Les propriétés de l’un des comptes créés:


Le script ci-dessous nous permettra de créer des mots de passe forts des utilisateurs nouvellement créés et les sauvegarder dans un fichier accessible que par le compte root. Le mot de passe pourra ensuite être partagé aux utilisateurs de façon sécurisée.
La commande chage présente dans la dernière ligne du script forcera les utilisateurs à créer leur propre mot de passe à leur prochaine connexion.

#!/bin/bash
USERPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 8)
NAME=${1?Error: no name given}
echo "$1:$USERPASS" | chpasswd
echo "$1:$USERPASS">>passfile
chmod 700 passfile
chage -d 0 $1

L’exécution du script pour l’initialisation du mot de passe du compte anouk:

Quota

Quota est une fonctionnalité du kernel Linux servant à limiter l’espace disque un utilisateur ou un groupe peut utiliser. Quota sert également à limiter le nombre de fichiers (inodes) qu’un utilisateur ou un groupe peut créer sur une machine.

Installation de Quota:

# apt install quota -y

Après l’installation de Quota, montons dans fstab les devices dans des dossiers locaux à l’aide de leur identifiant unique universel (UUID) accessible via la commande blkid.

Une exécution de mount -a nous assure que nos dossiers sont montés comme il le faut avec les bonnes options.

La syntaxe ci-dessous permet d’activer l’utilisation de Quota sur les utilisateurs et groupes d’utilisateurs.

# quotacheck -cugm /mounted-folder


La syntaxe ci-dessous permet d’activer Quota.

# quotaon -v /mounted-folder


La syntaxe suivante sert à éditer le quota d’un utilisateur.

# edquota -u user

La capture suivante montre que l’utilisateur linda pourra créer au maximum 30000 fichiers sur le système de fichier /dev/sda monté dans le dossier /security.

Celle-ci montre que l’utilisateur anouk pourra créer tout au plus 70000 fichiers sur le système de fichier /dev/sdb monté dans le dossier /development.

Enfin, cette dernière montre que l’utilisateur raul pourra créer 70000 fichiers maxi sur le système de fichier /dev/sdc monté dans le dossier /management.

chown, chmod, SGID

A l’aide de chown, nous pouvons attribuer la possession des dossiers aux chefs d’équipe (et à leur groupe) de telle sorte qu’ils soient les seuls à avoir un contrôle sur tous les fichiers créés dans leurs dossiers respectifs.

La syntaxe:

# chown user:group folder



chmod nous permettra d’indiquer les permissions souhaitées sur les dossiers et de mettre en place de SGID qui fera que le groupe secondaire de l’utilisateur créeant le fichier soit propriétaire.

# chmod 2770 folder-name

L’image ci-dessous montre que le SGID est bien en place.

ACL

Les ACL (Access Control List) fournissent un mécanisme de permissions plus flexible aux systèmes de fichiers. A la différence des permissions Linux qui fournissent une permission générale sur les dossiers et fichiers, les ACL permettent de configurer des permissions spécifiques d’un utilisateur (groupe  d’utilisateurs) sur n’importe quelle ressource.

Nous utiliserons la syntaxe ci-dessous pour configurer la liste d’accès sur chaqun des dossiers.

# setfacl -m g:group:rx /folder

La syntaxe ci-dessous nous servira à configurer une liste d’accès par défaut sur les dossiers.

# setfacl -m d:g:group:rx /folder

Dans l’image ci-dessous, nous parvenons à configurer les listes d’accès sur le dossier security suivant l’énoncé.
La commande getfacl permet d’afficher les  listes d’accès configurés.

Ainsi prend fin cet article. J’espère qu’il ne vous a pas paru trop long (^^) et que vous aurez appris de nouvelles choses. :-).

A bientôt !

mdestroy

2 thoughts on “Gestion et sécurisation des comptes d’utilisateurs sur un système Linux

  1. mirelsol

    Bonjour,

    Pour le SGID, il est indiqué la commande suivante
    chmod 2770 groupname

    Le nom groupname porte à confusion car le chmod s’applique sur un répertoire, ça serait donc plutôt :
    chmod 2770 folder

    Ensuite la phrase : “et de mettre en place de SGID qui fera que le groupe secondaire de l’utilisateur créeant le fichier soit propriétaire” est un peu difficile à comprendre et incomplète / incorrecte :

    En effet chmod 2770 folder fait deux choses :
    – Il enlève les droits lecture / écriture / exécution aux autres utilisateurs et les met pour le propriétaire et le groupe.
    – Il fait en sorte que tous les fichiers et sous-répertoires créés dans folder auront automatiquement le même groupe que celui défini pour folder (c’est la notion de “sticky” sur le groupe).

    Reply
    1. mdestroy Post author

      Hello !
      C’était une erreur, la commande avec chmod. Je l’ai corrigée, merci !

      Pour le 2nd point, mon explication n’était sûrement pas claire. Je m’en excuse. L’objectif était d’appliquer la notion “sticky” sur folder afin que le groupe défini comme propriétaire de folder (groupe secondaire des utilisateurs) le soit également pour tous les sous-dossiers et fichiers qui seront créés dans folder.
      Je verrai une explication plus claire. Merci encore une fois !

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *