Cos'è una porta?
Nella rete di computer, una porta rappresenta una voce logica e un punto di uscita per una connessione. Le porte si basano sul software e sono del tutto virtuale. Queste porte su un computer sono gestite dal sistema operativo.
Di cosa parleremo?
Questo tutorial rapido dimostra i vari metodi per determinare quale processo o servizio Linux sta attualmente ascoltando su una porta specifica. Parliamo di porte e del loro scopo.
In che modo le porte sono analoghe alle porte fisiche?
Proprio come le porte fisiche aiutano a interagire con vari dispositivi periferici collegati a un computer, le porte aiutano i diversi servizi a comunicare tra loro. Questi servizi possono essere sullo stesso computer o su computer diversi.
Un po 'di porto di servizio
Per ascoltare le richieste di connessione in arrivo, un processo si associa a un numero di porta. La maggior parte dei processi è impostata con una porta predefinita e devono utilizzare quella porta secondo le loro specifiche. Non passano automaticamente all'altra porta a meno che la loro configurazione non sia esplicitamente modificata.
Alcuni esempi di protocolli e le loro porte predefinite associate includono il protocollo Secure Shell (SSH) (PORT22), Apache HTTP (PORT80), il server di database MySQL (PORT3306) e così via. È possibile utilizzare queste informazioni per scoprire quale porta predefinita esegue un servizio utilizza.
Il file di configurazione di questi servizi può essere modificato anche per utilizzare un'altra porta.
Controllare le porte su Linux
Vediamo ora come controllare quali porte/porte sta utilizzando su Linux. Qui, ti mostreremo i diversi comandi per questo scopo.
1. Comando lsof
L'utilità LSOF è utile per ottenere un elenco delle porte utilizzate dal sistema. Consideriamo il seguente esempio per ottenere informazioni su un processo (processi) utilizzando la porta TCP 22:
$ sudo lsof -i tcp: 22
Il comando LSOF fornisce ulteriori informazioni come il nome dell'utente e quali ID di processo sono collegati a ciascun processo. Funziona con le porte TCP e UDP.
2. Comando ss
IL ss Il comando è un altro modo per scoprire quali processi sono collegati a una determinata porta. Sebbene LSOF sia l'abbreviazione più comune, alcune persone potrebbero trovare SS più utili.
Cerchiamo i processi o i servizi che ascoltano la porta 3306:
$ sudo ss -tunap | Grep: 3306
Analizziamo questo comando:
1. T: Dice al comando ss di visualizzare i pacchetti TCP.
2. u: Dice al comando ss di visualizzare i pacchetti UDP.
3. N: Viene utilizzato per visualizzare i numeri di porta anziché le loro traduzioni.
4. UN: Viene utilizzato per visualizzare le prese di ascolto e non lisciante di tutti i tipi.
5. P: Viene utilizzato per visualizzare i processi che utilizzano una presa.
Il risultato del comando precedente mostra quale processo sta utilizzando quale porta. È inoltre possibile emettere il seguente comando:
$ sudo ss -tup -a sport =: 80
Qui, lo sport significa la porta di origine.
Questi due approcci possono aiutarti a trovare gli ID dei processi collegati a porte diverse.
3. Comando netstat
Il comando NetStat mostra le informazioni sulla tua rete e può essere utilizzato per risolvere i problemi o modificare il modo in cui la rete è impostata. Può anche tenere un orologio da vicino sulle connessioni di rete.
Questo comando viene spesso utilizzato per vedere un'informazione su connessioni in entrata e in uscita, tabelle di routing, ascolto della porta e statistiche di utilizzo. Sebbene sia stato reso obsoleto negli ultimi anni, NetStat è ancora uno strumento utile per analizzare le reti.
Con il comando GREP, NetStat può determinare quale processo o servizio utilizza una determinata porta (menzionando la porta):
$ sudo netstat -ltnp | grep -w ': 80'
Le opzioni utilizzate qui possono essere classificate come segue:
1. T: Mostra solo la connessione TCP.
2. l: Viene utilizzato per visualizzare i risultati in un elenco.
3. N: Visualizza indirizzi e numeri di porta in formato numerico.
4. P: Visualizza il PID e il nome del programma associati a ciascuna presa.
4. Comando fuser
Il comando fuser determina i processi che utilizzano i file o le prese. È possibile utilizzarlo per elencare i servizi che vengono eseguiti su una porta specifica. Prendiamo l'esempio della porta 3306 e vediamo quali servizi sono in esecuzione qui:
$ Sudo Fuser 3306/TCP
Questo ci fornisce i numeri di processo usando questa porta. È possibile utilizzare questo numero di processo per trovare i nomi del processo corrispondenti. Ad esempio, se il numero di processo è 15809, il comando da utilizzare qui è il seguente:
$ PS -P 15809 -O Comm =
Tuttavia, alcuni strumenti sono necessari per identificare i processi che utilizzano una porta non standard. "LSOF" è uno strumento per scoprire quali servizi sono disponibili su una rete e quali porte usano. Considera il seguente esempio. Questo mostra come elencare le porte di ascolto UDP e TCP:
$ sudo lsof -pni | egrep "(UDP | ascolta)"
Di seguito è riportata una descrizione delle opzioni utilizzate qui:
1. P: Sopprime la ricerca del nome del servizio porta.
2. N: Visualizza gli indirizzi di rete numerica.
3. io: Elenca le prese IP.
Sia le porte che i processi associati sono mostrati nel risultato precedentemente menzionato. In questo modo è particolarmente utile per i processi con porte non default.
Conclusione
In questo articolo, abbiamo parlato di quattro possibili strumenti di linea di comando Linux e fornito gli esempi su come usarli per scoprire quale processo sta ascoltando su una determinata porta.