Skip to main content

Sécuriser et Configurer un VPS avec UFW & Nginx Proxy Manager

🔹 Objectifs

✅ Bloquer tous les accès extérieurs sauf :

  • HTTP (80) & HTTPS (443) pour tout le monde (pour les noms de domaine).
  • SSH et autres ports sensibles accessibles uniquement depuis tes IPs autorisées.
    ✅ Installer Docker et Nginx Proxy Manager.
    ✅ Pointer ton domaine vers ton VPS pour gérer les accès.

1️⃣ Configurer le pare-feu UFW

1.1 - Installer UFW (si ce n'est pas fait)

apt update && apt install ufw -y

1.2 - Bloquer tout trafic entrant par défaut

ufw default deny incoming
ufw default allow outgoing

1.3 - Autoriser uniquement tes IPs à accéder aux services sensibles

Remplace 100.100.10.11, 100.100.10.12, 100.100.10.13 par tes adresses IP autorisées.

ufw allow from 100.100.10.11
ufw allow from 100.100.10.12
ufw allow from 100.100.10.13

1.4 - Autoriser uniquement les ports nécessaires

📌 Autoriser HTTP (80), HTTPS (443) et l’interface de Nginx Proxy Manager (81) pour tout le monde :

ufw allow 80   # HTTP
ufw allow 443  # HTTPS
ufw allow 81   # Interface Nginx Proxy Manager

📌 Autoriser SSH uniquement pour tes IPs privées :

ufw allow from 100.100.10.11 to any port 22
ufw allow from 100.100.10.12 to any port 22
ufw allow from 100.100.10.13 to any port 22

1.5 - Empêcher UFW de bloquer le traffic interne

ufw allow from 172.16.0.0/12

1.6 - Activer UFW et vérifier les règles

ufw enable
ufw status verbose

🔥 Ton serveur est maintenant sécurisé :

  • Tout est bloqué sauf les ports web (80, 443, 81) et l'accès SSH restreint à tes IPs.

2️⃣ Installer et Configurer Nginx Proxy Manager

2.1 - Créer un dossier pour Nginx Proxy Manager

mkdir -p /opt/npm && cd /opt/npm

2.2 - Créer le fichier docker-compose.yml

nano docker-compose.yml

Ajoute ce contenu :

services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx_proxy_manager
    restart: unless-stopped
    ports:
      - "80:80"     # HTTP
      - "443:443"   # HTTPS
      - "81:81"     # Interface d'administration
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

2.3 - Démarrer Nginx Proxy Manager

docker-compose up -d

2.4 - Vérifier que le conteneur tourne

docker ps

3️⃣ Configurer le Domaine

3.1 - Ajouter les enregistrements DNS

Sur ton registrar (OVH, Cloudflare, Namecheap, etc.), configure les entrées DNS :

  • A Record pour pointer vers l’IP du VPS :

    example.com → 100.100.10.10
    
  • CNAME Record (si tu veux un sous-domaine) :

    www.example.com → example.com
    

📌 Attends quelques minutes/heures que la propagation DNS se fasse.


4️⃣ Configurer les Redirections dans Nginx Proxy Manager

4.1 - Accéder à l'interface web

👉 Ouvre http://100.100.10.10:81 dans ton navigateur.

4.2 - Se connecter

Identifiants par défaut :

  • Email : admin@example.com
  • Mot de passe : changeme

⚠️ Change immédiatement ton mot de passe !

4.3 - Ajouter une redirection avec SSL

1️⃣ Dans Nginx Proxy Manager, va dans Proxy Hosts et clique sur Add Proxy Host.
2️⃣ Ajoute un domaine :

  • Domain Name : example.com
  • Forward Hostname/IP : l’IP locale de ton service
  • Forward Port : le port du service (ex : 3000 pour une app, 8080 pour un serveur web, etc.)
  • Access List : Laisse vide (optionnel)
    3️⃣ Active SSL avec Let's Encrypt :
  • Coche "Enable SSL"
  • Coche "Force SSL"
  • Clique sur "Request a new SSL Certificate"

📌 Après validation, accède à https://example.com et teste !


5️⃣ Tester et Vérifier

✅ Vérifie que https://example.com fonctionne bien.
✅ Vérifie que l’accès SSH est bien restreint à tes IPs autorisées :

ufw status verbose

✅ Vérifie que les services Docker tournent correctement :

docker ps

✅ Teste si l’IP du serveur est bloquée en essayant d’accéder directement à http://100.100.10.10.


🎯 Résumé Final

🔥 Sécurité 🚀 Accès Web 🛠️ Outils
SSH limité à tes IPs Sites accessibles via noms de domaine Docker installé
Ports 80, 443, 81 ouverts pour tout le monde SSL automatique avec Let's Encrypt Nginx Proxy Manager opérationnel
Tous les autres ports bloqués Redirections faciles via Proxy Manager Pare-feu UFW actif

Commandes utiles pour UFW

Liste des règles

ufw status numbered

Effacer une règle par son numéro (par ex 7)

ufw delete 7