GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire una scansione delle porte in Linux

Per molti aspiranti amministratori di sistema, il networking è un argomento vasto e intimidatorio. Per comprenderli, ci sono molti livelli, protocolli e interfacce da apprendere e numerose risorse e utilità.

Le porte sono endpoint di comunicazione logici nelle reti TCP/IP e UDP. Molti servizi, come un server Web, un server delle applicazioni e un file server, funzioneranno su un unico indirizzo IP. Ciascuno di questi servizi deve ascoltare e interagire su una porta particolare per comunicare. Quando ti connetti a un computer, lo fai tramite un indirizzo IP e una porta.

In alcuni casi, il programma che stai utilizzando sceglierà automaticamente una porta per te. Ad esempio, quando vai su https://www.fosslinux.com, ti stai connettendo al server fosslinux.com sulla porta 443, che è la porta standard per il traffico web sicuro. Poiché è l'impostazione predefinita, il tuo browser aggiungerà automaticamente la porta per te.

In questa guida imparerai di più sulle porte. Esamineremo i vari programmi che ci aiuteranno a conoscere lo stato dei nostri porti. Questi includono:

  •  Nmap
  •  Mappa Zen
  •  Netcat
  •  netstat
  •  Unicornscan
  •  Utilizzando la Pseudo Unit Bash, puoi cercare porte aperte
  •  Utilizzo del comando ss

Il software netstat verrà utilizzato per individuare le porte aperte e il programma Nmap verrà utilizzato per ottenere informazioni sullo stato delle porte di una macchina su una rete. Sarai in grado di trovare porte popolari e cercare porte aperte nei tuoi sistemi una volta terminato.

Conoscere i porti

Il modello di rete OSI ha diversi livelli. Il livello di trasporto è la parte dello stack di protocollo che si occupa della comunicazione tra servizi e applicazioni. Quest'ultimo è il livello principale con cui sono collegate le porte.

Per comprendere la configurazione delle porte, avrai bisogno di alcune informazioni sulla terminologia. Ecco una varietà di parole che saranno utili per capire cosa verrà discusso in seguito:

Porta:una posizione di rete indirizzabile introdotta all'interno del sistema operativo aiuta a differenziare il traffico destinato a varie applicazioni o servizi.

Socket Internet:un descrittore di file che definisce un indirizzo IP e un numero di porta associato e il protocollo di trasferimento dati da utilizzare.

Binding:quando un'applicazione o un servizio utilizza una presa Internet per gestire i dati di input e output.

Ascolto:quando un servizio si collega a una combinazione porta/protocollo/indirizzo IP per attendere le richieste dei client, si presume che sia in "ascolto" su quella porta.

Stabilisce un collegamento con il client quando appropriato dopo aver ricevuto un messaggio utilizzando la stessa porta su cui è stato attivamente in ascolto. Poiché le prese Internet sono associate a un particolare indirizzo IP del client, il server può ascoltare e servire contemporaneamente le richieste provenienti da più client.

Port Scanning sta tentando di connettersi a una serie di porte sequenziali per sapere quali sono disponibili e quali servizi e sistemi operativi sono in esecuzione dietro di esse.

Identificazione delle porte utilizzate di frequente

A ciascuna porta viene assegnato un numero compreso tra 1 e 65535.

Poiché diverse porte inferiori a 1024 sono associate a risorse che i sistemi operativi simili a Linux e Unix considerano vitali per le funzioni di rete, l'assegnazione di servizi ad esse richiede i privilegi di root.

Le porte “registrate” sono quelle con un numero compreso tra 1024 e 49151. Ciò significa che presentando una richiesta alla IANA (Internet Assigned Numbers Authority), possono essere “riservate” in senso lato per servizi specifici. Non sono implementati rigorosamente, ma possono fornire informazioni dettagliate sui servizi che operano su una determinata porta.

Le porte comprese tra 49152 e 65535 non sono disponibili per la registrazione e sono consigliate per uso personale. A causa dell'elevato numero di porte aperte, non dovrai preoccuparti della maggior parte dei servizi che si connettono a porte particolari.

Tuttavia, a causa del loro uso diffuso, vale la pena imparare le porte specifiche. Quello che segue è un elenco tutt'altro che completo:

  • 20:Dettagli FTP
  • 22:SSH
  • 23:Telnet
  • 21:Porta di controllo FTP
  • 25:SMTP (Simple Mail Transfer Protocol)
  • 80:HTTP – Traffico Web non crittografato
  • 443:HTTPS:traffico di rete sicuro
  • 143:porta di posta IMAP
  • 161:SNMP
  • 194:IRC
  • 389:LDAP
  • 631:porta del demone di stampa CUPS
  • 666:DOOM – Questo gioco legacy ha il suo port unico
  • 587:SMTP – invio del messaggio

Queste sono solo alcune delle strutture che sono spesso collegate ai porti. Le porte richieste per le applicazioni che stai tentando di configurare dovrebbero essere menzionate nella rispettiva documentazione.

La maggior parte dei servizi può essere configurata per utilizzare porte diverse da quelle normali, ma devi assicurarti che sia il client che il server utilizzino la porta non standard.

Il file che contiene un elenco di diverse porte comunemente utilizzate è chiamato /etc/services.

tuts@fosslinux:~$ less /etc/services

o

 tuts@fosslinux:~$ cat /etc/services

Ti fornirà un elenco di porte popolari e i servizi che le accompagnano:

Questo può mostrare pagine diverse a seconda della configurazione. Per vedere la pagina successiva di voci, premi SPAZIO o premi Q per tornare al tuo prompt.

Scansione porta

Un metodo per controllare le porte aperte su un PC o un server è noto come scansione delle porte. I giocatori e gli hacker utilizzano anche scanner di porte per cercare porte aperte e servizi di impronte digitali. Una porta può essere aperta, filtrata, chiusa o non filtrata, a seconda del suo stato. Una data porta è disponibile nella remota possibilità che un'applicazione stia attivamente ascoltando la data porta per connessioni o pacchetti/

Una delle prime cose da controllare durante la risoluzione dei problemi di connessione di rete o la configurazione di un firewall è quali porte sono disponibili sul tuo dispositivo.

Questo articolo discute diversi metodi per determinare quali porte sul tuo sistema Linux sono disponibili per il mondo esterno.

Che cos'è esattamente una porta aperta?

Una porta di ascolto può ascoltare su una porta di rete. Puoi ottenere un elenco delle porte di ascolto del tuo sistema utilizzando comandi come ss, netstat o lsof per interrogare lo stack di rete.

Quando si utilizza un firewall, ciascuna porta in ascolto può essere aperta o chiusa (filtrata).

Una porta di rete è nota come porta aperta se accetta pacchetti in arrivo da posizioni remote. Ad esempio, se il tuo server web ascolta le porte 80 e 443 e quelle porte sono disponibili sul tuo firewall, chiunque tranne gli IP bloccati può usare il suo browser per accedere ai siti web ospitati sul tuo server web. Entrambe le porte 80 e 443 sono aperte in questa situazione.

Le porte aperte possono rappresentare un rischio per la sicurezza perché gli aggressori possono usarle per hackerare vulnerabilità o eseguire altri tipi di attacchi. Tutte le altre porte dovrebbero essere chiuse e solo le porte necessarie per la funzionalità della tua applicazione dovrebbero essere esposte.

Nel protocollo Internet TCP/IP, ci sono due tipi di porte da cercare:TCP (Transmission Control Protocol) e UDP (Uniform Datagram Protocol) (User Datagram Protocol). TCP e UDP hanno ciascuno i propri metodi di scansione. Vedremo come eseguire una scansione delle porte in un ambiente Linux in questo post, ma prima osserveremo come funziona la scansione delle porte. È importante ricordare che la scansione delle porte è illegale in molti paesi, quindi ricontrolla le autorizzazioni prima di scansionare il tuo target.

Scansione per TCP

Poiché tiene traccia dello stato delle connessioni, TCP è un protocollo con stato. L'handshaking a tre vie del socket Server e del socket lato client è necessario per una connessione TCP. Il client invia un SYN a un socket del server in ascolto e il server risponde con un SYN-ACK. Il client invia quindi un ACK per completare l'handshake della connessione.

Uno scanner invia un pacchetto SYN al server per cercare una porta TCP aperta. La porta è disponibile se viene restituito SYN-ACK. La porta viene chiusa se il server non completa l'handshake e risponde con un RST.

Scansione con UDP

D'altra parte, UDP è un protocollo senza stato che non tiene traccia dello stato della connessione. Esclude anche l'uso di una stretta di mano a tre vie.

Uno scanner UDP è responsabile dell'invio di un pacchetto UDP alla porta per cercarlo. Un pacchetto ICMP viene prodotto e rispedito all'origine se quella porta viene chiusa. Se ciò non si verifica, la porta è aperta.

Poiché i firewall perdono i pacchetti ICMP, la scansione delle porte UDP è sempre imprecisa, risultando in falsi positivi per i port scanner.

Scanner per porte

Possiamo passare a vari scanner di porte e alle loro funzionalità ora che abbiamo esaminato le funzioni di scansione delle porte. Questi includono:

Mappa

Nmap è un mappatore di rete che è diventato popolare come uno degli strumenti gratuiti di rilevamento della rete più utilizzati. Nmap è diventato uno degli strumenti più popolari da utilizzare per gli amministratori di rete durante la mappatura delle loro reti. Il software può essere utilizzato per localizzare host live su una rete, eseguire scansioni delle porte, ping sweep, rilevamento del sistema operativo e rilevamento della versione, tra le altre cose.

Diversi attacchi informatici recenti hanno ribadito l'importanza degli strumenti di controllo della rete come Nmap. Ad esempio, secondo gli analisti, potrebbero essere stati rilevati in precedenza se gli amministratori di sistema avessero monitorato i dispositivi connessi. Vedremo cos'è Nmap, cosa può fare e come utilizzare i comandi più popolari in questo tutorial.

Nmap è uno strumento di scansione della rete in grado di scansionare sia host singoli che reti estese. Viene anche utilizzato per i test di penetrazione e gli audit di conformità.

Quando si tratta di scansione delle porte, Nmap dovrebbe essere la tua prima scelta se è aperto. Nmap può rilevare l'indirizzo Mac, il modulo del sistema operativo, le versioni del kernel e molto altro oltre alla scansione delle porte.

Nmap non è solo uno strumento di scansione della rete. È inoltre responsabile dell'utilizzo dei pacchetti IP per individuare tutti i dispositivi connessi e fornire informazioni sui servizi in esecuzione e sui sistemi operativi.

Il software è disponibile per vari sistemi operativi, inclusi Linux, Gentoo e Free BSD. Il più delle volte, viene utilizzato tramite un'interfaccia a riga di comando. Tuttavia, sono disponibili anche front-end della GUI. Il suo successo è stato anche aiutato da una comunità di supporto per gli utenti vivace e attiva.

Nmap è stato progettato per reti su larga scala e potrebbe cercare migliaia di dispositivi connessi. Le piccole imprese, d'altra parte, hanno utilizzato sempre più Nmap negli ultimi anni. A causa dell'ascesa dell'Internet delle cose, le reti di queste aziende sono diventate più complicate e, di conseguenza, più difficili da proteggere.

Di conseguenza, diversi strumenti di monitoraggio dei siti Web ora utilizzano Nmap per ispezionare il traffico tra server Web e dispositivi IoT. La recente comparsa di botnet IoT come Mirai ha suscitato interesse per Nmap, anche per la sua capacità di interrogare i dispositivi collegati tramite il protocollo UPnP ed evidenziare eventuali macchine potenzialmente dannose.

Finora, Nmap è stato il port scanner più versatile e dettagliato disponibile. Con esso è possibile qualsiasi cosa, dalla scansione delle porte all'impronta digitale del sistema operativo e alla scansione delle vulnerabilità. La GUI per Nmap si chiama Zenmap e ha sia una CLI che un'interfaccia GUI. Dispone di un'ampia gamma di opzioni per eseguire scansioni rapide e accurate. Ecco come configurare Nmap su un sistema Linux.

Esistono diversi modi in cui Nmap aiuta a eseguire la scansione delle porte. Le varianti più utilizzate includono:

  • Scansione # sS TCP SYN
  • Scansione della connessione # sT TCP
  • # scansioni sU UDP
  • Scansione # sY SCTP INIT
  • # sN TCP NULL

Le principali distinzioni tra questi tipi di scansioni sono se proteggono le porte TCP o UDP e se eseguono o meno un collegamento TCP. Ecco le principali differenze:

La scansione sS TCP SYN è la più semplice di queste scansioni e fornisce alla maggior parte degli utenti tutte le informazioni necessarie. Migliaia di porte vengono scansionate al secondo e non destano sospetti perché non completano un collegamento TCP.

La scansione TCP Connect, che interroga attivamente ogni host e richiede una risposta, è l'alternativa principale a questa forma di scansione. Questa scansione richiede più tempo di una scansione SYN, ma può fornire risultati più accurati.

La scansione UDP funziona in modo simile alla scansione della connessione TCP, tranne per il fatto che esegue la scansione delle porte DNS, SNMP e DHCP utilizzando pacchetti UDP. Questo tipo di scansione aiuta a verificare la presenza di vulnerabilità perché queste sono le porte più comunemente prese di mira dagli hacker.

La scansione SCTP INIT esamina due servizi distinti:SS7 e SIGTRAN. Poiché non completa l'intera procedura SCTP, questa scansione può anche prevenire sospetti durante la ricerca su una rete esterna.

La scansione TOP NULL è un altro ingegnoso processo di scansione. Sfrutta un difetto nel framework TCP che gli consente di esporre lo stato delle porte senza doverle interrogare esplicitamente, consentendoti di vederne lo stato anche se un firewall le protegge.

In questo articolo tratteremo quanto segue:

  • Come faccio a configurare Nmap?
  • Come eseguire una scansione delle porte di base su un computer locale e remoto
  • Qual ​​è il modo migliore per cercare le porte TCP e UDP?
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install nmap -y

Le porte in ascolto per le connessioni TCP dalla rete possono essere determinate emettendo il seguente comando dalla console:

tuts@fosslinux:~$ sudo nmap -sT -p- 10.10.4.3

L'opzione -sT indica a Nmap di cercare le porte TCP, mentre l'opzione -p- gli ordina di scansionare tutte le 65535 porte. Se l'opzione -p- non è specificata, Nmap controllerà solo le 1000 porte più comuni.

In base alle prestazioni, sul computer di destinazione sono aperte solo le porte 22, 80 e 8069.

Invece di -sT, usa -sU per cercare le porte UDP come segue:

tuts@fosslinux:~$ sudo nmap -sU -p- 10.10.4.3

Ora useremo Nmap per cercare un server (hackme.org) per porte aperte ed elencare i servizi disponibili su quelle porte. Digita nmap e l'indirizzo del server nel prompt dei comandi.

tuts@fosslinux:~$ nmap hackme.org

Poiché ha bisogno dei privilegi di root, usa l'opzione -sU con sudo per cercare le porte UDP.

tuts@fosslinux:~$ sudo nmap -sU hackme.org

Nmap ha anche molte altre funzionalità, tra cui:

  • -p-:esegue la scansione dell'intero elenco di 65535 porte
  • -sT:Questa è una scansione di connessione per TCP
  • -O:esegue la scansione del sistema operativo in esecuzione
  • -v:scansione dettagliata
  • -A:Scansione aggressiva, scansione praticamente di tutto
  • -T[1-5]:per impostare la velocità di scansione
  • -Pn:accade ogni volta che il server blocca il ping

Mappa Zen

Zenmap è un'interfaccia click-kiddie per Nmap che elimina la necessità di memorizzare i suoi comandi. Per configurarlo, installa zenmap eseguendo il comando seguente.

tuts@fosslinux:~$ sudo apt-get install -y zenmap

In alternativa,

mkdir -p ~/Downloads/zenmap
cd ~/Downloads/zenmap

wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-6_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/n/nmap/zenmap_7.80+dfsg1-1build1_all.deb

sudo apt install ./*.deb

Digita l'indirizzo del server e scegli tra le opzioni di ricerca disponibili per scansionarlo.

Netcat

Netcat, che può essere indicato come nc, è uno strumento da riga di comando. Utilizza i protocolli TCP o UDP per leggere e scrivere dati tramite connessioni di rete. È anche uno scrittore di porte TCP e UDP non elaborato che può anche cercare porte.

Netcat può cercare una singola porta o alcune porte.

Poiché utilizza la scansione dei collegamenti, è più lento di Network Mapper. Per configurarlo, form

tuts@fosslinux:~$ sudo apt install netcat-traditional -y

Scrivi quanto segue per vedere se una porta è disponibile.

tuts@fosslinux:~$ nc -z -v hackme.org 80

Digita il seguente termine di ricerca per trovare un elenco di porte.

tuts@fosslinux:~$ nc -z -nv 127.0.0.1 50-80

Per cercare le porte TCP aperte su una macchina remota con indirizzo IP 10.10.4.3 nell'intervallo 20-80, ad esempio, utilizzare il comando seguente:

tuts@fosslinux:~$ nc -z -v 10.10.4.3 50-80

L'opzione -z indica a nc di cercare solo le porte aperte e di non inviare alcun dato, mentre l'opzione -v fornisce dettagli più precisi.

Ecco come apparirà il prodotto finale:

Filtra i risultati con il comando grep se vuoi che le righe con le porte aperte vengano stampate sullo schermo.

tuts@fosslinux:~$ nc -z -v 10.10.4.3 50-80 2>&1 | grep succeeded

Passa la scelta -u al comando nc per cercare le porte UDP:

tuts@fosslinux:~$ nc -z -v -u 10.10.4.3 50-80 2>&1 | grep succeeded

lsof comando

Il comando lsof, che elenca i file aperti in Linux, è l'ultimo strumento che esamineremo per interrogare le porte aperte. Poiché Unix/Linux è un file, un file aperto può essere uno stream o un file di rete.

Utilizzare l'opzione -i per elencare tutti i dati Internet e di rete. Questo comando visualizza una combinazione di nomi di servizi e porte numeriche.

tuts@fosslinux:~$ sudo lsof -i

Esegui lsof in questo formato per vedere quale applicazione è in ascolto su una porta specifica, esegui il comando seguente.

tuts@fosslinux:~$ sudo lsof -i:80

Utilizzo del comando netstat

Netstat è uno strumento per interrogare informazioni sul sottosistema di rete Linux ampiamente utilizzato. Può essere utilizzato per stampare tutte le porte disponibili nel seguente formato:

tuts@fosslinux:~$ sudo netstat -ltup

Il flag -l indica a netstat di stampare tutti i socket in ascolto, -t tutte le connessioni TCP, -u tutte le connessioni UDP e -p tutti i nomi di applicazioni/programmi in ascolto sulla porta.

Aggiungi il flag -n per stampare valori numerici invece dei nomi dei servizi.

tuts@fosslinux:~$ sudo netstat -lntup

Puoi anche usare il comando grep per vedere quali applicazioni sono in ascolto su una porta specifica.

tuts@fosslinux:~$ sudo netstat -lntup | grep "apache2."

In alternativa, come mostrato, puoi definire la porta e individuare l'applicazione ad essa collegata.

tuts@fosslinux:~$ sudo netstat -lntup | grep ":80"

Scansione unicorni

Unicornscan è uno scanner di porte potente e veloce progettato per i ricercatori di sicurezza. Usa il suo stack TCP/IP distribuito User-land, a differenza di Network Mapper. Quest'ultimo ha diverse caratteristiche che Nmap non ha. Alcuni di questi sono menzionati di seguito.
La scansione asincrona senza stato di TCP è possibile con il tipo di variazioni dei flag TCP.

L'acquisizione di banner TCP è una scansione UDP asincrona e stateless con specifiche di protocollo asincrone che inviano firme sufficienti per ottenere una risposta. Valutando le risposte, è possibile il riconoscimento di OS, programmi e componenti remoti attivi e passivi.

  • Filtraggio e registrazione di file PCAP
  • Prestazioni da un database relazionale
  • Supporto per moduli personalizzati
  • Viste dei set di dati che possono essere personalizzati

Digita unicornscan nella casella di ricerca per installare Unicornscan eseguendo il seguente comando sul terminale.

tuts@fosslinux:~$ sudo apt-get install unicornscan -y

Per eseguire una scansione, scrivi quanto segue.

tuts@fosslinux:~$ sudo us 127.0.0.1

Utilizzando la Pseudo Unit Bash, puoi cercare le porte aperte

Quando si cerca di stabilire se una porta è aperta o chiusa, la shell Bash /dev/tcp/ o /dev/udp/ pseudo-device è molto utile.

Bash aprirà un collegamento TCP o UDP all'host specificato sulla porta specificata quando viene eseguito un comando su uno pseudo-dispositivo /dev/$PROTOCOL/$HOST/$IP.

L'istruzione if...else di seguito verificherà se la porta 443 su kernel.org è aperta:comando:

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

Poiché il timeout predefinito quando ci si connette a una porta utilizzando uno pseudo-dispositivo è così lungo, stiamo usando il comando timeout per distruggere il comando test dopo 5 secondi. Il comando test restituirà true se viene creato il collegamento alla porta 443 di kernel.org.

Usa il ciclo for per cercare un intervallo di porte:

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

Utilizzo del comando ss

Il comando ss è un altro prezioso strumento per visualizzare le informazioni sul socket. Le sue prestazioni sono molto simili a quelle di netstat. Il comando seguente visualizza tutte le porte in ascolto delle connessioni TCP e UDP come valore numerico.

tuts@fosslinux:~$ sudo ss -lntu

Conclusione

Che tu sia un giocatore, in DevOp o un hacker, i port scanner sono utili. Non esiste un contrasto adeguato tra questi scanner; nessuno di loro è impeccabile e ognuno ha la propria serie di vantaggi e svantaggi. Le tue esigenze determineranno fortemente questo e come vuoi usarle.

Puoi anche cercare porte aperte usando altre utilità e metodi, come il modulo socket Python, curl, telnet o wget. Abbiamo anche dimostrato come determinare quali processi sono collegati a porte specifiche.


Linux
  1. Come modificare la porta SSH in Linux

  2. Come chiudere le porte in Linux?

  3. Come aprire la porta in Linux

  4. come utilizzare netstat su una porta specifica in Linux

  5. Il comando Linux ottiene la porta inutilizzata

Come bloccare una porta utilizzando un firewall in Linux

Come utilizzare Netcat per scansionare le porte aperte in Linux

Come eliminare l'esecuzione del processo Linux su una porta particolare

Come eseguire il ping di un numero di porta in Linux

Come controllare le porte aperte in Linux?

Apertura di una porta su Linux