Ricerca nel sito web

Come aprire una porta su Linux


introduzione

Una porta è un endpoint di comunicazione. All'interno di un sistema operativo, una porta viene aperta o chiusa a pacchetti di dati per specifici processi o servizi di rete.

In genere, le porte identificano uno specifico servizio di rete loro assegnato. Questo può essere modificato configurando manualmente il servizio per l'utilizzo di una porta diversa, ma in generale è possibile utilizzare i valori predefiniti.

Le prime 1024 porte (numeri di porta da 0 a 1023) sono indicate come numeri di porta noti e sono riservate ai servizi più utilizzati . Questi includono SSH (porta 22), HTTP (porta 80), HTTPS (porta 443).

I numeri di porta superiori a 1024 sono indicati come porte temporanee.

  • I numeri di porta da 1024 a 49151 sono chiamati porte registrate/utente.
  • I numeri di porta da 49152 a 65535 sono chiamati porte dinamiche/private.

In questo tutorial, aprirai una porta temporanea su Linux, poiché i servizi più comuni utilizzano le porte note.

Prerequisiti

Per completare questo tutorial, avrai bisogno di:

  • Familiarità con l'utilizzo del terminale.

Elenca tutte le porte aperte

Prima di aprire una porta su Linux, è necessario controllare l'elenco di tutte le porte aperte e scegliere una porta temporanea da aprire non presente nell'elenco.

Usa il comando netstat per elencare tutte le porte aperte, inclusi TCP e UDP, che sono i protocolli più comuni per la trasmissione di pacchetti a livello di rete.

  1. netstat -lntu

Questo stamperà:

  • tutti i socket in ascolto (-l)
  • il numero della porta (-n)
  • Porte TCP (-t)
  • Porte UDP (-u)

Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 :::* LISTEN tcp6 0 0 ::1:6379 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

Nota: se la tua distribuzione non ha netstat, puoi utilizzare il comando ss per visualizzare le porte aperte controllando i socket in ascolto.

Verifica di ricevere output coerenti utilizzando il comando ss per elencare i socket in ascolto con una porta aperta:

  1. ss -lntu

Questo stamperà:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:* tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::1]:5432 0.0.0.0:* tcp LISTEN 0 128 [::1]:6379 0.0.0.0:* tcp LISTEN 0 128 [::]:22 0.0.0.0:*

Questo fornisce più o meno le stesse porte aperte di netstat.

Apertura di una porta su Linux per consentire connessioni TCP

Ora apri una porta chiusa e falla ascoltare le connessioni TCP.

Per gli scopi di questo tutorial, aprirai la porta 4000. Tuttavia, se quella porta non è aperta nel tuo sistema, sentiti libero di scegliere un'altra porta chiusa. Assicurati solo che sia maggiore di 1023.

Assicurati che la porta 4000 non sia utilizzata utilizzando il comando netstat:

  1. netstat -na | grep :4000

Oppure il comando ss:

  1. ss -na | grep :4000

L'output deve rimanere vuoto, verificando così che non sia attualmente utilizzato, in modo da poter aggiungere manualmente le regole della porta al firewall iptables di sistema.

Per utenti Ubuntu e sistemi basati su ufw

Usa ufw - il client della riga di comando per UncomplicatedFirewall.

I tuoi comandi saranno simili a:

  1. sudo ufw allow 4000

Fare riferimento a Come configurare una configurazione del firewall ufw per la propria distribuzione.

Nota:

  • Ubuntu 14.0.4: \Consenti intervalli di porte specifici
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: \Consentire altre connessioni/Intervalli di porte specifici
  • Debian 9/10/11: \Consentire altre connessioni/Intervalli di porte specifici

Per sistemi basati su CentOS e firewalld

Usa firewall-cmd - il client della riga di comando per il demone firewalld.

I tuoi comandi saranno simili a:

  1. firewall-cmd --add-port=4000/tcp

Fai riferimento a Come impostare firewalld per la tua distribuzione.

Nota:

  • CentOS 7/8: \Impostazione di regole per le tue applicazioni/Apertura di una porta per le tue zone
  • Rocky Linux 8/9: \Impostazione di regole per le tue applicazioni/Apertura di una porta per le tue zone”

Per altre distribuzioni Linux

Usa iptables per modificare le regole del filtro dei pacchetti IPv4 del sistema.

  1. iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

Fare riferimento a Come impostare un firewall utilizzando iptables per la propria distribuzione.

Nota:

  • Ubuntu 12.04: \Un firewall di base”
  • Ubuntu 14.04: \Accetta altre connessioni necessarie

Testare la porta appena aperta per le connessioni TCP

Ora che hai aperto con successo una nuova porta TCP, è il momento di testarla.

Innanzitutto, avvia netcat (nc) e ascolta (-l) sulla porta (-p) 4000, mentre inviando l'output di ls a qualsiasi client connesso:

  1. ls | nc -l -p 4000

Ora, dopo che un client ha aperto una connessione TCP sulla porta 4000, riceverà l'output di ls. Lascia stare questa sessione per ora.

Apri un'altra sessione di terminale sulla stessa macchina.

Dato che hai aperto una porta TCP, usa telnet per verificare la connettività TCP. Se il comando non esiste, installalo utilizzando il tuo gestore di pacchetti.

Inserisci l'IP del tuo server e il numero di porta (4000 in questo esempio) ed esegui questo comando:

  1. telnet localhost 4000

Questo comando tenta di aprire una connessione TCP su localhost sulla porta 4000.

Otterrai un output simile a questo, che indica che è stata stabilita una connessione con il programma in ascolto (nc):

Output
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. while.sh

Anche l'output di ls (while.sh, in questo esempio) è stato inviato al client, indicando una connessione TCP riuscita.

Usa nmap per controllare se la porta (-p) è aperta:

  1. nmap localhost -p 4000

Questo comando controllerà la porta aperta:

Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00010s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 4000/tcp open remoteanything Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Il porto è stato aperto. Hai aperto con successo una nuova porta sul tuo sistema Linux.

Nota: nmap elenca solo le porte aperte che hanno un'applicazione attualmente in ascolto. Se non utilizzi alcuna applicazione in ascolto, come netcat, questo visualizzerà la porta 4000 come chiusa poiché al momento non ci sono applicazioni in ascolto su quella porta. Allo stesso modo, neanche telnet funzionerà poiché necessita anche di un'applicazione in ascolto a cui collegarsi. Questo è il motivo per cui nc è uno strumento così utile. Questo simula tali ambienti in un semplice comando.

Ma questo è solo temporaneo, poiché le modifiche verranno ripristinate ogni volta che riavvii il sistema.

Regole persistenti

L'approccio presentato in questo articolo aggiornerà solo temporaneamente le regole del firewall fino all'arresto o al riavvio del sistema. Quindi è necessario ripetere passaggi simili per riaprire la stessa porta dopo un riavvio.

Per ufw Firewall

Le regole ufw non vengono reimpostate al riavvio. Questo perché è integrato nel processo di avvio e il kernel salva le regole del firewall usando ufw applicando i file di configurazione appropriati.

Per firewalld

Dovrai applicare il flag --permanent.

Fai riferimento a Come impostare firewalld per la tua distribuzione.

Nota:

  • CentOS 7/8: \Impostazione delle regole per le tue applicazioni”
  • Rocky Linux 8/9: \Impostare regole per le tue applicazioni”

Per iptables

Sarà necessario salvare le regole di configurazione. Questi tutorial consigliano iptables-persistent.

Fare riferimento a Come impostare un firewall utilizzando iptables per la propria distribuzione.

Nota:

  • Ubuntu 12.04: \Salvataggio delle regole di Iptables
  • Ubuntu 14.04: \Salvataggio della configurazione di Iptables

Conclusione

In questo tutorial, hai imparato come aprire una nuova porta su Linux e configurarla per le connessioni in entrata. Hai usato anche netstat, ss, telnet, nc e nmap.

Continua il tuo apprendimento con Come utilizzare Top, Netstat, Du e altri strumenti per monitorare le risorse del server.