VPS – Sécuriser un Serveur Privé Virtuel

Présentation

La plupart de temps, les hébergeurs livrent les VPS avec une IP publique (directement accessible sur internet) et le pare-feu n’est pas systématiquement activé.
Dans cet article, nous verrons comment sécuriser un VPS pour éviter qu’il soit la cible d’attaques automatiques. Pour cela, nous aborderons la configuration du service SSH, du pare-feu et plus encore.

Attention : Les configurations décrites ci-après peuvent entraîner une perte d’accès totale à votre VPS. Il est donc recommandé de faire un snapshot ou une sauvegarde avant de commencer. Vérifiez aussi que votre hébergeur propose une solution similaire au « Mode de secours » de Hostinger.


1) Mise à jour des paquets

Commencez par mettre à jour les paquets. Certains pourraient être obsolètes ou présenter des vulnérabilités corrigées dans de nouvelles versions.

Remarque : Si sudo n’est pas installé, passer à l’étape 2.


2) Installation de sudo

Installer sudo pour effectuer des opérations d’administration sans avoir à se connecter en tant que root.


3) Création d’un utilisateur différent de root

Créer un utilisateur différent de root et l’ajoutez au groupe sudo pour qu’il ait les droits d’administration sur le serveur.
Le but est d’éviter voire de s’interdire les connexions directes en tant que root.

3.1) Créer un nouvel utilisateur

3.2) Ajouter l’utilisateur au groupe sudo

3.3) Se connecter avec ce nouvel utilisateur

Ne plus utiliser le compte root pour se connecter au VPS mais ce nouvel utilisateur membre du groupe sudo.

Remarques :
Pour la suite de cet article, nous considérerons que vous êtes connecté en tant qu’utilisateur non-root et que sudo est installé. Les commandes suivantes seront donc précédées de sudo.

3.4) Autoriser la connexion par clé publique

Remarque : Nous supposons ici que vous avez déjà généré un couple clé privée et publique à la commande ssh-keygen.
Attention : Vous devez être connecté avec votre utilisateur non-root ou utiliser le chemin absolu /home/muNewUser/.ssh/authorized_keys.

3.4.1) Créer le répertoire .ssh à la racine du répertoire d’accueil de l’utilisateur non-root
3.4.2) Éditer le fichier authorized_keys de l’utilisateur non-root

Ajouter le contenu de la clé publique sur une nouvelle ligne du fichier authorized_keys.

3.4.3) Vérifier la connexion ssh par clé

Relancer une connexion ssh pour vérifier le bon fonctionnement de la connexion ssh par clé. Dans mon cas, l’exemple serait :

-i : Spécifier une clé privée si ce n’est pas ~/.ssh/id_rsa. (Je n’étais donc pas obligé d’utiliser -i dans mon cas précis)


4) Sécurisation du service ssh d’un VPS

Il faudra créer un nouveau fichier de configuration dans le répertoire /etc/ssh/sshd_conf.d.

4.1) Créer un nouveau fichier de configuration

Le nom de fichier 01-custom.conf est un exemple.

4.2) Éditer le fichier de configuration

Remarques :
La configuration ci-dessus est un exemple. Vous pouvez ajouter, modifier ou supprimer des directives en fonction de votre contexte. Pensez à modifier les valeurs Port et AllowUsers.

Attention :
L’interprétation des fichiers de configuration par OpenSSH est contre intuitive.
Pour éviter les confusions, n’utilisez un paramètre qu’une seule fois dans l’ensemble des fichiers de configuration. Certaines directives, comme PermitRootLogin, ne peuvent pas être surchargées. Seule la 1ère directive sera utilisée et les suivantes seront ignorées. Le fichier 01-custom.conf sera lu avant le 02-custom.conf.
Dans tous les cas, il faudra s’aider de la commande sshd -T pour afficher la configuration effective après lecture des fichiers de configuration par OpenSSH.

4.2) Vérifier la configuration

Remarques :
Si la valeur d’un paramètre n’est pas représentative de ce que vous avez renseigné, vérifiez que le paramètre n’est pas déjà renseigné dans un autre fichier. Si c’est le cas, il faudra supprimer ou commenter la ligne concernée. (Voir le paragraphe « Attention » plus haut).

4.3) Modifier le message connexion réseau

Il s’agit plutôt d’une dissuasion permettant d’avertir la personne qui tente de se connecter que toutes les activités sont enregistrées sur ce serveur.

Modifier le message avant connexion

Contenu :

Il s’agit encore d’un exemple. Libre à vous de modifier ce message.

4.4) Redémarrer le service ssh

4.5) Vérifier la connexion ssh

Relancer une connexion ssh pour vérifier que vous êtes toujours autorisé à vous connecter à votre serveur. Dans mon cas, l’exemple serait :

-p : Spécifier un port réseau différent de 22
-i : Spécifier une clé privée si ce n’est pas ~/.ssh/id_rsa. (Je n’étais donc pas obligé d’utiliser -i dans mon cas précis)


5) Configuration du pare-feu d’un VPS

Installer le pare-feu ufw pour sécuriser le serveur et le configurez pour refuser par défaut toutes les connexions entrantes.
Configurer ensuite des règles pour autoriser les connexions entrantes pour les services installés sur le serveur.

5.1) Installer ufw

5.2) Interdire par défaut toutes les connexions entrantes avec ufw

5.3) Configurer des règles entrantes spécifiques pour vos services avec ufw

Les règles qui vont suivre sont des exemples. Ajustez-les en fonction de votre situation.

5.3.1) Autoriser le trafic entrant http et https avec ufw

http et https sont des alias pour configurer le flux web avec ufw. La règle IPv6 sera configurée. Le protocole UDP ne sera pas configuré, uniquement TCP.

5.3.2) Autoriser le trafic entrant ssh (personnalisé) avec ufw

Pour rappel : 48322 est le port d’écoute personnalisé choisi un peu plus haut pour le service ssh.

5.3.3) Autoriser la connexion ssh uniquement pour des adresses IP spécifiques

from doit être suivi de l’adresse ip publique autorisée à se connecter sur le port 48322.
Vous pouvez créer la règle équivalent avec l’IPv6.

Remarque : Remplacez l’adresse IP et le port dans la commande précédente. Pensez à supprimer la règle précédente (Étape 5.3.2) si elle a été créée : sudo ufw delete allow 48322.

Attention : Si vous êtes dans l’incapacité de vous connecter à partir de cette IP Publique source (Ex : Adresse IP FAI non-fixe, Déménagement, changement de FAI, coupure réseau etc…). Assurez-vous de disposer d’une alternative, comme un terminal web ou un mode d’urgence dans le panneau de contrôle de votre hébergeur VPS.

5.4) Activer le pare-feu ufw

5.5) Vérifier les règles de pare-feu

Résultat :

5.6) Vérifier la connexion ssh

Relancer une connexion ssh pour vérifier que vous êtes toujours autorisé à vous connecter à votre serveur. Dans mon cas, l’exemple serait :

-p : Spécifier un port réseau différent de 22
-i : Spécifier une clé privée ce n’est pas ~/.ssh/id_rsa. (Je n’étais donc pas obligé d’utiliser -i dans mon cas précis)


Voilà ! C’est terminé !

Vous avez enfin sécurisé votre VPS.
Il ne vous reste plus qu’à :

  • Configurer des règles dans le pare-feu ufw
  • Dormir sur vos 2 oreilles
  • Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés

En savoir plus sur Jj World

Subscribe to get the latest posts sent to your email.

1 Trackbacks & Pingbacks

  1. Hostinger - Créer son propre VPS - Français - Jj World

Laisser un commentaire