Come elencare le porte aperte su Linux?

How List Open Ports Linux



In rete, una porta è una caratteristica interessante. È un modo per il traffico di rete di identificare l'app o il servizio di destinazione. Ogni processo/servizio ottiene la sua porta univoca. Una porta sarà sempre associata all'indirizzo IP dell'host insieme al protocollo.

Questa è una delle mie metafore preferite per descrivere cos'è un porto. Immagina una nave carica di merci, che viaggerà in una terra lontana. Quali informazioni sono necessarie per raggiungere correttamente la destinazione? Per semplicità, diciamo che ha bisogno del paese (l'indirizzo IP) e del porta la nave attraccherà.







In questa guida, scopri come elencare le porte aperte su Linux.



Porte su Linux

Le porte fungono da endpoint di comunicazione. È un numero a 16 bit (da 0 a 65535 in decimale). Sebbene la gamma sia ampia, per facilità d'uso, le porte sono suddivise in tre categorie. Ogni categoria è etichettata come l'intervallo del valore della porta:



  • da 0 a 1023: Queste sono le porte note, note anche come porte di sistema, riservate ai processi di sistema che offrono un'ampia varietà di servizi di rete. Per eseguire il binding con una porta ben nota, un processo deve disporre del privilegio di superutente.
  • da 1024 a 49151: Si tratta delle Porte Registrate, dette anche Porte Utente, che sono designate da IANA per specifici servizi. Su richiesta, un processo può accedervi. Nel caso della maggior parte dei sistemi, non è necessario alcun privilegio di superutente per utilizzare queste porte.
  • da 49152 a 65535: Queste sono le porte dinamiche, note anche come porte private. Queste porte non possono essere registrate con IANA. Queste porte possono essere utilizzate per servizi privati ​​o personalizzati e possono anche essere allocate automaticamente come porte effimere (porte di breve durata utilizzate dall'IP).

In Linux, ci sono diversi modi per controllare le porte aperte. Per impostazione predefinita, qualsiasi porta rimarrà chiusa a meno che non venga utilizzata da un'app. Se una porta è aperta, deve essere assegnata a un servizio/processo.





Elenco porte aperte

È più facile identificare quali porte sono in uso piuttosto che quali porte sono aperte. Ecco perché la sezione seguente presenterà i metodi per elencare tutte le porte attualmente in uso. In Linux, sono disponibili più strumenti per l'attività. La maggior parte di essi è integrata in qualsiasi distribuzione Linux.

L'apprendimento delle porte attualmente aperte può essere utile in vari scenari. È possibile configurare una porta dedicata per una determinata applicazione. Una porta aperta può anche essere una forte indicazione di intrusione nella rete.



I seguenti metodi sono dimostrati su Ubuntu 20.04.1 LTS.

Elenca i protocolli e le porte aperte da /etc/services

Il file /etc/services contiene informazioni sui servizi attualmente in esecuzione. È un file grande, quindi pronto per essere sopraffatto.

$gatto /eccetera/Servizi| meno

Elenca le porte aperte usando netstat

Lo strumento netstat è un'utilità per visualizzare connessioni di rete per TCP, tabelle di routing e varie interfacce di rete. Offre anche statistiche sul protocollo di rete. Usando netstat, possiamo elencare tutte le porte aperte del sistema.

Esegui il seguente comando netstat:

$netstat -atu

Diamo una rapida analisi di tutti i flag che abbiamo usato in questo comando.

  • a : Dice a netstat di mostrare tutti i socket
  • T : Dice a netstat di elencare le porte TCP
  • tu : Dice a netstat di elencare le porte UDP

Ecco un'altra variante del comando netstat:

$netstat -lntu

Ci sono due nuovi flag usati nel comando. Cosa vogliono dire?

  • l : Dice a netstat di stampare solo i socket di ascolto
  • n : Dice a netstat di mostrare il numero di porta

Per visualizzare il PID del processo che sta utilizzando una porta, usa il flag -p:

$netstat -Intup

Elenca le porte aperte usando ss

Lo strumento ss è un'utilità per l'analisi del socket. Il suo utilizzo è simile a netstat.

Per elencare le porte aperte, esegui il seguente comando ss:

$ss-lntu

I flag sono simili a netstat. Anche le funzioni che descrivono sono abbastanza simili.

  • l : Dice a ss di visualizzare le prese di ascolto
  • n : Dice a ss di non provare a risolvere i nomi dei servizi
  • T : Dice a ss di visualizzare i socket TCP
  • tu : Dice a ss di visualizzare i socket UDP

Elenca le porte aperte usando lsof

Il comando lsof serve per elencare i file aperti. Tuttavia, può essere utilizzato anche per visualizzare le porte aperte.

Esegui il seguente comando lsof:

$lsof-io

Per ottenere le porte aperte di un protocollo specifico (TCP, UDP, ecc.), quindi definirlo dopo il flag -i, utilizzare:

$lsof-io <protocollo>

Elenca le porte aperte usando nmap

Lo strumento nmap è un potente strumento per l'esplorazione della rete e la scansione di sicurezza/porte. Può segnalare tutte le porte aperte nel sistema.

Per elencare le porte TCP aperte, eseguire il seguente comando nmap. Qui, l'indirizzo IP è del computer host:

$sudo nmap -ns -P-localhost

Qui ci sono due parti dell'argomento del comando.

  • -ns : Questa sezione dice a nmap di cercare le porte TCP.
  • -P- : Questo dice a nmap di cercare tutte le porte 65535. Se non viene utilizzato, nmap scansiona solo 1000 porte per impostazione predefinita.

Se è necessario elencare le porte UDP aperte, eseguire il seguente comando nmap:

$sudo nmap -suo -P-localhost

Per ottenere entrambe le porte TCP e UDP aperte, utilizzare il seguente comando:

$sudo nmap -n -PN -ns -suo -P-localhost

Elenca le porte aperte usando netcat

Lo strumento netcat è un'utilità della riga di comando per leggere e scrivere dati attraverso connessioni di rete tramite i protocolli TCP e UDP. Questo strumento può essere utilizzato anche per elencare le porte aperte. Può eseguire test su una porta specifica o su un intervallo di porte.

Il seguente comando netcat eseguirà la scansione della porta da 1 a 1000. Il comando netcat eseguirà la scansione sul protocollo TCP per impostazione predefinita:

$nc-Insieme a -vlocalhost1-1000

Può anche essere esteso all'intero elenco di possibili porte:

$nc-Insieme a -vlocalhost1-65535

Diamo una rapida ripartizione delle bandiere.

  • Insieme a : Dice a netcat di scansionare solo le porte aperte senza inviare alcun dato
  • v : Dice a netcat di funzionare in modalità dettagliata

Per ottenere solo le porte aperte da questo elenco, filtra l'output con grep per il termine riuscito.

$nc-Insieme a -vlocalhost0-65535 2> &1 | presasuccesso

Se vuoi eseguire la scansione sul protocollo UDP, aggiungi il flag -u.

$nc-Insieme a -v -ulocalhost0-65535 2> &1 | presasuccesso

Pensieri finali

Come dimostrato, ci sono molti modi per cercare porte aperte su Linux. Ti suggerisco di provare tutti i metodi prima di decidere quale padroneggiare. Se utilizzi regolarmente un determinato strumento come netcat o nmap, padroneggiare i metodi associati sarà il più vantaggioso.

Buon calcolo!