5 conseils simples pour sécuriser votre serveur Linux

Les serveurs Linux sont le pilier d’Internet moderne. Aujourd’hui, presque chaque site Web et service auquel vous pouvez accéder via un navigateur fonctionne sur une distribution Linux. Nous vous montrons ici comment sécuriser votre serveur Linux.
Table des matières
- Supprimer l’accès SSH root
- Utiliser une paire de clés publiques pour l’accès SSH
- Renforcer le pare-feu de votre serveur Linux
- Créer un nouvel utilisateur pour chaque service
- Renforcer le noyau de votre serveur
- Questions fréquentes
Remarque : ce tutoriel a été créé en utilisant un serveur Ubuntu, mais il devrait également s’appliquer à d’autres distributions Linux, y compris votre serveur Web local.
1. Supprimer l’accès SSH root
L’une des manières les plus rapides de sécuriser votre serveur Ubuntu est de sécuriser votre démon SSH en désactivant votre accès SSH root. Par défaut, le serveur OpenSSH permet à toute connexion entrante de se connecter en tant qu’utilisateur root.
Par exemple, l’exécution de la commande suivante sur un serveur non sécurisé fournira un prompt de connexion :

Cela peut être problématique, car cela laisse votre serveur ouvert et vulnérable à une attaque par force brute de mot de passe. Pour résoudre ce problème, connectez-vous à votre serveur Linux et mettez à jour le fichier de configuration de votre démon SSH.
Une fois que vous êtes à l’intérieur de votre serveur Linux, éditez le fichier de configuration SSH :
sudonano/etc/ssh/sshd_config
Recherchez la variable PermitRootLogin dans GNU Nano en appuyant sur Ctrl + W et en tapant PermitRootLogin.

Changez la valeur de PermitRootLogin de “yes” à “no”, puis enregistrez le fichier en appuyant sur Ctrl + o, puis Ctrl + x.
Pour appliquer le nouveau paramètre, rechargez le démon SSH du serveur via systemctl :
sudo systemctl restart ssh
2. Utiliser une paire de clés publiques pour l’accès SSH
Une autre méthode rapide pour sécuriser votre serveur Linux est de créer une paire de clés publiques entre votre machine locale et votre compte utilisateur SSH. Cette approche évite le processus de connexion par mot de passe et vous authentifie automatiquement sur votre serveur distant.
Pour créer une paire de clés publiques, vous devez d’abord exécuter la commande suivante sur votre machine locale :
ssh-keygenLe programme keygen vous demandera plusieurs informations sur la clé que vous souhaitez créer. Vous pouvez laisser ces options par défaut en appuyant trois fois sur Entrée.

Exportez votre nouvelle paire de clés publiques sur votre serveur distant en utilisant le programme ssh-copy-id. Il s’agit d’une simple utilité qui prépare à la fois les machines local et distant pour l’authentification par clé publique via SSH.
ssh-copy-id [email protected]
Connectez-vous à votre machine distante en exécutant la commande suivante :
Il est également possible de sécuriser davantage votre serveur Linux en supprimant le prompt de connexion dans SSH. Ouvrez le fichier de configuration de votre démon avec la commande suivante :
sudonano/etc/ssh/sshd_configTrouvez la variable PasswordAuthentication et changez sa valeur de “yes” à “no”.

Rechargez votre démon SSH en exécutant la commande suivante :
sudo systemctl restart sshd3. Renforcer le pare-feu de votre serveur Linux
En plus de restreindre l’accès SSH, vous pouvez également améliorer la sécurité de votre serveur Linux en configurant votre pare-feu. Par défaut, une nouvelle machine Linux acceptera toutes les connexions entrantes de n’importe quel port.
Cela peut poser un problème, car cela laisse votre serveur vulnérable à une attaque par scan de ports. Par exemple, un acteur malveillant peut scanner votre machine à la recherche de ports non sécurisés et utiliser cela pour trouver une exploitation appropriée.

Une façon de résoudre cela est d’installer ufw, un client de pare-feu simple qui peut contrôler les ports et les adresses accessibles au monde extérieur.
Exécutez la commande suivante pour installer ufw sur Ubuntu :
sudo apt install ufw
Définissez les règles par défaut pour ufw. Ce sont les politiques que votre pare-feu suivra pour tout port que vous ne personnalisez pas. Il est bon de s’assurer que vous bloquez toutes les connexions entrantes :
sudo ufw default deny incoming
sudo ufw default allow outgoing
Configurez votre pare-feu pour les services que vous souhaitez exécuter sur votre machine. Par exemple, l’exécution des commandes suivantes vous permettra de vous connecter via SSH et d’héberger un serveur Web :
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443Enfin, vous devez activer votre nouvelle configuration de pare-feu en exécutant sudo ufw enable. De plus, vous pouvez vérifier si votre pare-feu est en ligne en exécutant cette commande :
sudo ufw status
4. Créer un nouvel utilisateur pour chaque service
Par défaut, chaque fichier et programme dans un système Linux appartient à un utilisateur et à un groupe particuliers. Pour modifier le système, vous devez avoir les bonnes autorisations pour les bons dossiers.
Une façon d’augmenter la sécurité de votre serveur Linux est de créer un nouveau compte utilisateur pour chaque nouveau service. Cette approche vous permet de contenir les privilèges de chaque service dans leur propre compte utilisateur.

Pour ce faire, exécutez les commandes suivantes :
sudo useradd -s/bin/bash-d/home/new-service -m-Gsudo new-service
sudopasswd new-service- Le drapeau
-sdéfinit le shell système pour le nouveau compte utilisateur. Dans mon cas, mon nouveau compte utilise Bash comme shell. - Les drapeaux
-det-mdéfinissent le répertoire utilisateur par défaut pour le nouveau compte. - Le drapeau
-G, quant à lui, ajoute le nouveau compte à tout groupe secondaire que vous spécifiez. Par exemple, ajouter le nouveau compte au groupe sudo permettra d’exécuter des commandes superutilisateur. - La commande
passwdvous permet de définir un nouveau mot de passe pour le nouveau compte utilisateur.
Une fois cela fait, vous pouvez utiliser votre nouveau compte utilisateur en vous déconnectant de votre compte actuel ou en exécutant su new-service.

5. Renforcer le noyau de votre serveur
Le noyau est l’une des parties les plus importantes d’un système Linux et relie le matériel de votre machine à votre logiciel. Par exemple, compiler votre propre noyau Linux vous permet d’activer le support pour du matériel et des fonctionnalités exotiques.

En plus de cela, le noyau sert également de processus racine du système d’exploitation. Sécuriser le noyau est l’une des parties les plus essentielles de la sécurisation de votre serveur Linux.
L’une des manières les plus rapides de sécuriser votre noyau est via sysctl. Il s’agit d’un utilitaire intégré qui vous permet d’ajuster les options d’exécution du noyau Linux.

Cependant, il est important de noter que sysctl ne couvrira pas l’ensemble du processus de durcissement du noyau, car la sécurisation du noyau dépendra largement de ce que vous en attendez.
Sachant cela, vous pouvez exécuter les commandes suivantes pour empêcher votre noyau de signaler des informations de diagnostic :
sudo sysctl kernel.kptr_restrict=2
sudo sysctl kernel.dmesg_restrict=1
sudo sysctl kernel.kexec_load_disabled=1
Vous pouvez également exécuter les commandes suivantes pour indiquer à votre noyau de rejeter toutes les demandes de connexion fausses faites à votre serveur :
sudo sysctl net.ipv4.tcp_syncookies=1
sudo sysctl net.ipv4.tcp_rfc1337=1
Ces commandes, d’autre part, forceront le noyau à valider chaque connexion entrante vers la machine :
sudo sysctl net.ipv4.conf.all.rp_filter=1
sudo sysctl net.ipv4.conf.default.rp_filter=1
Enfin, l’ensemble de commandes suivantes empêchera toute connexion entrante de rediriger le trafic réseau vers une passerelle différente. Cela empêchera votre machine de tomber victime d’une attaque de type homme du milieu.
sudo sysctl net.ipv4.conf.all.accept_redirects=0
sudo sysctl net.ipv4.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.secure_redirects=0
sudo sysctl net.ipv4.conf.default.secure_redirects=0
sudo sysctl net.ipv6.conf.all.accept_redirects=0
sudo sysctl net.ipv6.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.send_redirects=0
sudo sysctl net.ipv4.conf.default.send_redirects=0
Conseils : en plus des conseils ci-dessus, vous pouvez également utiliser ces outils open-source pour sécuriser votre serveur Linux.
Questions fréquentes
J’ai perdu ma machine locale. Est-il encore possible de me connecter à mon serveur Ubuntu via SSH ?
Pour la plupart, il ne devrait pas être possible de se connecter via SSH s’il utilise uniquement l’authentification par clé publique. Cependant, il peut encore être possible d’accéder au prompt SSH si vous n’avez pas désactivé la variable PasswordAuthentication.
En dehors de cela, vous pouvez accéder physiquement à la machine et mettre à jour “/etc/ssh/sshd_config” ou accéder à la console root depuis votre fournisseur VPS.
Mon serveur a à la fois iptables et ufw. Dois-je configurer les deux pour mon pare-feu ?
Non ! Les deux, iptables et ufw, sont des logiciels de pare-feu qui contrôlent les mêmes plages d’adresses et ports. Vous n’avez besoin de configurer qu’un seul d’entre eux pour avoir un pare-feu fonctionnel sur votre serveur Linux.
Est-il possible de retirer les privilèges de superutilisateur d’un utilisateur que j’ai créé ?
Oui ! Il est possible de retirer un utilisateur existant d’un groupe. Utilisez l’utilitaire usermod. Par exemple, exécuter usermod -G video new-service retirera l’utilisateur “new-service” du groupe “sudo” et l’ajoutera au groupe “video”.
Crédit image : Unsplash. Toutes les modifications et captures d’écran par Ramces Red.