Come aprire una porta su Linux

Introduzione

A port is a communication endpoint. Within an operating system, a port is opened or closed to data packets for specific processes or network services.

In genere, le porte identificano un servizio di rete specifico a loro assegnato. Questo può essere modificato configurando manualmente il servizio per utilizzare una porta diversa, ma in generale, possono essere utilizzate le impostazioni predefinite.

Le prime 1024 porte (numeri di porta 0 a 1023) sono chiamate numeri di porta ben noti e sono riservate per i servizi più comunemente utilizzati. Questi includono SSH (porta 22), HTTP (porta 80), HTTPS (porta 443).

I numeri di porta superiori a 1024 sono chiamati porte ephemerali.

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

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

Implementa le tue applicazioni da GitHub utilizzando DigitalOcean App Platform. Lascia che DigitalOcean si occupi dello scaling della tua app.

Prerequisiti

Per completare questo tutorial, avrai bisogno di:

  • Familiarità nell’utilizzo del terminale.

Elencare tutte le porte aperte

Prima di aprire una porta su Linux, è necessario verificare l’elenco di tutte le porte aperte e scegliere una porta effimera da aprire che non sia presente in tale elenco.

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

  1. netstat -lntu

Questo stamperà:

  • tutte le prese 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 le prese in ascolto.

Verificare di ricevere output coerenti utilizzando il comando ss per elencare le prese 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 restituisce 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 fallo ascoltare per le connessioni TCP.

Per scopi di questo tutorial, apriremo 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.

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

  1. netstat -na | grep :4000

O il comando ss:

  1. ss -na | grep :4000

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

Per gli utenti di Ubuntu e sistemi basati su ufw

Utilizza ufw – il client a linea di comando per il firewall UncomplicatedFirewall.

I tuoi comandi saranno simili a:

  1. sudo ufw allow 4000

Consulta Come configurare un firewall ufw per la tua distribuzione.

Nota:

  • Ubuntu 14.0.4: “Consenti intervalli specifici di porte”
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: “Consentire altre connessioni / Gamma di porte specifiche”
  • Debian 9/10/11: “Consentire altre connessioni / Gamma di porte specifiche”

Per CentOS e sistemi basati su firewalld

Utilizzare firewall-cmd – il client da linea di comando per il demone firewalld.

I comandi saranno simili a:

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

Fare riferimento a Come configurare firewalld per la tua distribuzione.

Nota:

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

Per altre distribuzioni Linux

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

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

Fare riferimento a Come configurare un firewall utilizzando iptables per la tua distribuzione.

Nota:

  • Ubuntu 12.04: “Un Firewall di Base”
  • Ubuntu 14.04: “Accetta Altre Connessioni Necessarie”

Testa la Nuova Porta Aperta per le Connessioni TCP

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

Prima, avvia netcat (nc) e ascolta (-l) sulla porta (-p) 4000, mentre invii 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 in sospeso questa sessione per ora.

Apri un’altra sessione di terminale sulla stessa macchina.

Dato che hai aperto una porta TCP, utilizza 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 della 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.

Riceverai 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

L’output di ls (while.sh, in questo esempio) è stato inviato anche al client, indicando una connessione TCP riuscita.

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

  1. nmap localhost -p 4000

Questo comando verificherà 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

La porta è stata aperta. 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, questa visualizzerà la porta 4000 come chiusa, poiché non c’è alcuna applicazione in ascolto su quella porta al momento. Allo stesso modo, telnet non funzionerà nemmeno poiché ha bisogno anche di un’applicazione in ascolto su cui associarsi. Questo è il motivo per cui nc è uno strumento così utile. Simula tali ambienti con 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 a quando il sistema non viene spento o riavviato. Pertanto, passaggi simili devono essere ripetuti per aprire nuovamente la stessa porta dopo un riavvio.

Per il firewall ufw

Le regole di ufw non vengono ripristinate al riavvio. Questo perché è integrato nel processo di avvio e il kernel salva le regole del firewall utilizzando ufw mediante l’applicazione di file di configurazione appropriati.

Per firewalld

Dovrai applicare il flag --permanent.

Fai riferimento a Come configurare firewalld per la tua distribuzione.

Nota:

  • CentOS 7/8: “Configurazione delle regole per le tue applicazioni”
  • Rocky Linux 8/9: “Configurazione delle regole per le tue applicazioni”

Per iptables

Dovrai salvare le regole di configurazione. Questi tutorial raccomandano iptables-persistent.

Fai riferimento a Come configurare un firewall utilizzando iptables per la tua 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 anche utilizzato netstat, ss, telnet, nc e nmap.

Continua il tuo apprendimento con Come funziona il firewall Iptables, Un’analisi approfondita dell’architettura Iptables e Netfilter, Comprensione dei socket e Come utilizzare Top, Netstat, Du e altri strumenti per monitorare le risorse del server.

Source:
https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux