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
- Créer un utilisateur avec des droits restreints
Crée un utilisateur avec des droits restreints
l'ajouter un groupe "docker"
vérification de la connexion ssh
- 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
- 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
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
Refuser les autres connexions entrantes par defaut
Vérification avec la commande nmap
s'il n'y pas d'autres port ouverts
grâce au netstat
on peut voir les services qui tournent
pour désactivé le service j'ai modifié le LLMNR en enlevant le # et en lui donnant la valeur no
- 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
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.
Dans le fichier de configuration jail.local on va rajouter le paramètre enable
qui active la surveillance du service SSH par Fail2ban
maintenant on applique les modifications en redémarrant le service
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
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
J'applique la clé privée au serveur ce qui permet au serveur de reconnaitre la clé lors de la connexion sur le serveur
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
Et maintenant le log dit qu'on peut désormais essayer de se connecté avec la commande ssh -p57839 [email protected]
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é
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.
après je vérifie qu'elle a bien été copiée avec la commande ls
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
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é
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
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
j'ai édité le fichier index.html comme suit
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.
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).
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
Maintenant je vais lancer un container en le mappant sur le port 80 et basé sur mon-image
On voit que la page htlm ne s'affiche pas comme prévu
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
avec la commande chmod
je vais changer les permissions du fichier
après je relance mon container
après on peut voir que le fichier html s'affiche bien dans chrome
Indiquez sur quel VPS un site web a été déployé.