DOC
Accueil/ Projets/ VPS Hostinger - Stack ENGWE/ 01 - Serveur initial : utilisateur, SSH, pare-feu, durcissement

01 - Serveur initial : utilisateur, SSH, pare-feu, durcissement

Objectif : ne plus jamais utiliser root en direct, sécuriser l'accès SSH, et préparer le terrain. À faire une seule fois, en tout premier.


1. Récupérer les infos du VPS

Dans le panneau Hostinger (hPanel → VPS), note :

  • l'adresse IP du VPS (IPv4),
  • le mot de passe root initial (ou la clé si tu en as fourni une à la création).

1bis. ⚠️ Vérifier le pare-feu hPanel (en plus d'UFW)

Piège fréquent chez Hostinger : en plus du pare-feu UFW sur le serveur, hPanel propose un pare-feu cloud séparé (hPanel → VPS → Firewall), appliqué devant le serveur. Si un profil de pare-feu est attaché à ton VPS avec des règles restrictives, un port peut être ouvert dans UFW et quand même injoignable depuis Internet - c'est la cause n°1 d'un « Coolify ne répond pas sur IP:8000 ».

Va dans hPanel → VPS → Firewall :

  • Aucun pare-feu attaché → rien à faire, tout passe (par défaut).
  • Un pare-feu est attaché → vérifie/ajoute des règles TCP autorisant au minimum : 22 (SSH), 80 (HTTP), 443 (HTTPS), et temporairement 8000 (UI Coolify pendant l'installation, voir 06-coolify.md). Source : 0.0.0.0/0 (n'importe où) sauf si tu veux restreindre le SSH à ton IP.

Garde ça en tête à chaque nouveau port que tu ouvres côté UFW plus tard : il faut aussi l'ouvrir ici si un pare-feu hPanel est attaché.

2. Générer une clé SSH sur TON PC (Windows)

Si tu n'as pas déjà de clé SSH, ouvre PowerShell sur ta machine :

ssh-keygen -t ed25519 -C "engwe-vps"
  • Appuie sur Entrée pour l'emplacement par défaut (C:\Users\<toi>\.ssh\id_ed25519).
  • Mets une passphrase (recommandé) ou laisse vide.

Affiche ta clé publique (c'est elle qu'on met sur le serveur) :

Get-Content $HOME\.ssh\id_ed25519.pub

Copie toute la ligne (commence par ssh-ed25519 AAAA...). Tu en auras besoin à l'étape 4.

3. Première connexion en root

ssh root@IP_DU_VPS

Accepte l'empreinte (yes) et entre le mot de passe root.

4. Lancer le script de durcissement

Sur le VPS (en root), crée le script. Le plus simple : ouvre nano et colle le contenu de scripts/01-bootstrap.sh :

nano 01-bootstrap.sh

Avant de sauvegarder, vérifie/édite en haut du fichier :

  • NEW_USER="engwe-seer" - le nom de ton utilisateur non-root,
  • SSH_PUBKEY="..." - colle ta clé publique (étape 2) entre les guillemets.

Sauvegarde (Ctrl+O, Entrée) et quitte (Ctrl+X). Puis :

chmod +x 01-bootstrap.sh
./01-bootstrap.sh

Le script crée l'utilisateur, installe ta clé (pour lui et pour root), désactive le mot de passe en SSH (root ne reste joignable que par clé, jamais par mot de passe), configure UFW (ports 22/80/443), fail2ban, les mises à jour auto et un swap de 2 Go.

Pourquoi laisser root joignable par clé plutôt que le couper totalement ? Parce que Coolify (doc 06) a besoin de gérer son propre serveur via SSH en root - sans ça, son proxy et sa validation interne échouent en cascade avec des erreurs Permission denied. Ça reste sûr : sans mot de passe root valide et sans ta clé privée, personne ne peut s'y connecter. Toi, au quotidien, tu continues d'utiliser exclusivement ton utilisateur non-root.

5. ⚠️ Vérifier AVANT de fermer la session root

Ouvre un NOUVEAU PowerShell (garde l'ancien ouvert au cas où) :

ssh engwe-seer@IP_DU_VPS

Tu dois te connecter sans mot de passe (grâce à la clé). Vérifie sudo :

sudo whoami      # doit répondre : root

✅ Si ça marche, tu peux fermer la session root. À partir de maintenant tu te connectes toujours avec ssh engwe-seer@IP_DU_VPS.

❌ Si la connexion engwe-seer@ échoue, ne ferme pas la session root : relis la variable SSH_PUBKEY (clé mal collée = cause n°1) et corrige /home/engwe-seer/.ssh/authorized_keys.

6. (Confort) Alias de connexion côté Windows

Pour taper juste ssh engwe-vps, crée/édite C:\Users\<toi>\.ssh\config :

Host engwe-vps
    HostName IP_DU_VPS
    User engwe-seer
    IdentityFile ~/.ssh/id_ed25519

Vérifications de fin d'étape

sudo ufw status            # doit montrer 22, 80, 443 ALLOW
sudo systemctl status fail2ban --no-pager
free -h                    # doit montrer 2 Go de swap

Depuis ton PC, vérifie aussi que les ports répondent bien de l'extérieur (et pas seulement selon UFW) - utile pour détecter un blocage côté pare-feu hPanel (§1bis) :

Test-NetConnection -ComputerName IP_DU_VPS -Port 22
Test-NetConnection -ComputerName IP_DU_VPS -Port 80

TcpTestSucceeded : True attendu. Si c'est False alors qu'UFW montre le port ALLOW, retourne vérifier hPanel → VPS → Firewall.

➡️ Étape suivante :

🩹 Bloqué sur une erreur ? → 08-erreurs-connues.md