TP03 : Sécurisation des VPS - Durionleponey/AdminII GitHub Wiki

(utilisation de gpt4o pour la relecture et pour la mise en forme)

Noms des auteurs :

  • De Henau Dudley
  • Gendebien Jonas
  • Clarembaux Robin
    Date de réalisation : février 2025

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

Ci-dessous la checklist avec ce qui est réalisé, les commandes utilisées et la validation.

1.1. Mettre à jour le système d’exploitation

  • a) Réalisé :
    • sudo apt update
    • sudo apt upgrade
  • b) Documentation des commandes :
    • apt update recharge la liste des paquets disponibles.
    • apt upgrade installe les mises à jour.
  • c) Validation :
    • Relancer sudo apt update && sudo apt upgrade ne propose plus de mise à jour.

1.2. Modifier le port d’écoute SSH par défaut

  • a) Réalisé :
    • Éditer le fichier /etc/ssh/sshd_config
      • Décommenter la ligne #Port 22 et remplacer 22 par un autre port libre.
    • sudo systemctl restart sshd
  • b) Documentation des commandes :
    • sudo nano /etc/ssh/sshd_config
    • sudo systemctl restart sshd
  • c) Validation :
    • Sur la machine : sudo ss -ptnlu (vérifie le port d’écoute de sshd).
    • Hors de la machine : nmap -p- <ip_du_vps> (vérifie les ports ouverts).

1.3. Créer un utilisateur avec des droits restreints

  • a) Réalisé :
    • sudo adduser normal
    • Configuration du mot de passe.
    • sudo usermod -aG docker normal (exemple pour l’ajouter au groupe Docker).
  • b) Documentation des commandes :
    • adduser <nom_utilisateur> crée l’utilisateur et demande un mot de passe.
    • 'sudo addgroup <mon_groupe>' crée un groupe sans créer d'utilisateur.
    • usermod -aG <groupe> <utilisateur> ajoute l’utilisateur à un groupe.
  • c) Validation :
    • groups normal pour vérifier son appartenance aux groupes.
    • cat /etc/passwd pour vérifier sa présence.
    • cat /etc/group pour vérifier sa présence.
    • Test de connexion SSH avec l’utilisateur.

1.4. Désactiver l’accès SSH de l’utilisateur root

  • a) Réalisé :
    • Dans /etc/ssh/sshd_config, définir PermitRootLogin no.
    • sudo systemctl restart sshd.
  • b) Documentation des commandes :
    • Idem que précédemment (édition du fichier + restart du service).
  • c) Validation :
    • Tentative de connexion SSH en root → doit être refusée.

1.5. Configurer le pare-feu

  • a) Réalisé :
    • sudo apt-get install iptables (si besoin).
    • Exemple de règles :
      sudo iptables -A INPUT -i lo -j ACCEPT            # Loopback
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # HTTP
      sudo iptables -A INPUT -p tcp --dport 49947 -j ACCEPT
      # Ajouter ici la règle pour votre port SSH custom (ex. 2222) :
      # sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
      
      # Politique par défaut (au besoin) :
      # sudo iptables -P INPUT DROP
      # sudo iptables -P FORWARD DROP
      # sudo iptables -P OUTPUT ACCEPT
      
      sudo iptables-save > /etc/iptables/rules.v4  # Sauvegarde des règles
  • b) Documentation des commandes :
    • iptables -A INPUT -p tcp --dport <port> -j ACCEPT autorise l’accès au port spécifié.
    • iptables-save > /etc/iptables/rules.v4 sauvegarde la configuration.
  • c) Validation :
    • nmap -p- <ip_du_vps> pour vérifier les ports réellement ouverts.

1.6. Installer Fail2ban

  • a) Réalisé :
    • sudo apt update
    • sudo apt install fail2ban -y
    • sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    • Éditer /etc/fail2ban/jail.local :
      bantime = 3h
      maxretry = 3
      [sshd]
      enabled = true
      
    • sudo systemctl restart fail2ban
  • b) Documentation des commandes :
    • fail2ban-client status pour voir l’état global.
    • fail2ban-client status sshd pour voir les IP bannies, etc.
  • c) Validation :
    • Faire plusieurs tentatives de connexion SSH incorrectes.
    • Vérifier fail2ban-client status sshd.

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

2.1. Génération et installation de la clé

  • a) Réalisé :

    • Création du dossier :
      mkdir ~/.ssh
      chmod 700 ~/.ssh
    • Génération de la clé :
      ssh-keygen -t ed25519 -a 100
      (Accepter les chemins par défaut ou spécifier un chemin personnalisé)
    • Ajout de la clé publique dans ~/.ssh/authorized_keys :
      cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
      chmod 600 ~/.ssh/authorized_keys
  • b) Documentation des commandes :

    • ssh-keygen -t ed25519 -a 100 crée une paire de clés (publique/privée) plus sécurisée.
    • cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys ajoute la clé publique au fichier d’autorisation.
  • c) Validation :

    • Tester la connexion SSH :
      ssh -i ~/.ssh/id_ed25519 <user>@<ip_du_vps> -p <port_ssh>
    • Connexion réussie sans demande de mot de passe (si le mot de passe est désactivé et la clé configurée).

2.2. Désactivation de l’authentification par mot de passe (optionnel)

  • a) Réalisé :

    • Dans /etc/ssh/sshd_config, passer PasswordAuthentication no.
    • sudo systemctl restart sshd.
  • b) Documentation des commandes :

    • nano /etc/ssh/sshd_config
    • sudo systemctl restart sshd
  • c) Validation :

    • Nouvelle tentative de connexion SSH : seule l’authentification par clé doit fonctionner.

3. Prise en main du VPS

Un site web consacré à Crash Bandicoot est déployé sur http://vps-1c1ad1e4.vps.ovh.net/ au moyen de Docker.

⚠️ **GitHub.com Fallback** ⚠️