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. nmapti permette di scansionare le porte da una prospettiva esterna, mostrando ciò che un attaccante vedrebbe realmente.- Usa
lsofper identificare immediatamente quale processo sta usando una porta specifica. - Chiudere le porte non necessarie con
ufwoiptablesè il modo più diretto per ridurre la superficie di attacco.
Indice dei contenuti
- Perché controllare le porte aperte su Linux
- Metodo 1: Comando ss (Moderno, Consigliato)
- Metodo 2: Comando netstat (Legacy ma ancora diffuso)
- Metodo 3: Scansione con nmap (Prospettiva esterna)
- Metodo 4: Comando lsof (Mappatura processo-porta)
- Come filtrare i risultati per porta, TCP o UDP
- Come chiudere o bloccare una porta con ufw o iptables
- Conclusione
- FAQ - Domande frequenti
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 -tulnpSpiegazione 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/RHELPer elencare le porte aperte su Linux con netstat:
sudo netstat -tulnpI 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/RHELScansiona un server da un'altra macchina sulla stessa rete:
nmap -sT -p 1-1024 192.168.1.10Per scansionare le 1000 porte più comuni con rilevamento della versione del servizio:
nmap -sV 192.168.1.10Il 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 -iTrova il processo che utilizza una porta specifica (ad esempio, la porta 3000):
sudo lsof -i :3000Questo 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 -tlnpMostra solo le porte UDP (ss):
sudo ss -ulnpVerifica se una porta specifica è aperta (grep con ss):
sudo ss -tulnp | grep :443Filtra per porta con nmap:
nmap -p 80,443,8080 192.168.1.10Questi 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/tcpConsenti 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 enableControlla lo stato attuale del firewall:
sudo ufw status verboseUsare iptables - Per un controllo avanzato
Blocca tutto il traffico in entrata sulla porta 3306 (MySQL):
sudo iptables -A INPUT -p tcp --dport 3306 -j DROPSalva le regole in modo che persistano dopo il riavvio:
sudo iptables-save | sudo tee /etc/iptables/rules.v4Per 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.
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.