GNU/Linux >> Linux Esercitazione >  >> Linux

Come controllare (scansionare) le porte aperte in Linux

Sia che tu stia risolvendo problemi di connettività di rete o configurando un firewall, una delle prime cose da controllare è quali porte sono effettivamente aperte sul tuo sistema.

Questo articolo descrive diversi approcci per scoprire quali porte sono aperte verso l'esterno sul tuo sistema Linux.

Cos'è la porta aperta #

Una porta di ascolto è una porta di rete su cui un'applicazione è in ascolto. Puoi ottenere un elenco delle porte in ascolto sul tuo sistema interrogando lo stack di rete con comandi come ss , netstat o lsof . Ciascuna porta di ascolto può essere aperta o chiusa (filtrata) utilizzando un firewall.

In termini generali, una porta aperta è una porta di rete che accetta i pacchetti in arrivo da posizioni remote.

Ad esempio, se stai eseguendo un server web in ascolto sulle porte 80 e 443 e quelle porte sono aperte sul tuo firewall, chiunque (tranne gli IP bloccati) potrà accedere ai siti web ospitati sul tuo server web usando il suo browser. In questo caso, entrambi 80 e 443 sono porte aperte.

Le porte aperte possono rappresentare un rischio per la sicurezza poiché ciascuna porta aperta può essere utilizzata dagli aggressori per sfruttare una vulnerabilità o eseguire qualsiasi altro tipo di attacco. Dovresti esporre solo le porte necessarie per la funzionalità della tua applicazione e chiudere tutte le altre porte.

Controlla le porte aperte con nmap #

Nmap è un potente strumento di scansione della rete in grado di scansionare singoli host e reti di grandi dimensioni. Viene utilizzato principalmente per audit di sicurezza e test di penetrazione.

Se disponibile, nmap dovrebbe essere il tuo primo strumento quando si tratta di scansione delle porte. Oltre alla scansione delle porte, nmap può anche rilevare l'indirizzo Mac, il tipo di sistema operativo, le versioni del kernel e molto altro.

Il seguente comando emesso dalla console determina quali porte sono in ascolto per le connessioni TCP dalla rete:

sudo nmap -sT -p- 10.10.8.8

Il -sT dice a nmap per cercare le porte TCP e -p- per cercare tutte le 65535 porte. Se -p- non viene utilizzato nmap analizzerà solo le 1000 porte più popolari.

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST
Nmap scan report for 10.10.8.8
Host is up (0.0012s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

L'output sopra mostra che porta solo 22 , 80 e 8069 vengono aperti sul sistema di destinazione.

Per cercare le porte UDP usa -sU invece di -sT :

sudo nmap -sU -p- 10.10.8.8

Per ulteriori informazioni, visita la pagina man di nmap e leggi tutte le altre potenti opzioni di questo strumento.

Controlla le porte aperte con netcat #

Netcat (o nc ) è uno strumento da riga di comando in grado di leggere e scrivere dati attraverso connessioni di rete, utilizzando i protocolli TCP o UDP.

Con netcat puoi scansionare una singola porta o un intervallo di porte.

Ad esempio per cercare porte TCP aperte su una macchina remota con indirizzo IP 10.10.8.8 nell'intervallo 20-80 dovresti usare il seguente comando:

nc -z -v 10.10.8.8 20-80

Il -z l'opzione dice a nc per scansionare solo le porte aperte, senza inviare alcun dato e il -v è per informazioni più dettagliate.

L'output sarà simile a questo:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
...
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Se vuoi che solo le righe con le porte aperte vengano stampate sullo schermo, filtra i risultati con il grep comando.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Per cercare le porte UDP, passa -u opzione al nc comando:

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Il 2>&1 build reindirizza l'errore standard allo standard output.

Controlla le porte aperte usando Bash Pseudo Device #

Un altro modo per verificare se una determinata porta è aperta o chiusa è utilizzare la shell Bash /dev/tcp/.. o /dev/udp/.. pseudo-dispositivo.

Quando si esegue un comando su un /dev/$PROTOCOL/$HOST/$IP pseudo-dispositivo, Bash aprirà una connessione TCP o UDP all'host specificato sulla porta specificata.

Il seguente if..elsestatement verificherà se la porta 443 su kernel.org è aperto:

if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'
then
  echo "Port is open"
else
  echo "Port is closed"
fi
Port is open

Come funziona il codice sopra?

Quando ci si connette a una porta usando uno pseudo-dispositivo, il timeout predefinito è enorme, quindi stiamo usando il timeout comando per terminare il comando di test dopo 5 secondi. Se viene stabilita la connessione a kernel.org porta 443 il comando di test restituirà true.

Per verificare la presenza di un intervallo di porte, utilizza il ciclo for:

for PORT in {20..80}; do
  timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" &&  echo "port $PORT is open"
done

L'output sarà simile a questo:

port 22 is open
port 80 is open

Conclusione #

Ti abbiamo mostrato diversi strumenti che puoi usare per cercare le porte aperte. Esistono anche altre utilità e metodi per verificare la presenza di porte aperte, ad esempio puoi utilizzare il socket di Python modulo, curl , telnet o wget .

Se hai domande o commenti, lascia un commento qui sotto.


Linux
  1. Come controllare la versione di Redhat

  2. Come scoprire l'elenco di tutte le porte aperte in Linux

  3. Come verificare la presenza di porte aperte in Linux con netstat, lsof e nmap

  4. Come chiudere le porte in Linux?

  5. Come controllare l'ascolto / aprire le porte con Netstat su Linux

Come controllare le porte aperte su Debian 10

Come verificare che una porta sia aperta su un sistema Linux remoto

Come trovare e chiudere le porte aperte in Linux

Come utilizzare Netcat per scansionare le porte aperte in Linux

Come controllare tutte le porte aperte nel tuo sistema Linux

Come controllare le porte aperte in Linux?