Comment (et pourquoi) désactiver la connexion root via SSH sous Linux

Publié: 2022-09-29
Ordinateur portable Linux affichant une invite bash
fatmawati achmad zaenuri/Shutterstock.com

Se connecter en tant qu'utilisateur racine Linux est une mauvaise pratique. Se connecter en tant que root via une connexion SSH est encore pire. Nous vous disons pourquoi et vous montrons comment l'empêcher.

L'épée à deux tranchants

Vous avez besoin d'une personne autorisée à posséder et à administrer les parties de votre système d'exploitation qui sont trop importantes ou trop sensibles pour que les utilisateurs réguliers puissent les gérer. C'est là qu'intervient root. root est le superutilisateur tout-puissant des systèmes d'exploitation Unix et Linux.

Le compte utilisateur root, comme tous les comptes, est protégé par un mot de passe. Sans le mot de passe de l'utilisateur root, personne d'autre ne peut accéder à ce compte. Cela signifie que les privilèges et les pouvoirs de root ne peuvent être utilisés par personne d'autre. Le revers de la médaille est que la seule défense entre un utilisateur malveillant et les pouvoirs de root est ce mot de passe. Les mots de passe, bien sûr, peuvent être devinés, déduits, repérés écrits quelque part ou forcés brutalement.

Si un attaquant malveillant découvre le mot de passe de root, il peut se connecter et faire ce qu'il veut sur l'ensemble du système. Avec les privilèges élevés de root, il n'y a aucune restriction sur ce qu'ils peuvent faire. Ce serait comme si l'utilisateur root avait quitté un terminal sans se déconnecter, permettant un accès opportuniste à son compte.

Pourquoi vous ne devriez pas vous connecter à votre système Linux en tant que root
CONNEXION Pourquoi vous ne devriez pas vous connecter à votre système Linux en tant que root

En raison de ces risques, de nombreuses distributions Linux modernes ne permettent pas à root de se connecter à l'ordinateur localement, sans parler de SSH. L'utilisateur root existe, mais aucun mot de passe n'a été défini pour lui. Et pourtant, il faut bien que quelqu'un puisse administrer le système. La solution à cette énigme est la commande sudo .

sudo permet aux utilisateurs désignés d'utiliser temporairement les privilèges de niveau racine à partir de leur propre compte d'utilisateur. Vous devez vous authentifier pour utiliser sudo , ce que vous faites en entrant votre propre mot de passe. Cela vous donne un accès temporaire aux capacités de root.

Vos pouvoirs root meurent lorsque vous fermez la fenêtre du terminal dans laquelle ils ont été utilisés. Si vous laissez la fenêtre du terminal ouverte, ils expireront, vous revenant automatiquement au statut d'utilisateur normal. Cela offre un autre type de protection. Il vous protège de vous-même.

Si vous vous connectez habituellement en tant que root au lieu d'un compte normal, toute erreur que vous ferez sur la ligne de commande pourrait être catastrophique. Devoir utiliser sudo pour effectuer l'administration signifie que vous êtes plus susceptible d'être concentré et prudent sur ce que vous tapez.

Autoriser la connexion root via SSH augmente les risques car les attaquants n'ont pas besoin d'être locaux ; ils peuvent essayer de forcer brutalement votre système à distance.

CONNEXION: Comment examiner l'utilisation de la commande sudo sous Linux

L'utilisateur root et l'accès SSH

Vous êtes plus susceptible de rencontrer ce problème lorsque vous administrez des systèmes pour d'autres personnes. Quelqu'un a peut-être décidé de définir un mot de passe root pour pouvoir se connecter. D'autres paramètres doivent être modifiés pour permettre à root de se connecter via SSH.

Ce truc n'arrivera pas par accident. Mais cela peut être fait par des personnes qui ne comprennent pas les risques associés. Si vous prenez en charge l'administration d'un ordinateur dans cet état, vous devrez informer les propriétaires de la raison pour laquelle c'est une mauvaise idée, puis rétablir le fonctionnement du système en toute sécurité. S'il s'agit de quelque chose de configuré par l'administrateur système précédent, les propriétaires peuvent ne pas le savoir.

Voici un utilisateur sur un ordinateur exécutant Fedora, établissant une connexion SSH à un ordinateur Ubuntu en tant qu'utilisateur root de l'ordinateur Ubuntu.

 ssh [email protected] 

L'utilisateur root se connecte à un ordinateur distant à l'aide de SSH

L'ordinateur Ubuntu permet à l'utilisateur root de se connecter via SSH. Sur l'ordinateur Ubuntu, nous pouvons voir qu'une connexion en direct est en cours depuis l'utilisateur root.

 qui 

Utilisation de la commande who pour répertorier les utilisateurs connectés

Ce que nous ne pouvons pas voir, c'est qui utilise cette session. Nous ne savons pas si la personne à l'autre bout de la connexion SSH est l'utilisateur root ou quelqu'un qui a réussi à obtenir le mot de passe root.

Désactivation de l'accès SSH pour root

Pour désactiver l'accès SSH pour l'utilisateur root, nous devons apporter des modifications au fichier de configuration SSH. Il se trouve dans "/etc/ssh/sshd_config". Nous devrons utiliser sudo pour y écrire des modifications.

 sudo gedit /etc/ssh/sshd_config 

Modification du fichier sshd-config

Faites défiler le fichier ou recherchez la chaîne "PermitRootLogin".

Réglez-le sur "non" ou commentez la ligne en plaçant un dièse " # " comme premier caractère sur la ligne. Enregistrez vos modifications.

Nous devons redémarrer le démon SSH pour que nos modifications entrent en vigueur.

 sudo systemctl redémarrer ssh 

Redémarrage du démon sshd

Si vous souhaitez également empêcher les connexions locales, désactivez le mot de passe root. Nous adoptons une approche ceinture et bretelles et utilisons à la fois les options -l (verrouiller) et -d (supprimer le mot de passe).

 sudo passwd root -ld 

Verrouillage du compte root et suppression du mot de passe root

Cela verrouille le compte et supprime le mot de passe du compte par-dessus le marché. Même si l'utilisateur root est physiquement assis devant votre ordinateur, il ne pourra pas se connecter.

Un moyen plus sûr d'autoriser l'accès root SSH

Parfois, vous rencontrerez une résistance managériale à la suppression de l'accès root via SSH. S'ils ne veulent vraiment pas écouter, vous pourriez vous retrouver dans une position où vous devrez le rétablir. Si tel est le cas, vous devriez être en mesure de faire des compromis de manière à réduire les risques tout en permettant les connexions à distance de l'utilisateur root.

Comment créer et installer des clés SSH à partir du shell Linux
CONNEXION Comment créer et installer des clés SSH à partir du shell Linux

L'utilisation de clés SSH pour établir une connexion via SSH est bien plus sécurisée que l'utilisation de mots de passe. Comme aucun mot de passe n'est impliqué, ils ne peuvent pas être forcés, devinés ou autrement découverts.

Avant de verrouiller le compte root local, configurez des clés SSH sur l'ordinateur distant afin que l'utilisateur root puisse se connecter à votre ordinateur local. Ensuite, supprimez leur mot de passe et verrouillez leur compte local.

Nous devrons également éditer le fichier "sshd_config" une fois de plus.

 sudo gedit /etc/ssh/sshd_config 

Modification du fichier sshd-config

Modifiez la ligne "PermitRootLogin" afin qu'elle utilise l'option "prohibit-password".

Enregistrez vos modifications et redémarrez le démon SSH.

 sudo systemctl redémarrer ssh 

Redémarrage du démon sshd

Désormais, même si quelqu'un rétablit le mot de passe de l'utilisateur root, il ne pourra pas se connecter via SSH à l'aide d'un mot de passe.

Lorsque l'utilisateur root distant établit une connexion SSH avec votre ordinateur local, les clés sont échangées et examinées. S'il réussit l'authentification, l'utilisateur root est connecté à votre ordinateur local sans avoir besoin d'un mot de passe.

 ssh [email protected] 

L'utilisateur root se connecte à un ordinateur distant à l'aide de SSH sans mot de passe

Entrée interdite

Refuser les connexions à distance de l'utilisateur root est la meilleure option. Autoriser root à se connecter à l'aide de clés SSH est le deuxième meilleur choix, mais toujours bien meilleur que l'utilisation de mots de passe.

CONNEXION: Comment contrôler l'accès sudo sous Linux