Come controllare le porte aperte su Linux: guida completa 2026

Terminale Linux che mostra le porte aperte con i comandi ss e netstat

Sapere come verificare le porte aperte su Linux è una competenza fondamentale per chiunque gestisca server, risolva problemi di rete o voglia rafforzare la sicurezza del sistema. Una porta aperta è essenzialmente un ingresso nel tuo sistema - e se non sai quali ingressi sono aperti, non puoi proteggerli adeguatamente. Che tu stia eseguendo un web server su Ubuntu, gestendo un VPS o diagnosticando un problema di connettività, elencare le porte aperte ti dà un quadro chiaro di ciò che il tuo sistema espone alla rete. Questa guida illustra quattro metodi pratici, spiega come filtrare i risultati e mostra come chiudere le porte di cui non hai bisogno.

Punti chiave:

  • Il comando ss è il metodo moderno e più veloce per elencare le porte aperte su Linux.
  • nmap ti permette di scansionare le porte da una prospettiva esterna, mostrando ciò che un attaccante vedrebbe realmente.
  • Usa lsof per identificare immediatamente quale processo sta usando una porta specifica.
  • Chiudere le porte non necessarie con ufw o iptables è il modo più diretto per ridurre la superficie di attacco.

Perché controllare le porte aperte su Linux

Ogni servizio in esecuzione sulla tua macchina Linux è in ascolto su una o più porte. SSH è in ascolto sulla porta 22, HTTP sulla porta 80, HTTPS sulla porta 443. Ma dopo mesi di installazioni e rimozioni di software, i server spesso si ritrovano con porte aperte che nessuno ha configurato intenzionalmente. Un daemon di database dimenticato in ascolto sulla porta 5432 senza una regola firewall è un rischio reale che ha già causato violazioni di dati.

Verificare le porte aperte su Linux ti aiuta a:

  • Fare un audit dei servizi effettivamente in esecuzione ed esposti alla rete.
  • Diagnosticare perché un'applicazione non riesce a connettersi a un altro servizio.
  • Verificare che le regole del firewall funzionino come previsto.
  • Prepararsi per un audit di sicurezza o un penetration test.

I metodi descritti di seguito coprono sia l'ispezione locale (ciò che la macchina stessa riporta) sia la scansione esterna (ciò che un host remoto può vedere). Entrambe le prospettive sono importanti.

Metodo 1: Comando ss (Moderno, Consigliato)

Il comando ss (socket statistics) ha sostituito netstat sulla maggior parte delle distribuzioni Linux moderne. È più veloce, più dettagliato e incluso nel pacchetto iproute2, che viene installato di default su Ubuntu, Debian, CentOS e Fedora.

Per elencare tutte le porte aperte con i relativi nomi di processo, esegui:

sudo ss -tulnp

Spiegazione dei flag:

  • -t - mostra i socket TCP
  • -u - mostra i socket UDP
  • -l - mostra solo i socket in ascolto
  • -n - mostra le porte in formato numerico invece dei nomi dei servizi
  • -p - mostra il processo che utilizza ogni socket

Esempio concreto: Su un server Ubuntu con Nginx e PostgreSQL appena installati, l'output potrebbe essere simile a questo:

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0       128     127.0.0.1:5432       0.0.0.0:*          users:(("postgres",pid=5678,fd=5))
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=910,fd=3))

Nota che PostgreSQL è associato solo a 127.0.0.1, il che significa che non è raggiungibile dall'esterno. SSH e Nginx sono associati a 0.0.0.0, ovvero accettano connessioni da qualsiasi IP. Questo singolo output ti dice molto sulla tua esposizione alla rete.

Per un riferimento completo di tutte le opzioni di ss, consulta la pagina man ufficiale di ss.

Metodo 2: Comando netstat (Legacy ma ancora diffuso)

Il comando netstat fa parte del vecchio pacchetto net-tools. Non viene più installato di default su molte distribuzioni, ma rimane ampiamente utilizzato ed è utile conoscerlo, soprattutto quando si lavora su sistemi più datati.

Installalo se necessario:

sudo apt install net-tools   # Debian/Ubuntu
sudo yum install net-tools   # CentOS/RHEL

Per elencare le porte aperte su Linux con netstat:

sudo netstat -tulnp

I flag hanno lo stesso significato di ss. Il formato dell'output è leggermente diverso, ma fornisce le stesse informazioni di base: protocollo, indirizzo locale, porta e processo proprietario.

Un limite pratico: su server molto trafficati con migliaia di connessioni, netstat può risultare notevolmente più lento di ss. Per le attività quotidiane su un server tipico, la differenza è trascurabile.

Metodo 3: Scansione con nmap (Prospettiva esterna)

Gli strumenti descritti finora mostrano ciò che la tua macchina riporta internamente. nmap adotta un approccio diverso: scansiona le porte attraverso la rete, simulando ciò che vedrebbe un attaccante esterno o un client remoto. Questo è fondamentale perché un firewall potrebbe bloccare una porta che ss mostra comunque come in ascolto.

Installa nmap:

sudo apt install nmap   # Debian/Ubuntu
sudo yum install nmap   # CentOS/RHEL

Scansiona un server da un'altra macchina sulla stessa rete:

nmap -sT -p 1-1024 192.168.1.10

Per scansionare le 1000 porte più comuni con rilevamento della versione del servizio:

nmap -sV 192.168.1.10

Il flag -sV tenta di rilevare la versione del software in esecuzione su ogni porta aperta. È utile per identificare servizi obsoleti che necessitano di aggiornamenti.

Importante: Esegui nmap solo su server di tua proprietà o per i quali hai esplicita autorizzazione. Scansionare sistemi di terze parti senza permesso può essere illegale nella tua giurisdizione.

Se hai bisogno di verificare se una porta specifica è raggiungibile dall'esterno della tua rete senza installare nmap, il nostro strumento gratuito Port Checker lo fa istantaneamente, senza alcuna configurazione.

Metodo 4: Comando lsof (Mappatura processo-porta)

Il comando lsof (list open files) tratta i socket di rete come file, coerentemente con la filosofia Linux "tutto è un file". È particolarmente utile quando devi rispondere alla domanda: "Quale processo sta usando la porta 8080?"

Elenca tutte le connessioni di rete:

sudo lsof -i

Trova il processo che utilizza una porta specifica (ad esempio, la porta 3000):

sudo lsof -i :3000

Questo comando è particolarmente comodo quando un'applicazione Node.js di uno sviluppatore occupa una porta e devi identificare e terminare il processo prima di riavviare un servizio.

Come filtrare i risultati per porta, TCP o UDP

L'output grezzo di questi strumenti può essere molto verboso. Ecco i pattern di filtraggio più utili:

Mostra solo le porte TCP in ascolto (ss):

sudo ss -tlnp

Mostra solo le porte UDP (ss):

sudo ss -ulnp

Verifica se una porta specifica è aperta (grep con ss):

sudo ss -tulnp | grep :443

Filtra per porta con nmap:

nmap -p 80,443,8080 192.168.1.10

Questi pattern coprono la grande maggioranza delle esigenze di filtraggio quotidiane. Per la risoluzione di problemi specifici di HTTP sulla porta 80, consulta la nostra Guida alla risoluzione dei problemi HTTP sulla porta 80.

Se usi Windows e hai bisogno dello stesso tipo di guida, dai un'occhiata alla nostra Guida completa per verificare le porte aperte su Windows 2026.

Come chiudere o bloccare una porta con ufw o iptables

Trovare una porta aperta di cui non hai bisogno è solo metà del lavoro. Ecco come chiuderla usando i due strumenti firewall più comuni su Linux.

Usare ufw (Uncomplicated Firewall) - Consigliato per Ubuntu

Blocca il traffico in entrata sulla porta 8080:

sudo ufw deny 8080/tcp

Consenti solo SSH e HTTPS, e nega tutto il resto:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Controlla lo stato attuale del firewall:

sudo ufw status verbose

Usare iptables - Per un controllo avanzato

Blocca tutto il traffico in entrata sulla porta 3306 (MySQL):

sudo iptables -A INPUT -p tcp --dport 3306 -j DROP

Salva le regole in modo che persistano dopo il riavvio:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Per un riferimento approfondito sulla sintassi di iptables e sull'ordinamento delle regole, la documentazione ufficiale di Netfilter è la fonte autorevole.

Suggerimento: Bloccare una porta con ufw o iptables non interrompe il servizio in esecuzione su di essa - impedisce semplicemente alle connessioni esterne di raggiungerlo. Se vuoi fermare completamente il servizio, usa sudo systemctl stop servicename. Per disabilitarlo in modo permanente, esegui anche sudo systemctl disable servicename per evitare che si avvii al riavvio.

Conclusione

Verificare le porte aperte su Linux non richiede strumenti complessi o competenze avanzate. Il comando ss ti offre una visione locale rapida e affidabile. nmap mostra ciò che il mondo esterno può raggiungere. lsof individua con precisione quale processo occupa una porta. E ufw o iptables ti permettono di chiudere tutto ciò che non dovrebbe essere esposto. Eseguire questi controlli regolarmente - soprattutto dopo aver installato nuovo software o modificato le configurazioni di rete - è una delle abitudini più semplici che puoi adottare per mantenere i tuoi server Linux al sicuro. Inizia subito con sudo ss -tulnp e scopri cosa sta effettivamente esponendo il tuo server.

Strumento gratuito Port Checker - verifica se una porta è aperta sul tuo server Linux in pochi secondi

Verifica qualsiasi porta sul tuo server Linux - Istantaneamente

Non sei sicuro che una porta sia davvero raggiungibile dall'esterno? Il nostro strumento gratuito Port Checker scansiona il tuo server da una prospettiva esterna in pochi secondi - senza installazione, senza configurazione.

Prova il nostro Port Checker gratuito →

FAQ - Domande frequenti

Esegui sudo ss -tulnp nel terminale. Questo comando usa il moderno ss per mostrare tutte le porte TCP e UDP in ascolto insieme al nome del processo. È più veloce di netstat ed è disponibile di default sulla maggior parte delle distribuzioni Linux attuali, incluse Ubuntu e Debian.

Entrambi i comandi mostrano le porte aperte e le informazioni sui socket, ma ss è il sostituto moderno di netstat. Legge i dati direttamente dal kernel, rendendolo più veloce e preciso su sistemi con elevato traffico. netstat richiede il pacchetto separato net-tools, che non viene più installato di default su molte distribuzioni.

Usa nmap -p PORT TARGET_IP da un'altra macchina sulla rete. Per un controllo esterno rapido senza installare nulla, usa uno strumento web per la verifica delle porte. Questo approccio testa se la porta è raggiungibile dall'esterno, tenendo conto delle regole firewall che gli strumenti locali come ss non possono riflettere.

Usa sudo lsof -i :PORTA oppure sudo ss -tulnp | grep :PORTA. Entrambi i comandi mostrano il nome del processo e il PID associati a quella porta. Il metodo con lsof è particolarmente chiaro perché elenca il comando, il PID e l'utente in un formato leggibile.

No. Bloccare una porta con ufw o iptables impedisce alle connessioni esterne di raggiungere il servizio, ma il servizio stesso continua a funzionare. Per fermarlo completamente, usa sudo systemctl stop servicename. Per rimuoverlo in modo permanente, esegui anche sudo systemctl disable servicename per evitare che si avvii al riavvio.