GNU/Linux >> Linux Esercitazione >  >> Linux

Apertura di una porta su Linux

Prima di apprendere come aprire una porta su Linux, capiamo cosa sono le porte di rete. Un porto è un punto finale di comunicazione. All'interno di un sistema operativo, una porta consente ai pacchetti di dati processi o servizi di rete specifici.

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

Il primo 1024 porte (porte 0-1023 ) sono indicati come numeri di porta noti e sono riservati ai servizi più comunemente utilizzati, inclusi SSH (porta 22), HTTP e HTTPS (porte 80 e 443), ecc. I numeri di porta superiori a 1024 sono indicati come effimeri porti .

Tra i porti effimeri, i numeri di porta 1024-49151 sono chiamati Utente/Registrato Porti. Il resto dei porti, 49152-65535 sono chiamati Dinamici/Privati Porte.

In questo tutorial mostreremo come aprire una porta effimera su Linux, poiché i servizi più comuni utilizzano le porte conosciute.

Elenca tutte le porte aperte

Prima di aprire una porta su Linux, controlliamo prima l'elenco di tutte le porte aperte e scegliamo una porta temporanea da aprire da quell'elenco.

Possiamo usare netstat comando per elencare tutte le porte aperte, comprese quelle di TCP , UDP , che sono i protocolli più comuni per la trasmissione di pacchetti a livello di rete.

NOTA :Se la tua distribuzione non ha netstat , non è un problema. Puoi usare il ss comando per visualizzare le porte aperte tramite socket in ascolto.

netstat -lntu

Questo stamperà tutti gli ascolto socket (-l ) insieme al numero della porta (-n ), con TCP porte (-t ) e UDP porte (-u ) elencati anche nell'output.

Solo per assicurarci di ottenere risultati coerenti, verifichiamo questo utilizzando il ss comando per elencare i socket in ascolto con una porta aperta.

ss -lntu

Questo fornisce più o meno le stesse porte aperte di netstat , quindi siamo a posto!

Apertura di una porta su Linux per consentire connessioni TCP

Apriamo una porta chiusa e facciamo in modo che ascolti TCP Connessioni, per il bene di questo esempio.

Dalla porta 4000 non viene utilizzato nel mio sistema, scelgo di aprire la porta 4000 . Se quella porta non è aperta nel tuo sistema, sentiti libero di scegliere un'altra porta chiusa. Assicurati solo che sia maggiore di 1023 !

Ancora una volta, solo per essere sicuri, assicuriamoci che la porta 4000 non sia utilizzata, utilizzando il netstat o il ss comando.

netstat -na | grep :4000
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 firewall ufw

Ubuntu ha un firewall chiamato ufw , che si occupa di queste regole per porte e connessioni, invece dei vecchi iptables firewall. Se sei un utente Ubuntu, puoi aprire direttamente la porta usando ufw

sudo ufw allow 4000

Puoi saltare i prossimi passaggi e testare direttamente la tua nuova porta aperta!

Per sistemi basati su CentOS e firewalld

Per questi tipi di sistemi, se hai firewalld come firewall principale, si consiglia di utilizzare firewall-cmd per aggiornare le regole del firewall, invece dei vecchi iptables firewall.

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

NOTA:questo ripristinerà il firewalld regole per impostazione predefinita al riavvio, quindi se desideri modificare questa impostazione in modo permanente, aggiungi il --permanent flag al comando.

firewall-cmd --add-port=4000/tcp --permanent

Puoi saltare i prossimi passaggi e testare direttamente la tua nuova porta aperta!

Per altre distribuzioni Linux

Quindi aggiungiamo questa nuova porta alle regole di iptables del nostro sistema, usando iptables comando.

Se questo comando non è ancora installato, scaricalo utilizzando il tuo gestore di pacchetti.

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

Questo imposta il firewall su append (-A ) la nuova regola per accettare i pacchetti di input tramite protocollo (-p ) TCP dove il porto di destinazione (--dport ) è 4000 e specifica il salto di destinazione (-j ) regola come ACCETTO .

Per aggiornare le regole del firewall, riavvia iptables servizio.

sudo service iptables restart

O utilizzando systemctl se ce l'hai.

sudo systemctl restart iptables

Testa la porta appena aperta per le connessioni TCP

Ora che abbiamo aperto con successo un nuovo TCP port (Porta 4000 nel mio caso), proviamolo.

Per prima cosa, avvieremo netcat (nc ) e ascolta sulla porta 4000, mentre invia l'output di ls a qualsiasi client connesso. Quindi, dopo che un client ha aperto una connessione TCP sulla porta 4000, riceverà l'output di ls .

ls | nc -l -p 4000

Questo fa sì che netcat sia in ascolto sulla porta 4000. Lascia stare questa sessione per ora.

Apri un'altra sessione terminale sulla stessa macchina.

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

Formato per telnet :

telnet [hostname/IP address] [port number]

Quindi inserisci l'IP del tuo server e il numero di porta, che è 4000 nel mio caso, ed eseguire questo comando.

telnet localhost 4000

Questo 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 ).

Come puoi vedere, l'output di ls (while.sh nel mio caso) è stato inviato anche al client, indicando una connessione TCP riuscita!

Per mostrarti che la porta è effettivamente aperta, possiamo usare nmap per verificarlo.

nmap localhost -p 4000

Infatti, il nostro porto è stato aperto! Abbiamo aperto con successo una nuova porta sul nostro 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, verrà visualizzata la porta 4000 come chiusa, poiché al momento non ci sono applicazioni in ascolto su quella porta. Allo stesso modo, anche telnet non funzionerà, poiché ha bisogno anche di un'applicazione di ascolto a cui associarsi. Questo è il motivo per cui nc è uno strumento così utile. Questo simula tali ambienti con un semplice comando.

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

Necessità di aggiornare le regole dopo ogni riavvio

L'approccio presentato in questo articolo aggiornerà solo temporaneamente le regole del firewall fino allo spegnimento/riavvio del sistema. Quindi passaggi simili devono essere ripetuti per aprire nuovamente la stessa porta dopo un riavvio.

Per ufw Firewall

Il ufw le regole non ripristina al riavvio, quindi se sei un utente Ubuntu, non devi preoccuparti di questa parte!

Questo perché è integrato nel processo di avvio e il kernel salva le regole del firewall usando ufw , tramite file di configurazione appropriati.

Per firewalld

Come accennato in precedenza, firewalld soffre anche dello stesso problema, ma questo può essere evitato aggiungendo un --permananent flag al comando iniziale, quando si apre una porta o si imposta qualsiasi altra regola.

Ad esempio, puoi aprire la porta TCP 4000 permanentemente utilizzando il comando seguente:

firewall-cmd --zone=public --add-port=400/tcp --permanent

Per iptables

Per iptables firewall, sebbene questo inconveniente non possa essere evitato, potremmo ridurre al minimo la seccatura.

Possiamo salvare iptables regole in un file di configurazione, come /etc/iptables.conf .

sudo iptables-save | sudo tee -a /etc/iptables.conf

Possiamo quindi recuperarlo dal file di configurazione dopo il riavvio, utilizzando il comando seguente:

sudo iptables-restore < /etc/iptables.conf

Ora, iptables le regole sono ora aggiornate e i nostri porti vengono riaperti!

Conclusione

In questo tutorial, ti abbiamo mostrato come aprire una nuova porta su Linux e configurarla per le connessioni in entrata.


Linux
  1. Linux – Porta seriale Raspberrypi?

  2. Testare in modo efficiente se una porta è aperta su Linux?

  3. Ottieni un elenco di porte aperte in Linux

  4. Linux SCP che definisce la porta di destinazione

  5. Qual è il numero massimo di porte?

Come controllare le porte di ascolto in Linux (porte in uso)

Come eseguire una scansione delle porte in Linux

Come trovare e chiudere le porte aperte in Linux

Come utilizzare Netcat per scansionare le porte aperte in Linux

Come eseguire il ping di un numero di porta in Linux

Come controllare le porte aperte in Linux?