Publié le : 28/12/2024
Empêcher l’accès root et créer un utilisateur avec des privilèges sudo pour la sécurité de votre système Ubuntu
L’une des meilleures pratiques pour renforcer la sécurité d’un système Linux, tel qu’Ubuntu, est de limiter l’accès direct à l’utilisateur root. L’utilisateur root dispose de privilèges illimités, ce qui en fait une cible privilégiée pour les attaques malveillantes. Dans cet article, nous allons voir comment désactiver l’accès root, configurer un utilisateur avec des privilèges sudo et améliorer la sécurité globale de votre système.
Pourquoi désactiver l’accès root pour la sécurité de votre système Ubuntu ?
Le compte root est souvent la première cible d’un attaquant cherchant à accéder à un système Linux. Bien que le mot de passe root puisse être fort, il reste vulnérable aux attaques par force brute ou autres méthodes d’exploitation. Voici quelques raisons pour lesquelles vous devriez désactiver l’accès root :
- Réduction de la surface d’attaque : Empêcher les connexions root rend le système plus résistant aux attaques.
- Traçabilité : Avec sudo, chaque commande exécutée est associée à un utilisateur spécifique. Cela permet un suivi clair des actions effectuées sur le système.
- Gestion centralisée des permissions : Les utilisateurs ayant accès à sudo peuvent exécuter des commandes spécifiques avec des privilèges élevés, limitant le risque d’erreur.
Étape 1 : Désactiver l’accès root
Vérifier si l’accès root est activé
Sur Ubuntu, le compte root est généralement désactivé par défaut, mais il est important de s’assurer qu’il ne peut pas être utilisé pour se connecter. Voici comment vérifier :
- Connectez-vous à votre système.
- Vérifiez si root a un mot de passe défini :
sudo passwd -S root
Si la sortie indique que le mot de passe est « locked », cela signifie que le compte root est désactivé.
Désactiver le compte root (si nécessaire)
Si le compte root est actif, vous pouvez le désactiver en verrouillant son mot de passe :
sudo passwd -l root
Cela empêche toute connexion avec le compte root, tout en permettant de basculer temporairement en tant que root avec sudo
si nécessaire.
Empêcher les connexions root via SSH
Pour renforcer la sécurité, il est également essentiel d’empêcher les connexions root via SSH. Voici comment procéder :
- Ouvrez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
- Recherchez la ligne suivante :
PermitRootLogin yes
- Modifiez-la pour :
PermitRootLogin no
Redémarrez le service SSH pour appliquer les modifications :
sudo systemctl restart ssh
Étape 2 : Créer un utilisateur avec des privilèges sudo
Avec l’accès root désactivé, vous aurez besoin d’un utilisateur capable d’exécuter des tâches administratives. Voici les étapes pour configurer cet utilisateur.
Créer un nouvel utilisateur
Pour ajouter un utilisateur, utilisez la commande suivante :
sudo adduser <nom_utilisateur>
Suivez les instructions pour définir un mot de passe et renseigner les informations de l’utilisateur. Une fois terminé, l’utilisateur sera créé avec un répertoire personnel dans /home/<nom_utilisateur>
.
Ajouter l’utilisateur au groupe sudo
Pour que l’utilisateur ait les privilèges administratifs, ajoutez-le au groupe sudo
:
sudo usermod -aG sudo <nom_utilisateur>
Le groupe sudo
permet à ses membres d’exécuter des commandes avec des privilèges élevés en utilisant le préfixe sudo
.
Tester les droits sudo
Connectez-vous en tant que nouvel utilisateur :
su - <nom_utilisateur>
Essayez une commande nécessitant des droits sudo, comme la mise à jour des paquets :
sudo apt update
Si la commande fonctionne et demande le mot de passe de l’utilisateur, cela signifie que les droits sudo sont correctement configurés.
Étape 3 : Renforcer la sécurité avec sudo
Configurer les permissions spécifiques
Pour limiter ce qu’un utilisateur peut faire avec sudo, vous pouvez éditer le fichier /etc/sudoers
en utilisant visudo
:
sudo visudo
Ajoutez une règle pour l’utilisateur :
<nom_utilisateur> ALL=(ALL:ALL) ALL
Vous pouvez également restreindre les commandes spécifiques. Par exemple :
<nom_utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/systemctl
Cela permet à l’utilisateur d’exécuter systemctl
sans mot de passe, mais pas d’autres commandes.
Configurer un délai d’expiration
Pour éviter qu’un utilisateur ne reste connecté avec des droits sudo trop longtemps, vous pouvez ajuster le délai d’expiration en ajoutant cette ligne dans /etc/sudoers
:
Defaults timestamp_timeout=5
Ici, sudo demandera le mot de passe de l’utilisateur après 5 minutes d’inactivité.
Étape 4 : Configurer les règles SSH pour l’utilisateur
Même avec l’accès root désactivé, vous pouvez renforcer la sécurité de l’utilisateur avec des réglages SSH spécifiques.
Autoriser uniquement des clés SSH
Pour empêcher les connexions basées sur un mot de passe, configurez l’utilisateur pour utiliser uniquement des clés SSH :
- Créez une paire de clés SSH sur votre machine locale :
ssh-keygen -t rsa
- Copiez la clé publique sur le serveur :
ssh-copy-id <nom_utilisateur>@<adresse_ip_serveur>
- Configurez SSH pour désactiver les connexions par mot de passe : Ouvrez le fichier
/etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
- Assurez-vous que les lignes suivantes sont définies :
PasswordAuthentication no
PubkeyAuthentication yes
- Redémarrez SSH :
sudo systemctl restart ssh
Étape 5 : Vérification finale
Une fois ces configurations effectuées, vérifiez que :
- L’accès root est désactivé en essayant de vous connecter avec root.
- Le nouvel utilisateur peut exécuter des commandes avec
sudo
. - Les connexions SSH fonctionnent correctement pour l’utilisateur.
Étape 6 : Conseils supplémentaires
- Surveiller les connexions : Utilisez des outils comme
last
oujournalctl
pour suivre les connexions des utilisateurs.
- Mettre en place un pare-feu : Activez et configurez un pare-feu avec
ufw
pour limiter les accès au serveur :
sudo ufw enable
sudo ufw allow OpenSSH
- Limiter le nombre de comptes sudo : Seuls les utilisateurs de confiance doivent avoir les privilèges sudo.
Conclusion
Désactiver l’accès root et utiliser un utilisateur avec des privilèges sudo est une étape cruciale pour sécuriser un système Ubuntu. Cela réduit les risques de compromission tout en permettant une gestion efficace des permissions. En suivant ce guide, vous aurez un système plus sûr et prêt à affronter les défis d’un environnement réseau. N’oubliez pas d’adopter une approche proactive pour la sécurité, comme la mise en place de mises à jour régulières et la surveillance des journaux système.