Ports, firewall et exposition minimale
Chaque port ouvert est une porte : il faut savoir lesquelles existent et pourquoi.
Prérequis (cursus dev) : sockets et ports, observer les ports.
Pourquoi
Chaque port ouvert est une porte : il faut savoir lesquelles existent et pourquoi. La plupart des intrusions ne sont pas des exploits hollywoodiens mais des services exposés par inadvertance (une base, un dashboard, voire le daemon Docker lui-même sur 2375 !).
Concepts
ss -tlnp:-tTCP,-len écoute (listen),-nnumérique (pas de résolution DNS, plus rapide et exact),-pprocessus propriétaire. À savoir lire :0.0.0.0:5432= écoute sur toutes les interfaces (exposé),127.0.0.1:5432= local seul (sain).docker-proxy: petit processus créé par Docker pour chaque port publié (ports:). Le voir dansssalors que tu n'as rien publié = unports:oublié.- Deny-first : politique « tout fermé par défaut, on ouvre au cas par cas ». L'inverse (tout ouvert sauf exceptions) finit toujours en passoire.
Exemple : UFW
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw allow 22/tcp && sleep 2 && ufw enable
Ordre de sécurité à distance : allow 22 d'abord, test d'une 2e session, puis enable. Comme pour sshd : jamais de changement réseau sans porte de sortie. Vérification depuis l'extérieur :
nmap -Pn -F serveur # nmap = scanner de ports ; -Pn sans ping, -F top 100 ports
Objectif : 22, 80, 443 — et rien d'autre. Ce que tu vois, l'attaquant le voit.
Cas réel
Un dashboard d'admin exposé sans auth sur un port exotique « parce que personne ne le devinera » : les scanners trouvent tous les ports en quelques minutes. Sécurité par l'obscurité = pas de sécurité. Soit c'est derrière le proxy avec auth, soit ça n'écoute qu'en local.
Pièges
- Activer UFW sans la règle 22 : déconnexion immédiate, retour via console provider.
- Oublier l'IPv6 :
ufwgère les deux, mais un service qui n'écoute qu'en IPv4 pendant que le DNS annonce de l'IPv6 = downtime mystérieux. - Scanner uniquement en local : le firewall vu de l'intérieur n'est pas celui vu de l'extérieur.
À retenir
ss pour voir, deny-first, 22/80/443 seulement, vérification depuis dehors.