Aller au contenu

2. Vérifier votre statut utilisateur

Si vous êtes connecté en tant que root, vous devrez créer un nouveau compte utilisateur non privilégié.

Exécutez la commande suivante pour vérifier votre nom d’utilisateur actuel :

whoami
  • Si le résultat est root, vous êtes connecté en tant qu’utilisateur root.
  • Vous pouvez également vérifier l’UID (identifiant utilisateur) de votre compte en exécutant :
id
  • Si l’UID est 0, vous êtes connecté en tant qu’utilisateur root.

2.2. Vérifier les privilèges root pour un utilisateur non-root

Section intitulée « 2.2. Vérifier les privilèges root pour un utilisateur non-root »

Si vous n’êtes pas connecté en tant que root, vérifiez si votre utilisateur fait déjà partie du groupe sudo en exécutant :

groups
  • Cela affichera la liste des groupes auxquels votre utilisateur appartient. Si sudo figure dans la liste, votre utilisateur dispose de droits administratifs (privilégiés).

Vous pouvez également vérifier en exécutant une commande qui nécessite les privilèges sudo. Par exemple :

sudo whoami
  • Si un mot de passe vous est demandé et que vous voyez ensuite le résultat root, cela signifie que votre utilisateur a accès à sudo.
  • Cas 1 : Votre utilisateur est root (résultat de whoami = root ou id affiche l’UID 0)

    • Créez un nouveau compte utilisateur non privilégié.
    • Déconnectez-vous du compte root et utilisez le compte nouvellement créé pour la suite des opérations.
  • Cas 2 : Votre utilisateur n’a pas d’accès privilégié (pas dans le groupe sudo)

    • Vous pouvez demander à l’administrateur système de vous accorder les privilèges sudo ou vous connecter en tant que root pour ajouter votre utilisateur au groupe sudo (si vous disposez des identifiants root).
  • Cas 3 : Votre utilisateur fait déjà partie du groupe sudo

    • Vous pouvez poursuivre votre travail car vous disposez déjà d’un accès administratif sans être directement l’utilisateur root.

Ce processus vous assure de commencer à travailler sur le serveur en toute sécurité, en respectant les bonnes pratiques de gestion des privilèges utilisateur.


2.3. Créer un nouveau compte utilisateur non privilégié

Section intitulée « 2.3. Créer un nouveau compte utilisateur non privilégié »

Dans les systèmes Linux, la gestion des privilèges root est une partie essentielle de l’administration des utilisateurs. Il existe deux méthodes courantes pour accorder les privilèges root : la commande visudo et la commande usermod.

Quand utiliser visudo ou usermod

  • Utilisez visudo pour des configurations détaillées et sécurisées.
  • Utilisez usermod pour une gestion simple et rapide des privilèges basée sur les groupes.

La commande usermod est un moyen simple d’ajouter un utilisateur au groupe sudo (ou à d’autres groupes administratifs). Elle est idéale lorsque la configuration du système permet la gestion des privilèges par groupes.

Pour ajouter l’utilisateur au groupe sudo, utilisez la commande suivante :

sudo usermod -aG sudo username
  • Remplacez username par le nom d’utilisateur réel de la personne que vous souhaitez ajouter au groupe sudo.
  • L’option -a garantit que l’utilisateur est ajouté au groupe sans être retiré des autres groupes.
  • L’option -G spécifie le groupe auquel l’utilisateur est ajouté (sudo dans ce cas).
sudo adduser username

Vous devez fournir un mot de passe pour le nouveau compte. Ensuite, il vous sera demandé de saisir les détails du nouvel utilisateur, ce qui est facultatif.

Créez un nouveau compte utilisateur (remplacez username par le nom réel du compte utilisateur) :

sudo adduser username

Ajoutez le nouveau compte utilisateur au groupe sudo :

sudo usermod -aG sudo username

Vous pouvez vérifier l’appartenance au groupe avec la commande suivante :

groups username
groups ubuntu
ubuntu sudo users

Le nouveau compte utilisateur est maintenant un utilisateur sudo et peut exécuter toutes les commandes.

Cela est configuré par le paramètre par défaut du groupe sudo :

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

Voici comment ajouter les privilèges root pour un utilisateur avec visudo :

  1. Ouvrir le fichier sudoers :
sudo visudo

Cette commande garantit que le fichier sudoers est vérifié pour les erreurs de syntaxe avant l’enregistrement, ce qui évite les erreurs de configuration potentielles. 2. Ajouter l’utilisateur avec tous les privilèges : Localisez la section du fichier où les privilèges utilisateur sont définis. Pour accorder à un utilisateur (username) les privilèges root complets, ajoutez la ligne suivante :

username ALL=(ALL:ALL) ALL
  • Remplacez username par le nom d’utilisateur réel.
  • Cette ligne permet à l’utilisateur d’exécuter n’importe quelle commande en tant que n’importe quel utilisateur ou groupe, avec les privilèges root.
  1. Enregistrer et quitter
    • Si vous utilisez vim comme éditeur par défaut, appuyez sur Esc, tapez :wq et appuyez sur Entrée pour enregistrer et fermer.
    • Pour nano, appuyez sur Ctrl+O pour enregistrer, puis Ctrl+X pour quitter.

2.4 Comprendre la configuration sudo sans mot de passe

Section intitulée « 2.4 Comprendre la configuration sudo sans mot de passe »

Si votre utilisateur ou groupe (par exemple, sudo) est configuré avec l’option NOPASSWD, les commandes sudo peuvent être exécutées sans saisir de mot de passe. Ces configurations sont définies soit dans le fichier principal sudoers, soit dans les fichiers du répertoire /etc/sudoers.d.

Cette configuration peut être intentionnelle à des fins d’automatisation ou de commodité, mais elle doit être utilisée avec prudence pour éviter de compromettre la sécurité. Examinez et modifiez toujours les configurations sudo de manière responsable.

Pour réactiver les demandes de mot de passe pour les commandes sudo, suivez ces étapes :

  1. Modifier le fichier sudoers de manière sécurisée avec visudo :

    sudo visudo
  2. Localiser et supprimer/modifier la règle NOPASSWD :

    • Trouvez les lignes contenant NOPASSWD. Par exemple :
      username ALL=(ALL) NOPASSWD:ALL
  • Remplacez NOPASSWD:ALL par ALL. Les lignes modifiées ressembleront à :
    username ALL=(ALL) ALL
  1. Enregistrer et quitter

Étapes pour vérifier et définir PermitRootLogin à no

Le fichier de configuration principal de SSH se trouve généralement à l’emplacement /etc/ssh/sshd_config.

Pour vérifier le comportement actuel de PermitRootLogin, exécutez : bash sudo grep PermitRootLogin /etc/ssh/sshd_config

  • Si le résultat est commenté (# PermitRootLogin ...), alors le comportement par défaut du système est appliqué (souvent yes).

Ouvrez le fichier dans un éditeur :

sudo nano /etc/ssh/sshd_config

Recherchez la directive PermitRootLogin. Si elle est présente mais commentée (précédée de #), décommentez-la en supprimant le #. Modifiez la ligne (ou ajoutez-la si elle n’est pas présente) pour obtenir :

PermitRootLogin no

Cela désactive la connexion root via SSH.

  • Vérifier le dossier inclus pour les configurations supplémentaires
    • De nombreuses distributions prennent en charge l’inclusion de fichiers de configuration supplémentaires depuis un dossier. Par exemple :

      Include /etc/ssh/sshd_config.d/*.conf
    • Pour vérifier si des fichiers de configuration supplémentaires sont inclus, recherchez une directive Include dans sshd_config :

      grep -i include /etc/ssh/sshd_config
    • SSH lit les configurations dans l’ordre suivant :

      1. Le fichier principal (/etc/ssh/sshd_config) est lu en premier.
      2. Les configurations des fichiers du dossier inclus (comme /etc/ssh/sshd_config.d/*.conf) sont lues ensuite.
      3. Paramètres en conflit : la dernière ligne lue a la priorité.
    • Cela signifie que si le fichier de configuration principal et les fichiers inclus spécifient tous deux PermitRootLogin, la valeur du dernier fichier (ou ligne) traité sera appliquée. Exemple : si /etc/ssh/sshd_config contient :

      PermitRootLogin yes

      et /etc/ssh/sshd_config.d/custom.conf contient :

      PermitRootLogin no

      Alors le système appliquera PermitRootLogin no, car cette valeur est lue en dernier.

    • Voir Annexe A pour plus de détails sur la priorité des fichiers de configuration SSH.

Si une telle ligne existe, tous les fichiers .conf dans /etc/ssh/sshd_config.d/ (ou le dossier spécifié) seront également appliqués.

  1. Vérifier la configuration. Après avoir effectué les modifications, vérifiez la syntaxe du fichier de configuration :
    sudo sshd -t
    S’il n’y a pas d’erreurs, poursuivez.
  2. Redémarrer le service SSH. Appliquez les modifications en redémarrant le service SSH :
    sudo systemctl restart ssh
  3. Tester la configuration. Essayez de vous connecter en tant que root via SSH pour confirmer que l’accès est refusé :
    ssh root@your_server_ip

Annexe A. Comprendre la priorité des fichiers de configuration SSH

Section intitulée « Annexe A. Comprendre la priorité des fichiers de configuration SSH »
  1. Ordre de lecture :

    • SSHD lit /etc/ssh/sshd_config EN PREMIER
    • Le démon SSH traite les directives Include lorsqu’elles sont rencontrées dans le fichier sshd_config.
    • Si la directive Include /etc/ssh/sshd_config.d/*.conf apparaît au milieu de sshd_config, les fichiers dans /etc/ssh/sshd_config.d/ sont traités immédiatement à ce moment-là en ordre lexicographique.
  2. La première valeur l’emporte :

    • La première occurrence d’une directive de configuration (par exemple, PermitRootLogin) est appliquée.
    • Toute définition ultérieure est ignorée, quel que soit l’ordre des fichiers.

Supposons ces fichiers inclus dans /etc/ssh/sshd_config :

Include /etc/ssh/sshd_config.d/*.conf

Structure du répertoire :

/etc/ssh/sshd_config.d/
├── 50-cloud-init.conf
└── 60-cloudimg-settings.conf

Contenu de chaque fichier :

  • 50-cloud-init.conf :

    /etc/ssh/sshd_config.d/50-cloud-init.conf
    PermitRootLogin yes
  • 60-cloudimg-settings.conf :

    /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
    PermitRootLogin no

Résultat : Le serveur SSH applique PermitRootLogin yes car cette valeur est définie EN PREMIER dans 50-cloud-init.conf, même si 60-cloudimg-settings.conf la définit à no.