androide

Come controllare (scansionare) le porte aperte in linux

Porte di input e output - PORTA PARALLELA - La PORTA SERIALE A 9 PIN - La PORTA USB - Il FireWire

Porte di input e output - PORTA PARALLELA - La PORTA SERIALE A 9 PIN - La PORTA USB - Il FireWire

Sommario:

Anonim

Sia che tu stia risolvendo problemi di connettività di rete o configurando un firewall, una delle prime cose da verificare è 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'è Open Port

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

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

Ad esempio, se si esegue un server Web in ascolto sulle porte 80 e 443 e tali porte sono aperte sul firewall, chiunque (tranne ips bloccati) sarà in grado di accedere ai siti Web ospitati sul server Web tramite il proprio browser. In questo caso, sia 80 che 443 sono porte aperte.

Le porte aperte possono comportare un rischio per la sicurezza in quanto ogni porta aperta può essere utilizzata dagli aggressori per sfruttare una vulnerabilità o eseguire qualsiasi altro tipo di attacco. È necessario esporre solo le porte necessarie per la funzionalità dell'applicazione e chiudere tutte le altre porte.

Seleziona Apri porte 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

-sT dice a nmap di cercare le porte TCP e -p- di cercare tutte le 65535 porte. Se -p- non viene utilizzato, nmap eseguirà la scansione di solo 1000 porte.

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 solo le porte 22 , 80 e 8069 sono aperte sul sistema di destinazione.

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

sudo nmap -sU -p- 10.10.8.8

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

Seleziona Apri porte 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 è possibile eseguire la scansione di una singola porta o di 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 , utilizzare il comando seguente:

nc -z -v 10.10.8.8 20-80

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

L'output sarà simile al seguente:

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 succeeded!… Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Per cercare le porte UDP passare l'opzione -u al comando nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

Seleziona Apri porte usando Bash Pseudo Device

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

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

La seguente istruzione if..else verificherà se la porta 443 su kernel.org è aperta:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

Come funziona il codice sopra?

Il timeout predefinito durante la connessione a una porta mediante uno pseudo dispositivo è enorme, quindi stiamo usando il comando timeout per terminare il comando test dopo 5 secondi. Se la connessione viene stabilita con la porta 443 di kernel.org il comando test restituirà true.

Puoi anche usare il ciclo for per verificare un intervallo di porte:

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

L'output sarà simile al seguente:

port 22 is open port 80 is open

Conclusione

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

terminale