Come controllare porte aperte su router e IP pubblico

Come scoprire quali porte sono aperte su IP pubblico e router collegato alla rete Internet. I migliori strumenti gratuiti per procedere.

In informatica e in particolare quando si parla di reti si utilizza frequentemente il termine porta. Le porte sono “punti di accesso” che vengono utilizzati dai sistemi collegati alla rete per stabilire connessioni verso altri host: possono essere PC tradizionali, smartphone, tablet, smart TV, server NAS, stampanti, dispositivi per l’Internet delle Cose, apparecchiature industriali e così via. Tutto ciò che ha una scheda di rete Ethernet o WiFi.

Le connessioni di rete vengono stabilite ricorrendo ad una delle 65.535 porte di comunicazione disponibili: spetta poi al sistema operativo associare a ciascuna porta un punto di contatto o socket utilizzato da uno o più applicativi per inviare e ricevere dati.

Cosa significa avere porte aperte

Porte aperte sono porte di comunicazione che risultano esposte e sulle quali è in ascolto un componente server, pronto per gestire le richieste di connessione provenienti da altri dispositivi collegati in rete locale o da remoto. Ogni porta è contraddistinta da un numero identificativo e su ciascuna di essere possono essere eventualmente instaurate connessioni TCP o UDP.

Connessioni TCP o UDP sulle porte aperte

Sulle porte possono essere effettuate connessioni TCP (Transmission Control Protocol) o UDP (User Datagram Protocol) a seconda del tipo di protocollo di trasporto utilizzato per il trasferimento dei dati.

TCP è un protocollo di comunicazione affidabile, che utilizza una connessione orientata al flusso per garantire la consegna dei dati senza errori. Le porte TCP sono utilizzate per le comunicazioni che richiedono un flusso di dati affidabile, come ad esempio la navigazione web, il download di file e l’invio di email.

UDP, invece, è un protocollo di comunicazione non affidabile, che non garantisce la consegna dei dati né l’ordine in cui vengono ricevuti. Le porte UDP sono utilizzate per le comunicazioni in cui la velocità è più importante dell’affidabilità: si pensi alla trasmissione di dati audio e video in tempo reale (streaming, VoIP, gaming online,…). In questi casi perdere qualche pacchetto dati durante l’invio o la ricezione delle informazioni non ha alcuna importanza.

Parlando della suite di protocolli TCP/IP abbiamo brevemente messo a fuoco le principali differenze con UDP.

Controllare porte aperte con Windows e Netstat

Il comando netstat -na, impartito al prompt dei comandi di Windows, permette di stabilire quali connessioni di rete stanno avendo luogo e quali porte sono poste in ascolto (“listening“) in attesa di ricevere richieste di collegamento.

Ciascuna quadrupla (IP:porta, IP:porta) restituita dal comando indica l’indirizzo IP sorgente (solitamente l'<a href="indirizzo IP privato associato al computer nell’ambito della rete locale, la porta utilizzata su tale sistema, l’indirizzo IP di destinazione e la porta alla quale ci si è connessi.

La presenza dei valori 80 e 443, ad esempio, suggerisce che ci si è connessi ad un server web utilizzando rispettivamente i protocolli HTTP e HTTPS.

Come controllare porte aperte su router e IP pubblico

Nell’esempio in figura abbiamo chiesto di estrarre solamente le connessioni HTTPS in corso sulla porta 443.

Usando il comando netstat -fa gli indirizzi remoti vengono automaticamente risolti quindi, ove possibile, non viene visualizzato soltanto l’indirizzo IP numerico. La procedura di risoluzione inversa non è però istantanea e l’output viene generato con un po’ di attesa.

Porte aperte visibili sulla rete locale e sull’IP pubblico

Non esiste una pericolosità intrinseca nell’utilizzare specifiche porte di comunicazione. È semmai importante verificare quali e quante porte sono aperte in ingresso accettando le richieste di connessione provenienti dall’esterno.

Sia quando si allestisce un server, sia quando si accede alla rete Internet utilizzando un router “consumer” o un prodotto professionale è importante controllare porte aperte sul router e sull’IP pubblico.

Se si configura un server Web sulla propria macchina è normale che esso debba accettare il traffico di rete in arrivo sulla porta 80. L’importante è che le richieste siano gestite correttamente e che il server non abbia vulnerabilità intrinseche che debbono essere sempre tempestivamente risolte attraverso l’applicazione delle patch di sicurezza rilasciate dai vari produttori software.

Di norma le porte aperte sui singoli dispositivi connessi in rete locale sono visibili solo ed esclusivamente ai client locali. Il firewall e il NAT (Network Address Table) abilitati sul router impediscono che un utente remoto, non collegato alla rete locale, possa connettersi direttamente a una porta aperta su un dispositivo connesso alla LAN.

Quando si installa un componente server su un dispositivo collegato in rete locale che deve restare in ascolto (“listening“) per gestire le richieste di connessione in ingresso, è necessario effettuare sul router il cosiddetto inoltro delle porte o port forwarding perché la porta sia raggiungibile dall’esterno.
È necessario cioè impostare il router affinché inoltri tutto il traffico pervenuto su una determinata porta, sull’interfaccia associata all’IP pubblico (porta WAN), verso il sistema connesso in rete locale ove è in esecuzione il componente server.

Attivando il port forwarding sul router, il componente server installato sulla macchina connessa in rete locale non risponderà più solamente alle richieste di collegamento provenienti dalla LAN ma anche a quelle in arrivo dal “mondo esterno” (rete Internet, WAN).

In un altro articolo abbiamo visto come aprire porte sul router e chiuderle quando non più necessario.

Tanti software utilizzano meccanismi basati sul cloud che sfruttano il concetto di reverse connection: per superare firewall e NAT evitando la necessità di aprire porte in ingresso sul router, questi programmi si servono di connessioni in uscita verso un server remoto che funge da intermediario.

Quante sono le porte e come controllare le porte aperte su router e IP pubblico

Abbiamo già evidenziato come le porte di comunicazione seguano una numerazione a 16 bit: sono complessivamente 65.535 ovvero a 216-1).

Alle prime 1.024 porte (dette “well known ports“) sono associati specifici servizi, alcuni dei quali ben conosciuti, previsti dalla IANA (Internet Assigned Numbers Authority), un organismo che ha responsabilità nell’assegnazione degli indirizzi IP e che dipende da ICANN.

Tra le prime 1.024 porte basti ricordare che per convenzione le 20 e 21 sono utilizzate ad esempio dal protocollo FTP per il trasferimento di file; le 25, 465, 587 dal protocollo SMTP; la 80 da HTTP; la 110 e 995 da POP3; la 443 da HTTPS; la 53 da DNS; le 137-138-139 da NetBIOS e così via.

Un elenco completo delle porte più utilizzate è disponibile sul sito della IANA.
Una lista “commentata” maggiormente leggibile è poi disponibile su Wikipedia.

A partire dal numero di porta in ascolto su un sistema oppure aperta sull’IP pubblico sul quale è attestato il router, è quindi possibile stimare che tipo di servizio è in esecuzione ovvero quale componente server gestisce le richieste di connessione su quella specifica porta. Nulla toglie che un servizio tipicamente in ascolto su una certa porta venga spostato su un’altra porta.

Anche e soprattutto a titolo cautelativo è quindi importante controllare le porte aperte su router e IP pubblico perché malintenzionati e criminali informatici sono spesso soliti effettuare una scansione di vasti gruppi di indirizzi IP alla ricerca di porte aperte sulle quali siano attestati servizi vulnerabili.
Quest’attività si chiama port scanning ed è un po’ un’arma a doppio taglio: di base non è illegale in Europa o in altri Paesi. Tuttavia, l’utilizzo del port scanning può essere considerato illegale o inappropriato in alcune circostanze.
Ad esempio, se la scansione delle porte viene utilizzata con l’intento di scoprire vulnerabilità software al fine di violare la sicurezza di una rete o di un sistema informatico, ciò costituisce un’attività illegale e può essere perseguita penalmente.
Viceversa, se l’attività di scansione delle porte viene svolta con l’autorizzazione del proprietario della rete (penetration testing), ovviamente non sussiste alcun tipo di problema.

Controllare le porte aperte sull’IP pubblico con GRC Shields Up

Uno degli strumenti “storici” per controllare le porte aperte su router e IP pubblico resta GRC Shields Up.

Shields Up è un servizio che controlla sequenzialmente le prime 1.056 porte TCP esaminando l’indirizzo IP pubblico col quale ci si è presentati.

Come controllare porte aperte su router e IP pubblico

Dopo aver fatto clic su Proceed bisogna selezionare All service ports: le porte “invisibili” (stealth) sono evidenziate con il colore verde, in rosso quelle “aperte” (quindi raggiungibili da remoto), in blu quelle visibili ma chiuse.

Sui router utilizzati in azienda o in ufficio la porta 80 dovrebbe essere ad esempio normalmente chiusa (anzi, indicata come “invisibile”) a meno che non si fosse appositamente effettuato il port forwarding verso un sistema server, collegato in rete locale, al quale ci si deve poter connettere – previo inserimento delle credenziali d’accesso – dall’esterno.

Come controllare porte aperte su router e IP pubblico

Nel caso in cui si fossero attivate funzionalità server è quindi bene verificare che siano aperte solo le porte effettivamente associate a servizi che si vogliono davvero rendere accessibili dall’esterno.
Per evitare di esporre porte sull’indirizzo IP pubblico si potrebbe usare un server VPN: configurare un server VPN sul router è generalmente molto semplice e permette di evitare che le porte di comunicazione dei dispositivi connessi in LAN non siano visibili pubblicamente quindi esposti anche a utenti non autorizzati.

Shields Up consente di effettuare una scansione soltanto del proprio IP: non è possibile esaminare indirizzi IP pubblici assegnati a soggetti terzi. Il servizio, inoltre, verifica soltanto le porte TCP e non quelle UDP.

Sempre relativamente al proprio IP pubblico, Shields Up consente comunque di verificare lo stato di qualunque altra porta TCP, anche oltre le prime 1.056 oggetto di controllo.
Digitando il numero di una porta nella casella “You may select any service from among those listed above” quindi cliccando su User specified custom port probe si può accertarne lo stato.

Come controllare porte aperte su router e IP pubblico

Nell’esempio la porta 5060 associata al protocollo SIP (il router gestisce numerazioni in modalità VoIP) risulta aperta e raggiungibile dall’esterno.

Verificare se sono aperte singole porte con YouGetSignal

Il servizio YouGetSignal permette, come Shields Up, di controllare le porte aperte sul router o sull’IP pubblico.

In questo caso è possibile specificare quale porta deve essere controllata mentre cliccando sul link Scan all common ports in basso a destra YouGetSignal verificherà le porte di utilizzo più comune.

Il servizio non fa differenza, diversamente da Shields Up, tra porte chiuse e porte invisibili: le porte vengono indicate o come aperte o semplicemente come chiuse.

È inoltre permesso lanciare anche una scansione di IP pubblici diversi da quello in uso anche se YouGetSignal consente di prendere in esame una porta alla volta oppure una ventina tra le porte di uso più comune (Scan all common ports).

Come controllare porte aperte su router e IP pubblico

Per esigenze più limitate c’è anche Microsoft PortQry che ha il vantaggio di permettere la scansione in Windows delle porte TCP e UDP. Ancora, in alternativa, è possibile avviare un port scan con PowerShell senza installare nulla.

Scansione di qualunque indirizzo IP pubblico con Nmap

Per effettuare una scansione più completa e controllare le porte TCP e UDP aperte si può usare uno strumento come Nmap ovvero il re dei port scanner.

Nmap è un software multipiattaforma: è disponibile nelle versioni per Linux, macOS, Windows e per altri sistemi operativi.

La cosa bella è che con l’integrazione di WSL 2 (Windows Subsystem for Linux) in Windows 10 e Windows 11, è possibile eseguire Linux in Windows e utilizzare Nmap senza limitazioni da riga di comando.

Basta installare ad esempio l’ultima versione della distribuzione Ubuntu con WSL 2, avviarla da Windows quindi impartire i seguenti due comandi così da aggiornarla e installare l’ultima versione di Nmap:

sudo apt update && sudo apt upgrade -y
sudo apt install nmap -y

A questo punto è possibile utilizzare comodamente tutti i comandi di Nmap e sfruttare tutte le potenzialità di questo strumento come spiegato nell’articolo citato in precedenza.

Dopo aver rilevato il proprio indirizzo IP pubblico, il comando seguente effettua una scansione alla ricerca delle eventuali porte aperte TCP/UDP su tale indirizzo:

nmap -sSU -p 1-1023 -v indirizzo-ip

In questo caso vengono scansionate solamente le well-known ports; sostituendo 1023 con 65535. Va tenuto presente che si tratta di un’operazione che può richiedere molto tempo per essere portata a conclusione. Anche perché il sistema che subisce la scansione può porre in essere blocchi temporanei per impedire o comunque rallentare il port scanning.

Seguendo le indicazioni riportate nell’articolo visto in precedenza, è possibile attivare scansioni più o meno veloci ed aggressive.

Al posto di indirizzo-ip va specificato il proprio indirizzo IP pubblico: specificando l’indirizzo privato di un dispositivo locale, Nmap verifica le eventuali porte TCP/UDP aperte presentandosi come un cliente connesso alla medesima LAN. Come si vede nell’esempio in figura, la scansione è stata in questo caso lanciata su un host locale (in questo caso un router WiFi con indirizzo IP 192.168.1.1):

Tutte queste porte, ovviamente, non sono e non devono essere visibili sull’indirizzo IP pubblico.
Come si può notare, inoltre, per ciascun porta Nmap offre un’indicazione sul servizio in esecuzione attingendo al suo database. Questa informazione non è ovviamente garanzia circa la presenza dello stesso servizio in esecuzione sulla porta corrispondente.

Telnet in Windows e nc su Linux

Per verificare la raggiungibilità di una singola porta TCP in Windows basta digitare il comando telnet al prompt seguito dall’indirizzo IP e dal numero della porta. Esempio:

telnet 8.8.8.8 53

È ovvio che si otterrà risposta perché sulla porta 53 del server 8.8.8.8 di Google è attivo il servizio DNS per la risoluzione dei nomi a dominio.

Nel caso in cui il comando telnet fosse sconosciuto a Windows basta aggiungerlo premendo Windows+R, digitando optionalfeatures, spuntando la casella Client Telnet e premendo OK.

In Linux oppure da Windows 10 e Windows 11 previa installazione di WSL 2 si può usare il comando nc per verificare non soltanto porte TCP ma anche porte UDP. Esempio:

nc -z -v -u 192.168.0.1 53

In questo caso l’indirizzo IP locale 192.168.0.1 è un router sul quale è in esecuzione un server DNS quindi il comando nc risponde con il messaggio Connection to 192.168.0.1 53 port succeeded.

L’aggiunta dello switch -u al comando nc chiede una verifica sulla porta UDP specificata. Diversamente il test di connessione avviene utilizzando il protocollo TCP.

Ti consigliamo anche

Link copiato negli appunti