Déploiement
Déploiement • Chapitre 9 : Configuration HTTPS et sécurité

Sécurisation des accès à l'API

Verrouillez les accès à votre API en production : mise en œuvre d'un pare-feu Linux UFW strict, validation rigoureuse des schémas d'entrée (Zod/Joi) et authentification robuste par jetons JWT signés.

🛡️
Pare-feu Système UFW

Fermeture hermétique de tous les ports non nécessaires pour n'exposer que 22, 80 et 443.

🧼
Validation des Données

Sanitisation de chaque champ de requête (Zod) pour éradiquer les injections SQL et NoSQL.

🔑
Jetons JWT Signés

Vérification cryptographique de l'authenticité et de l'expiration du porteur de la requête.

⏱️
Brute-Force Protection

Bannissement temporaire des adresses IP en cas d'échecs répétés de connexion (Fail2ban).

ufw-and-jwt-security.sh
# 1. Configuration hermétique du pare-feu Linux (UFW)
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow 22/tcp comment 'SSH'
$ sudo ufw allow 80/tcp comment 'HTTP'
$ sudo ufw allow 443/tcp comment 'HTTPS'
$ sudo ufw enable
$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
# ✅ Les ports 3306 (MySQL) et 3000 (Node) sont TOTALEMENT fermés à internet !

# 2. Installation de Fail2ban pour bannir automatiquement les attaquants
$ sudo apt install -y fail2ban
$ sudo systemctl enable fail2ban && sudo systemctl start fail2ban

Guide Approfondi & Architecture Système

1. La Défense en Profondeur (Defense in Depth)

La sécurité ne repose jamais sur un seul mécanisme :
  1. Niveau Réseau : Le pare-feu UFW bloque tous les ports non autorisés.
  2. Niveau Serveur Web : Nginx filtre les requêtes malformées et applique le chiffrement HTTPS.
  3. Niveau Applicatif : Le middleware Express valide les tokens JWT et vérifie les permissions de rôles (RBAC).
  4. Niveau Données : La bibliothèque Zod valide que les paramètres correspondent au schéma typé avant d'atteindre la base SQL.

2. Le Rôle Protecteur de Fail2ban

Dès qu'un serveur est visible sur internet, des centaines de robots essaient de forcer le port SSH en testant des milliers de mots de passe.

Fail2ban surveille en continu /var/log/auth.log et les journaux d'erreurs Nginx. Dès qu'une adresse IP échoue 5 fois d'affilée en moins de 10 minutes, Fail2ban ajoute instantanément une règle au pare-feu pour bannir cette IP pendant 24 heures !

Tableau Récapitulatif : Les 4 Niveaux de Défense d'une API de Production

NiveauOutil / TechnologieType de Menace Neutralisée
Couche RéseauPare-feu UFW / IptablesScans de ports, accès direct aux bases de données
Anti-Brute-ForceFail2ban / Rate LimiterBombardement de requêtes, attaques par dictionnaire
Couche TransportCertificat TLS 1.3 Let's EncryptÉcoute clandestine, interception de sessions (MitM)
Couche ApplicativeValidation Zod + JWT cryptographiqueInjections SQL, usurpation d'identité, corruption de données