Un serveur connecté à internet sans pare-feu est sondé par des hackers en moins de 15 minutes. Maîtrisez le pare-feu UFW sous Linux, limitez l'écoute des services aux adresses locales (localhost) et isolez vos bases de données.
Interface simple pour configurer Netfilter/iptables au niveau du noyau Linux.
Seuls 3 ports doivent être ouverts au monde : 22 (SSH), 80 (HTTP) et 443 (HTTPS).
Forcer Node (3000) et MySQL (3306) à n'écouter que sur l'interface de boucle locale.
Déplacer le port 22 vers un port non-standard (ex: 2222) pour éliminer 95% des robots automatisés.
# 1. Réinitialiser et définir la politique par défaut : bloquer tout ce qui entre !
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
# 2. TOUJOURS autoriser SSH en premier (sinon vous vous enfermez dehors !)
$ sudo ufw allow 22/tcp comment 'SSH Access'
# 3. Autoriser les flux web légitimes
$ sudo ufw allow 80/tcp comment 'HTTP Web'
$ sudo ufw allow 443/tcp comment 'HTTPS Web'
# 4. Activer le pare-feu
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
# 5. Vérifier les ports qui écoutent réellement sur la machine
$ sudo ss -tulpn | grep LISTEN
tcp LISTEN 0 511 127.0.0.1:3000 0.0.0.0:* users:(("node",pid=14820))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1024))
tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=1024))
# ✅ Node écoute sur 127.0.0.1 : AUCUN attaquant ne peut l'attaquer directement ! Si vous écrivez app.listen(3000) sans préciser d'IP, Node écoute sur 0.0.0.0 (toutes les interfaces réseau). N'importe qui sur internet peut taper http://IP_DE_VOTRE_SERVEUR:3000 et contourner complètement Nginx, vos règles SSL et vos limites de débit !
La solution : écrivez toujours app.listen(3000, '127.0.0.1') pour que seule la machine locale (Nginx) puisse communiquer avec l'API.
sudo ufw enable : sudo ufw allow 22/tcp au préalable, votre session SSH actuelle sera fermée et vous ne pourrez plus JAMAIS vous reconnecter à votre serveur à distance ! Il faudrait alors passer par la console KVM de secours chez votre hébergeur. | Port | Service Associé | Visibilité Recommandée | Règle UFW |
|---|---|---|---|
| 22 (ou custom) | SSH (Administration console) | Public (protégé par clé SSH) ou restreint à votre IP | ufw allow 22/tcp |
| 80 | HTTP (Redirection vers HTTPS) | Public (mondial) | ufw allow 80/tcp |
| 443 | HTTPS (Trafic web sécurisé) | Public (mondial) | ufw allow 443/tcp |
| 3000 / 8080 | API Node.js / Python / Go | STRICTEMENT INTERNE (127.0.0.1) | BLOQUÉ PAR DÉFAUT |
| 3306 / 5432 | Base MySQL / PostgreSQL | STRICTEMENT INTERNE (127.0.0.1) | BLOQUÉ PAR DÉFAUT |