Come verificare se una porta è aperta
Per verificare se una porta è aperta dall'esterno, devi testarla dall'esterno: un tentativo di connessione da un'altra rete è l'unico risultato che conta davvero. Una porta che risponde dalla tua stessa macchina può comunque essere bloccata da un firewall, da un security group o dal tuo provider di hosting prima che un visitatore esterno la raggiunga.
Il modo rapido: testare da fuori la tua rete
Inserisci il nome host o l'indirizzo IP e il numero di porta in uno strumento di controllo porte e lascia che apra una connessione da una macchina da qualche altra parte su internet. Se il servizio è in esecuzione è una domanda diversa. Quello che devi sapere è se qualcuno là fuori può raggiungerlo, e testare dallo stesso server, o dalla stessa rete d'ufficio, salta esattamente i livelli che di solito causano il problema.
Il modo manuale: nc, nmap e telnet
Da qualsiasi altra macchina su una rete diversa, tre strumenti fanno il lavoro:
nc -zv example.com 443 # singola porta, scansione zero-I/O, verbosa
nmap -Pn -p 22,80,443 example.com # più porte, riporta open/closed/filtered
telnet example.com 25 # vecchio ma universale; Ctrl+] poi "quit" per uscire
nc (netcat) è il più semplice: -z significa connettersi e disconnettersi subito senza inviare dati, -v stampa il risultato. Risponde "riuscita" o "rifiutata / timeout" e nient'altro. Usa nmap quando la distinzione conta, perché è l'unico dei tre che separa in modo affidabile una connessione rifiutata da una interrotta, e -Pn gli dice di saltare la sua sonda ping e testare la porta anche quando l'host non risponde ai ping. telnet è installato quasi ovunque, e per i protocolli testuali come SMTP o HTTP mostra anche il banner di benvenuto che il servizio invia.
Per vedere cosa sta ascoltando sulla macchina stessa, che è una domanda diversa, usa ss -tulpn su Linux o netstat -ano su Windows. Se una porta sta ascoltando lì ma è chiusa dall'esterno, il blocco è nel mezzo: un firewall dell'host, un security group nel cloud, o il provider.
Open, closed e filtered sono tre risposte diverse
- Open (aperta). Qualcosa ha completato l'handshake TCP. Un servizio sta ascoltando e ha accettato la connessione.
- Closed (chiusa). L'host ha risposto, ma con un rifiuto (un reset TCP). La macchina è raggiungibile e nulla sta ascoltando su quella porta. È una risposta veloce e definitiva.
- Filtered (filtrata). Non è tornato nulla. Un firewall ha scartato il pacchetto senza rispondere, quindi la sonda va in timeout. È la risposta lenta, e significa che c'è un firewall di mezzo, non che il servizio è giù.
Closed ti indirizza verso la configurazione del servizio. Filtered ti indirizza verso una regola del firewall, un security group, o un provider internet che blocca la porta. Molti provider bloccano di default la porta 25 in uscita, e alcuni bloccano la 445 e altre porte comunemente sfruttate, il che produce un risultato filtered che nessuna configurazione lato server può cambiare.
UDP è un caso speciale. UDP non ha handshake, quindi uno scanner spesso non riesce a distinguere una porta aperta da una filtrata, e il silenzio è una risposta valida da un servizio UDP sano. Considera i risultati UDP come prove molto più deboli rispetto a quelli TCP.
Perché una porta aperta non è un servizio funzionante
Una porta aperta dimostra che si può stabilire una connessione TCP. Non dice nulla su cosa succede dopo. Tutte queste sono porte aperte con servizi guasti:
- Un server web che accetta connessioni sulla 443 mentre restituisce 502 perché l'applicazione dietro di esso è crashata.
- Un database che ascolta sulla sua porta ma rifiuta ogni login.
- Un server di posta che completa l'handshake e poi interrompe la sessione prima di accettare un messaggio.
- Un servizio il cui certificato TLS è scaduto la notte scorsa. La porta si apre, e ogni client rifiuta la connessione.
- Una porta inoltrata alla macchina interna sbagliata, che accetta connessioni e non risponde nulla di utile.
Quindi un controllo di porta è il primo passo di una diagnosi, non tutta la diagnosi. Una volta che la porta risponde, controlla il protocollo: richiedi una pagina e leggi il codice di stato, esegui un login reale, o invia un messaggio di prova. L'ordine conta, perché un controllo di porta esclude rapidamente l'intero livello di rete e ti permette di smettere di cercare lì.
Una breve checklist quando una porta non si apre
- Conferma che il servizio sta ascoltando sulla macchina, e sull'interfaccia giusta. Un servizio legato a
127.0.0.1è irraggiungibile da qualsiasi altro posto, ed è una causa molto comune. - Controlla il firewall dell'host (
ufw,firewalld, o il firewall di Windows). - Controlla il security group nel cloud o la ACL di rete, che è un livello separato dal firewall dell'host e viene spesso dimenticato.
- Controlla eventuali inoltri di porta del router o del NAT se la macchina non è direttamente su un indirizzo pubblico.
- Conferma che il provider non blocchi quella porta, specialmente per le porte di posta.
- Ritesta da una terza rete per escludere un filtraggio in uscita tuo.
Riverificare secondo una pianificazione
Un controllo di porta ti dice lo stato in questo momento, da dove è stata eseguita la sonda. Le porte di solito non si chiudono da sole. Le regole del firewall vengono modificate, i security group vengono irrigiditi, i certificati scadono e i servizi smettono di riavviarsi dopo un reboot, e niente di tutto ciò si annuncia da solo. Il monitoraggio delle porte pianificato si riconnette a intervalli da più ubicazioni e avvisa quando la connessione smette di riuscire, il che intercetta anche il caso in cui la porta è raggiungibile da una regione e filtrata da un'altra. Testa una porta ora con lo strumento di controllo porte. Quando la porta si apre ma il TLS fallisce, la prossima cosa da leggere è come verificare la scadenza del certificato.