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
    
  • You should read more on Sudo by reading the man page:

    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

The process for managing local users and groups is straightforward and differs very little from most other GNU/Linux operating systems. Ubuntu and other Debian based distributions encourage the use of the "adduser" package for account management.

  • To add a user account, use the following syntax, and follow the prompts to give the account a password and identifiable characteristics, such as a full name, phone number, 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

When a new user is created, the adduser utility creates a brand new home directory named /home/username. The default profile is modeled after the contents found in the directory of /etc/skel, which includes all profile basics.

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.

  • To verify your current user home directory permissions, use the following syntax:

    ls -ld /home/nomutilisateur
    

    The following output shows that the directory /home/username has world-readable permissions:

    drwxr-xr-x 2 nomutilisateur nomutilisateur 4096 2007-10-02 20:03 nomutilisateur
    
  • You can remove the world readable-permissions using the following syntax:

    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
    

    The results below show that world-readable permissions have been removed:

    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 :

    Last password change                                    : Jan 20, 2015
    Password expires                                        : never
    Password inactive                                       : never
    Account expires                                         : never
    Minimum number of days between password change          : 0
    Maximum number of days between password change          : 99999
    Number of days of warning before password expires       : 7
    
  • Pour définir une de ces valeurs, utilisez simplement la syntaxe suivante et suivez les indications :

    sudo chage nomutilisateur
    

    The following is also an example of how you can manually change the explicit expiration date (-E) to 01/31/2015, minimum password age (-m) of 5 days, maximum password age (-M) of 90 days, inactivity period (-I) of 5 days after password expiration, and a warning time period (-W) of 14 days before password expiration:

    sudo chage -E 01/31/2015 -m 5 -M 90 -I 30 -W 14 username
    
  • 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 :

    Last password change                                    : Jan 20, 2015
    Password expires                                        : Apr 19, 2015
    Password inactive                                       : May 19, 2015
    Account expires                                         : Jan 31, 2015
    Minimum number of days between password change          : 5
    Maximum number of days between password change          : 90
    Number of days of warning before password expires       : 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

Simply disabling/locking a user account will not prevent a user from logging into your server remotely if they have previously set up RSA public key authentication. They will still be able to gain shell access to the server, without the need for any password. Remember to check the users home directory for files that will allow for this type of authenticated SSH access, e.g. /home/username/.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 username  (pour obtenir le terminal pts/#)
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 systemctl restart sshd.service

Authentification via une base de données utilisateurs externe

Most enterprise networks require centralized authentication and access controls for all system resources. If you have configured your server to authenticate users against external databases, be sure to disable the user accounts both externally and locally. This way you ensure that local fallback authentication is not possible.