I tre intervalli di porte
- 0–1023, note: assegnate dalla IANA ai servizi standard. Su Unix solo root (o un processo con CAP_NET_BIND_SERVICE) può ascoltare su di esse.
- 1024–49151, registrate: assegnate su richiesta a produttori e progetti (3306 MySQL, 5432 PostgreSQL, 6379 Redis). Qualsiasi utente può usarle.
- 49152–65535, dinamiche / effimere: usate per il lato client delle connessioni. Linux in realtà usa 32768–60999 di default (
net.ipv4.ip_local_port_range).
Porte che non devono mai essere esposte a Internet
Redis (6379), Memcached (11211), MongoDB (27017), Elasticsearch (9200), l’API Docker (2375), etcd (2379) e la maggior parte dei database arrivano senza autenticazione o con default deboli, e vengono scansionati di continuo. Collegali a 127.0.0.1 o a un’interfaccia privata, mettili dietro una VPN o una regola di firewall, e non contare mai sull’oscurità. Shodan li indicizza tutti nel giro di ore.
Scoprire cosa è in ascolto
ss -tulpn # Linux: socket TCP/UDP in ascolto con i nomi dei processi
sudo lsof -i :8080 # quale processo possiede la porta 8080
nc -zv host 22 # una porta remota è aperta? Una porta «aperta» in ss ma irraggiungibile dall’esterno è di solito bloccata da un firewall (ufw, nftables, un security group cloud, o Cloudflare che fa da proxy solo per 80/443).
Domande
Che differenza c’è tra porte TCP e UDP?
Sono spazi di nomi separati: TCP 53 e UDP 53 sono socket diversi, anche se il DNS li usa entrambi. Un servizio può ascoltare su uno, sull’altro o su entrambi.
Perché non posso usare la porta 80 senza root?
Le porte sotto 1024 sono privilegiate su Unix. Esegui il servizio su una porta alta dietro un reverse proxy, concedi al binario CAP_NET_BIND_SERVICE (setcap), oppure usa l’attivazione via socket di systemd.
Cosa significa «address already in use»?
Un altro processo è già in ascolto su quella porta (ss -tulpn mostra quale), oppure un socket chiuso di recente è ancora in TIME_WAIT. SO_REUSEADDR, o aspettare un minuto, risolve il secondo caso.
Quali porte usa HTTP/3?
UDP 443. HTTP/3 gira su QUIC, che è basato su UDP; i browser lo scoprono tramite l’header Alt-Svc o un record DNS HTTPS.