Introduction
Quand vous obtenez un serveur ubuntu 20.04 auprès de votre hébergeur. Voici les étapes à suivre pour améliorer sa sécurité et qui vous donnent une base solide pour vos prochaines configurations.
Étape 1 - Connexion en tant que root
Votre hébergeur vous a forcément donné une IP publique et un mot de passe root liés à votre serveur. Pour y accéder, il vous suffit d'utiliser la commande SSH suivante:
ssh root@ip_publicAcceptez l'avertissement sur l'authenticité de l'hôte s'il apparaît. Ensuite, le terminal vous demande votre mot de passe.
Étape 2 - Création d'un nouvel utilisateur capable de se comporter en tant que root
On sait bien qu'un utilisateur root peut faire n'importe quelle action dans le système d'exploitation. C'est décourageant de s'y mettre en permanence car ça vous risque de tomber dans un accident. Pour diminuer ce risque, nous nous mettons en root seulement lorsque l'on a besoin.
Pour créer un utilisateur, il suffit de taper:
adduser johnPour accorder l'accès root à cet utilisateur, entrez cette commande:
usermod -aG sudo johnMaintenant lorsque vous vous connectez avec cet utilisateur, vous pouvez taper sudo devant les commandes pour se comporter comme root.
Étape 3 - Changement du port SSH
Le changement du port SSH est une sécurité supplémentaire à votre serveur face aux attaques automatisées.
Pour effectuer la modification, ouvrez le fichier de configuration sshd_config avec un éditeur de texte par exemple vi:
vi /etc/ssh/sshd_configRecherchez l'entrée Port 22 et remplacez le port 22 par un port supérieur à 1024 :
Port 2021 # par exempleAssurez-vous que le port sélectionné n'est pas utilisé par d'autres services.
Vous pouvez voir la liste des ports utilisés dans /etc/services.
Étape 4 - Connexion avec une clé SSH
Il est recommandé d'utiliser l'authentification via la clé SSH plutôt que l'authentification avec le mot de passe. Si vous n'avez pas encore généré une clé SSH dans votre machine locale, entrez cette commande:
ssh-keygen -t ed25519Le terminal va vous demander le nom que vous aimeriez donner à votre clé:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/votre_home/.ssh/id_ed25519):Entrez une phrase secrète à votre clé:
Enter passphrase (empty for no passphrase):Enfin, vous devrez avoir quelque chose de similaire:
Your identification has been saved in /votre_home/.ssh/id_ed25519
Your public key has been saved in /votre_home/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:I5QzXvUbJUM7LcEePKw8Do/YwycJt/CgYxoUe8brCUw pc@host
The key\'s randomart image is:
+--[ED25519 256]--+
| .== . |
| . . . .*B |
| + = .. o*o. |
| E +o++o + .= |
| + o ooXSB .. |
| + = ..X.+ |
| \* o + |
| . o |
| |
+----[SHA256]-----+Il faut maintenant copier votre clé publique générée /votre_home/.ssh/id_ed25519.pub dans le fichier ~/.ssh/authorized_keys de votre serveur.
Le service SSH écoute encore sur le port 22 à cette étape. Le changement de port ne sera effectif qu'après le redémarrage à l'étape 7.
La manière la plus simple de le faire c'est d'utiliser la commande ssh-copy-id qui est déjà intégrée dans la plupart des distributions
linux. Tapez juste cette commande pour faire la copie:
ssh-copy-id -i ~/.ssh/id_ed25519.pub john@ip_publicjohn est ici notre exemple mais il correspond à l'utilisateur que vous aimerez avoir une authentification par clé SSH.
Étape 5 - Désactivation de la connexion root
Maintenant que nous avons un utilisateur sudo dédié, il faut désactiver la connexion directe en tant que root. Dans le fichier /etc/ssh/sshd_config, recherchez la directive PermitRootLogin et remplacez-la par :
PermitRootLogin noÉtape 6 - Désactivation de l'authentification par mot de passe
L'authentification par mot de passe est vulnérable aux attaques par force brute. Maintenant que votre clé SSH est en place,
dans /etc/ssh/sshd_config, remplacez la directive PasswordAuthentication par :
PasswordAuthentication noÉtape 7 - Rechargement du service SSH
Après avoir effectué toutes les modifications dans /etc/ssh/sshd_config, rechargez le daemon systemd, puis redémarrez le socket et le service SSH :
systemctl daemon-reloadsystemctl restart ssh.socketsystemctl restart sshÉtape 8 - Mise en place d'un pare-feu
On peut utiliser le pare-feu UFW pour s'assurer que seules les applications autorisées ont l'accès au système. UFW est déjà embarqué dans Ubuntu mais il est désactivé par défaut.
Attention, avant de l'activer, il faut que vous rajoutiez d'abord le port SSH qui vous sert à vous connecter à votre serveur via le SSH, sinon vous serez bloqué. Pour autoriser l'accès SSH de votre serveur:
ufw allow 2021/tcpOn peut ensuite activer le pare-feu avec:
ufw enableLe terminal vous demande la confirmation alors tapez y puis Entrée pour continuer.
Le port SSH est maintenant autorisé, vous pouvez voir le status du pare-feu UFW en tapant:
ufw status verboseÉtape 9 - Vérification de la connexion
Le service SSH écoute maintenant sur le nouveau port. Pour vous reconnecter, vous devez désormais spécifier le port:
ssh user@ip_public -p2021Essayez de vous reconnecter à votre serveur pour voir si les changements ont bien été pris en compte. Si ce n'est pas le cas, redémarrez votre serveur.
