Gestion des utilisateurs

La gestion des utilisateurs est une partie cruciale de la sécurisation du système. Une gestion inefficace des utilisateurs et de leurs droits conduit souvent de nombreux systèmes a être corrompus. Il est donc fondamental de comprendre comment vous pouvez protéger votre serveur aux travers de techniques simples de gestion des comptes utilisateurs.

Où est la racine ?

Les développeurs Ubuntu ont choisi en conscience de désactiver par défaut le compte root pour toutes les versions d'Ubuntu. Ce qui ne signifie pas que le compte root ait été supprimé, ou qu'il ne soit pas accessible. Il lui a simplement été attribué un mot de passe qui ne correspond à aucune valeur chiffrée possible, on ne peut donc se connecter directement avec ce compte.

À la place, les utilisateurs sont invités à se servir d'un outil nommé sudo pour effectuer les tâches d'administration du système. Sudo permet à un utilisateur qui y est autorisé, d'étendre temporairement ses privilèges en saisissant son propre mot de passe plutôt que d'avoir à connaître celui du compte root. Cette méthode simple mais efficace permet de responsabiliser l'utilisateur pour toutes ses actions et permet à l'administrateur de contrôler finement les actions qu'un utilisateur peut effectuer avec lesdits privilèges.

  • Si pour une raison quelconque vous voulez activer le compte root, donnez-lui tout simplement un mot de passe :

    Les configurations avec mot de passe racine ne sont pas prises en charge.

    sudo passwd
    

    Sudo vous demandera votre mot de passe, puis de fournir un nouveau mot de passe pour root, tel que présenté ci-dessous :

    [sudo] mot de passe pour l'utilisateur : (saisissez votre propre mot de passe)
    Saisissez un nouveau mot de passe UNIX : (saisissez un nouveau mot de passe pour root)
    Ressaisissez un nouveau mot de passe UNIX : (répétez le nouveau mot de passe pour root)
    passwd : mise à jour du mot de passe réussie
    
  • Pour désactiver le mot de passe du compte root, utilisez la syntaxe de mot de passe suivante :

    sudo passwd -l root
    

    Enfin, pour désactiver le compte root en lui-même, utilisez la commande suivante :

    usermod --expiredate 1
    
  • Vous pouvez en savoir davantage sur Sudo en lisant sa page de manuel :

    man sudo
    

Par défaut, l'utilisateur initial créé par l'installateur Ubuntu est un membre du groupe « sudo » qui est ajouté au fichier /etc/sudoers en tant qu'utilisateur sudo autorisé. Si vous souhaitez donner l’accès root complet à d'autres comptes par le biais de sudo, il suffit de les ajouter au groupe sudo.

Ajout et suppression d'utilisateurs

La manière de gérer les utilisateurs et les groupes est claire et nette. Elle varie très peu d'un système GNU/Linux à l'autre. Ubuntu et les autres distributions basées sur Debian, incitent à utiliser la paquet « adduser » pour gérer les comptes utilisateurs.

  • Pour ajouter un compte utilisateur, utilisez la syntaxe suivante et suivez les indications pour attribuer à ce compte un mot de passe et certaines caractéristiques d'identification, comme le nom complet, le numéro de téléphone, etc.

    sudo adduser nomutilisateur
    
  • Pour supprimer un compte utilisateur et son groupe primaire, utilisez la syntaxe suivante :

    sudo deluser nomutilisateur
    

    La suppression d'un compte n'entraîne pas la suppression de son répertoire personnel. C'est à vous de décider si vous voulez ou non, supprimer ce dossier manuellement, en accord avec votre politique de conservation des données.

    Notez bien que n'importe quel utilisateur ajouté par la suite avec le même UID/GID que le précédent propriétaire aura alors accès à ce dossier, si vous n'avez pas pris les précautions nécessaires.

    Vous voudrez sans doute modifier ces valeurs des UID/GID pour quelque chose de plus approprié, telles que celles du compte root, et peut-être déplacer le dossier pour éviter de futurs conflits :

    sudo chown -R root:root /home/nomutilisateur/
    sudo mkdir /home/archives_utilisateurs/
    sudo mv /home/nomutilisateur /home/archives_utilisateurs/
    
  • Pour verrouiller ou déverrouiller temporairement un compte utilisateur, utilisez la syntaxe suivante, respectivement :

    sudo passwd -l nomutilisateur
    sudo passwd -u nomutilisateur
    
  • Pour ajouter ou supprimer un groupe personnalisé, utilisez la syntaxe suivante, soit respectivement :

    sudo addgroup nomgroupe
    sudo delgroup nomgroupe
    
  • Pour ajouter un utilisateur à un groupe, utilisez la syntaxe suivante :

    sudo adduser nomutilisateur nomgroupe
    

Sécurité du profil utilisateur

Lorsqu'un nouvel utilisateur est créé, l'application adduser crée un tout nouveau répertoire personnel nommé /home/nomutilisateur. Le profil par défaut est copié d'après les contenus se trouvant dans le dossier /etc/skel, qui inclut tous les éléments essentiels d'un profil.

Si votre serveur héberge de multiples utilisateurs, vous devrez être particulièrement attentif aux droits d'accès des répertoires personnels pour assurer la confidentialité des données. Par défaut, les répertoires personnels sur Ubuntu sont créés avec des droits de lecture et d'exécution pour tout le monde. Ce qui signifie que tous les utilisateurs peuvent parcourir et lire les contenus des dossiers personnels des autres utilisateurs. Cela ne convient peut-être pas à votre configuration.

  • Pour vérifier les droits d'accès des répertoires personnels des utilisateurs, utilisez la syntaxe suivante :

    ls -ld /home/nomutilisateur
    

    La sortie suivante montre que le dossier /home/nomutilisateur est accessible en lecture pour tout le monde :

    drwxr-xr-x 2 nomutilisateur nomutilisateur 4096 2007-10-02 20:03 nomutilisateur
    
  • Vous pouvez supprimer les droits en lecture pour tout le monde avec la syntaxe suivante :

    sudo chmod 0750 /home/nomutilisateur
    

    Certaines personnes ont tendance à utiliser aveuglément l'option de récursion (-R) qui modifie tous les sous-répertoires et fichiers. Ceci n'est pas nécessaires et peut conduire à des résultats indésirables. Agir sur le répertoire principal est suffisant pour empêcher les accès non autorisés à tout ce qui peut se trouver dedans.

    Un approche bien plus efficace pour ce problème serait de modifier globalement les droits d'accès établis par défaut par adduser lors de la création des répertoires personnels. Ouvrez simplement le fichier /etc/adduser.conf et changez la valeur de la variable DIR_MODE pour quelque chose d'approprié, ainsi les nouveaux dossiers utilisateurs auront les bons droits d'accès lors de leur création.

    DIR_MODE=0750
    
  • Après avoir corrigé les droits d'accès avec l'une des méthodes mentionnée précédemment, effectuez-en un contrôle avec la commande suivante :

    ls -ld /home/nomutilisateur
    

    Les résultats ci-dessous montrent que les droits de lecture pour tout le monde ont été enlevés :

    drwxr-x--- 2 nomutilisateur nomutilisateur 4096 2007-10-02 20:03 nomutilisateur
    

Politique des mots de passe

Avoir une politique rigoureuse des mots de passe est l'un des aspect les plus important de votre stratégie de sécurité. Des attaques de type force brute ou par dictionnaire contre des mots de passe faibles sont à l'origine de nombreuses intrusions. Si vous désirez ouvrir un accès distant (quel que soit son type) à votre système en utilisant votre mot de passe local, vous devez vous assurer que vous respectez des exigences minimales de complexité des mots de passe, des durées de vie des mots de passe limitées, et que vous effectuez des audits fréquents de vos systèmes d'authentification.

Longueur minimale du mot de passe

Par défaut, Ubuntu exige des mots de passe d'une longueur minimum de 6 caractères, ainsi que quelques contrôles entropiques de base. Ces valeurs sont contrôlées dans le fichier /etc/pam.d/common-password, qui est expliqué ci-après.

password        [success=1 default=ignore]      pam_unix.so obscure sha512

Si vous souhaitez ajuster la longueur minimum à 8 caractères, vous pouvez changer la variable associée à min=8. La modification est expliquée ci-après.

password        [success=1 default=ignore]      pam_unix.so obscure sha512 minlen=8

Basic password entropy checks and minimum length rules do not apply to the administrator using sudo level commands to setup a new user.

Expiration du mot de passe

Lorsque vous créez des comptes utilisateurs, vous devriez vous fixer comme règle de définir une durée de vie minimale et maximale pour les mots de passe. Cela obligera les utilisateurs à changer leur mot de passe lorsqu'il arrive à expiration.

  • Pour afficher facilement l'état actuel d'un compte utilisateur, utilisez la syntaxe suivante :

    sudo chage -l username
    

    La sortie ci-dessous montre des choses intéressantes sur le compte utilisateur, en fait aucune règle n'est appliquée :

    Dernier changement de mot de passe : 20 janvier 2008
    Fin de validité du mot de passe : jamais
    Mot de passe désactivé : jamais
    Fin de validité du compte : jamais
    Nombre minimum de jours entre les changements de mot de passe : 0
    Nombre maximum de jours entre les changements de mot de passe : 99999
    Nombre de jours d'avertissement avant la fin de validité du mot de passe : 7
    
  • Pour définir une de ces valeurs, utilisez simplement la syntaxe suivante et suivez les indications :

    sudo chage nomutilisateur
    

    Ce qui suit est également un exemple de la façon dont vous pouvez modifier manuellement la date d'expiration explicite (-E) au 31/01/2008, la durée de vie minimale du mot de passe (-m) à 5 jours, sa durée de vie maximale (-M) à 90 jours, la période d'inactivité (-I) à 5 jours après l'expiration du mot de passe et une période d'avertissement (-W) de 14 jours avant l'expiration du mot de passe.

    sudo chage -E 01/31/2011 -m 5 -M 90 -I 30 -W 14 nomutilisateur
    
  • Pour vérifier les modifications, utilisez la même syntaxe que celle mentionnée précédemment :

    sudo chage -l username
    

    La sortie ci-dessous indique les nouvelles règles qui ont été établies pour le compte :

    Dernier changement de mot de passe : 20 janvier 2008
    Fin de validité du mot de passe : 19 avril 2008
    Mot de passe désactivé : 19 mai 2008
    Fin de validité du compte : 31 janvier 2008
    Nombre minimal de jours entre deux changements de mot de passe : 5
    Nombre maximal de jours entre deux changements de mot de passe : 90
    Nombre de jours d'avertissement avant la fin de validité du mot de passe : 14
    

Autres considérations de sécurité

Un grand nombre d'applications utilisent d'autres mécanismes d'authentification qui peuvent facilement être négligés, même par des administrateurs système expérimentés. Par conséquent, il est important de comprendre et de contrôler la manière dont les utilisateurs s'authentifient et ont accès aux services et aux applications sur votre serveur.

Accès SSH par des utilisateurs désactivés

Le simple fait de désactiver ou verrouiller un compte utilisateur, n'empêchera pas celui-ci de se connecter à distance à votre serveur s'il a précédemment défini une authentification par clé publique RSA. Il continuera à avoir un accès en ligne de commande au serveur, sans avoir besoin d'un mot de passe. Pensez à vérifier dans les répertoires personnels des utilisateurs la présence de fichiers qui autorisent ce type d'accès SSH avec authentification, c'est-à-dire /home/nomutilisateur/.ssh/authorized_keys.

Supprimez ou renommez le dossier .ssh/ du répertoire personnel de l'utilisateur pour l'empêcher d'utiliser les capacités d'authentification SSH à l'avenir.

Vérifiez bien qu'aucune connexion SSH n'est établie par l'utilisateur désactivé, en effet il peut avoir une connexion entrante ou sortante active. Mettez fin à toutes celles que vous trouvez.

who |grep nomutilisateur  (to get the pts/# terminal)
sudo pkill -f pts/#

Restreignez l'accès en SSH aux seuls comptes utilisateurs qui devrait l'avoir. Vous pouvez par exemple, créer un groupe nommé « sshlogin » et ajouter ce nom de groupe comme valeur à la variable AllowGroups située dans le fichier /etc/ssh/sshd_config.

AllowGroups sshlogin

Puis ajoutez vos utilisateurs SSH autorisés au groupe « sshlogin », et redémarrez le service SSH.

sudo adduser nomutilisateur sshlogin
sudo service ssh restart

Authentification via une base de données utilisateurs externe

La plupart des réseaux d'entreprise nécessitent une authentification centralisée et des contrôles d'accès pour toutes les ressources système. Si vous avez configuré votre serveur pour authentifier les utilisateurs sur une base de données externe, prenez soin de désactiver les comptes utilisateurs aussi bien externes que locaux. Ainsi, vous êtes sûr qu'en dernier recours l'authentification locale est impossible.