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.
Fermeture hermétique de tous les ports non nécessaires pour n'exposer que 22, 80 et 443.
Sanitisation de chaque champ de requête (Zod) pour éradiquer les injections SQL et NoSQL.
Vérification cryptographique de l'authenticité et de l'expiration du porteur de la requête.
Bannissement temporaire des adresses IP en cas d'échecs répétés de connexion (Fail2ban).
# 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 fail2banFail2ban 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 !
| Niveau | Outil / Technologie | Type de Menace Neutralisée |
|---|---|---|
| Couche Réseau | Pare-feu UFW / Iptables | Scans de ports, accès direct aux bases de données |
| Anti-Brute-Force | Fail2ban / Rate Limiter | Bombardement de requêtes, attaques par dictionnaire |
| Couche Transport | Certificat TLS 1.3 Let's Encrypt | Écoute clandestine, interception de sessions (MitM) |
| Couche Applicative | Validation Zod + JWT cryptographique | Injections SQL, usurpation d'identité, corruption de données |