TP3 : Sécurisation des VPS

Introduction

Chacun d’entre vous a reçu par mail les informations de connexion à son VPS. Ce VPS servira tout au long du semestre pour la réalisation des TPs et la mise en oeuvre de services sur Internet.

Comme vous le savez, mettre des ressources sur l’Internet public comporte des risques importants au niveau de la sécurité. Il est donc essentiel de mettre en oeuvre des contre-mesures pour protéger votre VPS. Cela va être l’objectif de ce troisième labo.

A la fin de ce TP, vous devez être capable de :

  • mettre en oeuvre l’authentification SSH par clés
  • sécuriser les utilisateurs Linux (sudo, root)
  • comprendre l’utilisation d’un parefeu iptables
  • mettre en place le système de prévention d’intrusion Fail2Ban
  • définir un fichier docker-compose décrivant une infrastructure de containers et ses paramètres.

Lectures préalables

Les éléments théoriques liés à ce TP sont présentés dans le chapitre 4 : Introduction à la cryptographie du support de cours.

1. Mise en oeuvre de la procédure de sécurisation proposée par OVH

Dans sa documentation, le fournisseur hébergeant vos VPS propose une procédure complète et claire pour sécuriser vos VPS. Nous allons donc tout simplement la mettre en oeuvre.

Voici un récapitulatif des étapes à réaliser dans ce tutoriel, avec quelques remarques complémentaires :

  • Mettre à jour le système d’exploitation
  • Modifier le port d’écoute SSH par défaut. Cela vous amènera à modifier la configuration du serveur SSH : vous verrez que cela est similaire à ce que vous avez fait au premier semestre dans les TPs Admin I.
  • Créer un utilisateur avec des droits restreints : vous travaillerez au quotidien de préférence à partir de cet utilisateur (principe du moindre privilège). Notes :
    • Ajoutez ce nouvel utilisateur au groupe “docker” pour vous faciliter la vie par la suite.
    • Vérifiez bien que ce nouvel utilisateur peut se connecter en SSH avant d’effectuer l’étape suivante!
  • Désactiver l’accès SSH de l’utilisateur root
  • Configurer le pare-feu : dans un premier temps, contentez-vous de laisser passer le traffic vers votre port SSH et vers les ports DNS. Nous rajouterons d’autres ports par après. Note : Le tutoriel OVH propose d’utiliser iptables, mais n’hésitez pas à lui préférez ufw, qui est nettement plus facile d’utilisation.
    • Utilisez nmappour vérifier que votre pare-feu fonctionne et qu’il n’y a pas de ports non nécessaires encore accessibles.
    • netstatpeut également vous être utile pour identifier des services qui tournent de manière superflues : une fois identifiés, si vous êtes sûr qu’ils sont inutiles, vous pouvez les éteindre.
  • Installer Fail2ban et le configurer pour éviter les attaques brute-force sur SSH. Vous rajouterez ultérieurement d’autres services au fur et à mesure de leur mise en place.

Les deux dernières étapes listées dans le tutoriel ne seront pas réalisables car vous n’avez pas accès à l’interface de gestion OVH. Elles ne sont donc pas reprises ici.

2. Mise en place de l’authentification SSH par clé

En plus des contre-mesures proposées dans le tutoriel ci-dessus, nous vous demandons également de mettre en place l’authentification par clé pour SSH, et de désactiver l’authentification par mot de passe, afin de renforcer la sécurité. L’utilisation de clés SSH est fréquente dans le cadre de l’administration de serveurs, c’est donc une technique qu’il est important de maîtriser.

A nouveau, nous nous baserons sur la documentation OVH, en suivant leur tutoriel Créer et utiliser des clés SSH. Vous pouvez vous arrêter avant l’étape impliquant la gestion de clés dans l’espace client, puisque vous n’avez pas accès à ce dernier.

3. Prise en main du VPS

Une fois l’accès à votre VPS sécurisé, vous pouvez commencer à l’utiliser.

  • Docker est normalement pré-installé sur le VPS : vérifiez-le par exemple en testant l’exemple “Hello World” du TP1.
  • Ensuite, essayez de déployer un site web statique dans un container Docker, et faites en sorte de que ce site web soit joignable publiquement, en utilisant l’adresse IP de votre VPS.