semplici passi per aprire una porta in Linux RHEL/CentOS 7/8

Sommario

Annuncio

In questo articolo voglio condividere esempi per controllare lo stato della porta e aprire una porta in Linux. Questo articolo è stato scritto durante l’utilizzo di CentOS 8, quindi è sicuro di dire che copre anche completamente CentOS / RHEL 7/8, Fedora, Oracle Enterprise Linux e in generale l’intera famiglia di sistemi operativi Red Hat e, eventualmente, SLES di Novell e openSUSE.

Prima di saltare negli esempi per aprire una porta in Linux, dobbiamo capire chiaramente il requisito. La domanda di base che mi viene in mente

  1. Hai bisogno di aprire una porta per un servizio? Come una porta personalizzata 5555 per il servizio Apache?
  2. Intendi che la porta è già in ascolto ma bloccata dal firewall, quindi vuoi aprire una porta nel firewall?
  3. Aprire una porta per attività temporanee personalizzate come trasferire e ricevere file utilizzando questa porta e quindi chiudere la porta.

Ci prenderemo cura di tutti questi scenari in questo articolo

Controllare lo stato della porta

controllare la lista degli attuali porti aperti useremo nmap per controllare lo stato della porta:

# nmap localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2020-03-22 12:08 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000024s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Nmap done: 1 IP address (1 host up) scanned in 1.71 seconds

Attualmente vediamo solo due porte sono aperte sul mio CentOS 8 nodo.

Check list of listing ports

Useremo netstat per elencare le porte TCP che sono in stato di ascolto. Il numero totale di porte è maggiore rispetto all’output nmap.

# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 26893/sshd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 26893/sshd tcp6 0 0 :::111 :::* LISTEN 1/systemd

Apri una porta per un servizio

Se questo è il tuo requisito, stai cercando la domanda sbagliata. Fondamentalmente è il contrario, cioè un servizio aprirà una porta. Ad esempio, quando si avvia il servizio SSHD, per impostazione predefinita inizierà la porta 22 e non viceversa, ad esempio se si apre la porta 22, non si avvierà automaticamente il servizio SSHD.

Pubblicità

Osserviamo questo nell’esempio, sappiamo che la porta 22 è aperta sul mio nodo CentOS 8. Se interrompo il servizio sshd

# systemctl stop sshd

Puoi vedere che la porta 22 non è più aperta.

# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasq tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::111 :::* LISTEN 1/systemd

È necessario utilizzare il file di configurazione del rispettivo servizio per modificare la porta predefinita. Una volta fatto è possibile riavviare il servizio e che dovrebbe aprire automaticamente la rispettiva porta sul nodo Linux.

SUGGERIMENTO:

Se si prevede di utilizzare alcune porte personalizzate per un servizio, è necessario aggiungerlo anche in /etc/services

Questo copre il primo scenario.

firewalld porta aperta

È anche possibile che le porte siano disabilitate nel firewall. Se la tua porta non è elencata in nmap, è molto probabile che sia bloccata dal firewall.

Useremo firewalld per aprire una porta poiché questa è l’interfaccia più utilizzata oggi in RHEL/CentOS 7 e 8. Determinare in quale zona si trovano le interfacce di rete del sistema. Nell’esempio seguente, l’interfaccia eth0 e eth1 si trova nella zona “pubblica”:

# firewall-cmd --get-active-zones
libvirt
interfaces: virbr0
public
interfaces: eth0 eth1

Per aprire la porta permanentemente firewalld in una zona utilizzare l’opzione --add-port. L’esempio seguente apre permanentemente la porta TCP 1234 nella zona’ pubblica’. Si noti che le modifiche permanenti non hanno effetto fino a quando il servizio firewalld non viene ricaricato.

# firewall-cmd --zone=public --add-port=1234/tcp --permanentsuccess# firewall-cmd --reloadsuccess
NOTA:

Per effettuare una modifica non persistente, eseguire lo stesso comando senza il set di opzioni --permanent. Qualsiasi modifica non permanente avrà immediatamente effetto e persisterà fino a quando il firewall non verrà ricaricato.

Una volta firewalld porta aperta, quindi utilizzare netstat per controllare lo stato della porta:

Pubblicità

# netstat -ntlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasqtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 28188/sshdtcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemdtcp6 0 0 :::22 :::* LISTEN 28188/sshdtcp6 0 0 :::111 :::* LISTEN 1/systemd

Non vediamo ancora la porta 1234 qui. Questo perché attualmente la porta 1234 non è associata a nessun servizio. Quindi il nostro porto è APERTO ma NON ASCOLTA. Non appena una richiesta o un servizio tenta di utilizzare la porta 1234, lo otterremo nello stato di ASCOLTO.

Usa nc o ncat per aprire una porta in Linux

Verifichiamo questa teoria Usa nc o ncat per aprire una porta in Linux nc o ncat viene fornito come parte di nmap-ncat rpm in RHEL/CentOS che puoi installare usando yum o dnf. Usare --listen con --port per aprire una porta usando il comando nc. Nell’esempio seguente apriamo la porta 1234

# nc --listen --source-port 1234

Apri un altro terminale di questo server e controlla lo stato della porta

# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 28983/nctcp6 0 0 :::1234 :::* LISTEN 28983/nc

Come vedi la porta 1234 è in ascolto sia per IPv4 che per IPv6. Per utilizzare solo IPv4 utilizzare -4 con il comando precedente

# nc --listen --source-port 1234 -4

Avanti su un altro terminale è possibile controllare lo stato della porta per la porta 1234

# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 29329/nc

Usa nc o ncat per aprire una porta e trasferire file

Possiamo anche usare nc per trasferire file da un host a un altro host. Qui trasferirò il mio “inputfile” da centos-8 a rhel-8 Sul client apriremo una porta casuale, qui useremo 9899. Ho abilitato verbose in modo da poter vedere maggiori dettagli sullo schermo

# ncat --verbose --listen 9899 > outputfileNcat: Version 7.70 ( https://nmap.org/ncat )Ncat: Listening on :::9899Ncat: Listening on 0.0.0.0:9899Ncat: Connection from 192.168.43.250.Ncat: Connection from 192.168.43.250:40242.

Quindi per avviare il trasferimento, utilizzare il seguente comando

# ncat --verbose 192.168.43.157 9899 < inputfileNcat: Version 7.70 ( https://nmap.org/ncat )Ncat: Connected to 192.168.43.157:9899.Ncat: 19 bytes sent, 0 bytes received in 0.01 seconds.

Se si verificano problemi è possibile controllare il firewall tra il server e il client. È possibile che la rispettiva porta sia bloccata ed è necessario utilizzare firewalld open port

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.