TP3 - DeumeniDerval/admin-2 GitHub Wiki

TP3 : Sécurisation des VPS

Noms des auteurs : DEUMENI TCHAMENI DERVAL Date de réalisation : 28/02/2024

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

Dans la TODO list ci-dessous, merci d'indiquer ce qui est réalisé et de documenter les commandes que vous avez utilisées (NOTE : Attention à ne pas mettre d'informations sensibles tel que des mots de passe si votre Wiki est accessible publiquement!.

Indiquez également soigneusement, pour chaque point, comment vous avez validé son implémentation.

  • Mettre à jour le système d'exploitation
  • Modifier le port d'écoute SSH par défaut. Le port d'ecoute a été modifié et est maintenant sur le port 57839

image

  • Créer un utilisateur avec des droits restreints

Crée un utilisateur avec des droits restreints

image

l'ajouter un groupe "docker"

image

vérification de la connexion ssh

image

  • Désactiver l'accès SSH de l'utilisateur root

Apres avoir tapé la commande sudo nano /etc/ssh/sshd_config on peut dans le fichier de configuration ssh activé ou desactivé l'acces ssh de root

image

  • Configurer le pare-feu : Indiquez les règles choisies (et mettez les à jour au fur et à mesure du semestre)

Apres avoir installé le pare-feu ufw

image

Je l'active avec la commande sudo ufw enable Apres il faut autoriser les connexion ssh et dns respectivement sur les ports 57839 et 53

image

image

Refuser les autres connexions entrantes par defaut

image

Vérification avec la commande nmap s'il n'y pas d'autres port ouverts

image

grâce au netstat on peut voir les services qui tournent

image

pour désactivé le service j'ai modifié le LLMNR en enlevant le # et en lui donnant la valeur no

image

  • Installer Fail2ban et le configurer pour éviter les attaques brute-force sur SSH. Indiquez les règles choisies (et mettez les à jour au fur et à mesure du semestre)

Installation de Fail2ban

image

En suite il faut modifier le fichier de configuration de Fail2ban jail.conf on commence par faire une copie du fichier qui va être modifier en l'appelant jail.local pour qu'en cas de mise à jour les modifications ne sont pas perdues.

image

Dans le fichier de configuration jail.local on va rajouter le paramètre enable qui active la surveillance du service SSH par Fail2ban

image

maintenant on applique les modifications en redémarrant le service

image

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

On va utilisez la commande ssh-keygen pour créer une paire de clés basé sur la methode ed25519 et après ajouté la passphrase qui sera demander a la connexion sur le serveur

image

on pet voir que la clé privée est enregistrée dans ce répertoire /home/debian/.ssh/id_ed25519 et la clé publique ici /home/debian/.ssh/id_ed25519.pub

avec la commande cat on peut voir la clé public image

J'applique la clé privée au serveur ce qui permet au serveur de reconnaitre la clé lors de la connexion sur le serveur

image

la commande ssh-copy-id permet de copier la clé sur le serveur et on peut voir sur la capture que la clé a été crée après avoir entré le mot de passe

image

Et maintenant le log dit qu'on peut désormais essayer de se connecté avec la commande ssh -p57839 [email protected]

image

on peut voir que le mot de passe de l'utilisateur n'est plus demandé mais plustôt le mot de passe de la clé image

Maintenant je dois copié la clé en local pour pouvoir me connecter depuis le shell. pour cela j'utilise la commande scp pour copié la clé sur en local.

image

après je vérifie qu'elle a bien été copiée avec la commande ls

image

Apres l'avoir copié en local je dois la sécurité parce qu'une clé privée ne doit pas être accessible à tout le monde. pour cela je vais restreindre les permission avec la commande icacls

cette commande supprime l'héritage des permissions du dossier et applique uniquement les permissions spécifiées manuellement et accorde le full contrôle à l'utilisateur derva

image

Maintenant je peux me connecter sans utiliser le mot de passe mais plutôt le passphrase for key que j'ai à la création de clé

image

Indiquez si cette étape est mise en place, et documentez vos commandes.

3. Prise en main du VPS

Test sur le container ¨hello-world¨ avec la commande docker run

image Déploiement de la page web statique vers un container Docker:

je commence par crée un répertoire mon-website et a l'intérieure je crée un fichier index.html

image

j'ai édité le fichier index.html comme suit

image

Maintenant je vais créer une image sur base d'un Dockerfile dans le même répertoire que le fichier index.html pour lancer un container basé sur cette image après.Pour ca je dois crée un fichier dockerfiles avec la commande nano et l'éditer.

image

les intructions que j'ai mis dans le dockerfiles sont les suivante :

Télécharge et utilise la dernière version de l’image officielle de Nginx (FROM).

Copie le fichier index.html dans le répertoire où Nginx sert les pages web (COPY).

image

Maintenat je dois construire l'image avec la commande Docker build . en précisant le nom de l'image et pour ca je dois être dans le répertoire ~/mon-website

image

Maintenant je vais lancer un container en le mappant sur le port 80 et basé sur mon-image

image

On voit que la page htlm ne s'affiche pas comme prévu

image

On peut voir au niveau des permissions que seul l'utilisateur root a accès au fichier index.html

le fichier a été ajouté avec l’utilisateur root car docker copie les fichiers en tant que root par défaut

image

avec la commande chmod je vais changer les permissions du fichier

image

après je relance mon container

image

après on peut voir que le fichier html s'affiche bien dans chrome

image

Indiquez sur quel VPS un site web a été déployé.

http://54.36.183.214