pași simpli pentru a deschide un port în Linux RHEL / CentOS 7/8

cuprins

publicitate

în acest articol voi împărtăși exemple pentru a verifica starea portului și a deschide un port în Linux. Acest articol a fost scris în timp ce utilizați CentOS 8, deci este sigur să spunem că acoperă pe deplin CentOS/RHEL 7/8, Fedora, Oracle Enterprise Linux și, în general, întreaga familie de sisteme de operare Red Hat și, eventual, SLES și OpenSUSE ale lui Novell.

înainte de a sări în exemple pentru a deschide un port în Linux, trebuie să înțelegem clar cerința. Întrebarea foarte de bază care îmi vine în minte

  1. trebuie să deschideți un port pentru un serviciu? Cum ar fi un port personalizat 5555 pentru serviciul apache?
  2. vrei să spui că portul ascultă deja, dar este blocat de firewall, Deci vrei să deschizi un port în firewall?
  3. deschideți un port pentru activități temporare personalizate, cum ar fi transferul și primirea fișierelor utilizând acest port și apoi închideți portul.

vom acoperi toate aceste scenarii în acest articol

Verificați starea portului

pentru a verifica lista porturilor existente care sunt deschise, vom folosi nmap pentru a verifica starea portului:

# 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

în prezent, vom vedea doar două porturi sunt deschise pe CentOS meu 8 nod.

verificați lista porturilor de ascultare

vom folosi netstat pentru a lista porturile TCP care sunt în stare de ascultare. Numărul total de porturi este mai mare în comparație cu ieșirea 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

deschideți un port pentru un serviciu

dacă aceasta este cerința dvs., atunci căutați o întrebare greșită. Practic este invers, adică un serviciu va deschide un port. De exemplu, atunci când porniți serviciul SSHD, în mod implicit va porni portul 22 și nu invers, adică dacă deschideți portul 22, acesta nu va porni automat serviciul sshd.

publicitate

să observăm acest lucru în exemplu, știm că portul 22 este deschis pe CentOS meu 8 nod. Dacă opresc serviciul sshd

# systemctl stop sshd

puteți vedea că portul 22 nu mai este deschis.

# 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

trebuie să utilizați fișierul de configurare al Serviciului respectiv pentru a schimba portul implicit. Odată terminat, puteți reporni serviciul și acesta ar trebui să deschidă automat portul respectiv pe nodul Linux.

sugestie:

Dacă intenționați să utilizați un port personalizat pentru un serviciu, atunci ar trebui să îl adăugați și în /etc/services

aceasta acoperă primul scenariu.

firewalld port deschis

de asemenea, este posibil ca porturile dvs. să fie dezactivate în firewall. Dacă portul dvs. nu este listat în nmap, atunci cel mai probabil este blocat de firewall.

vom folosi firewalld pentru a deschide un port, deoarece aceasta este cea mai utilizată interfață astăzi în RHEL/CentOS 7 și 8. Determinați în ce zonă se află interfețele de rețea ale sistemului. În exemplul următor, interfața eth0 și eth1 se află în zona publică:

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

pentru a deschide permanent portul firewalld într-o zonă, utilizați opțiunea --add-port. Exemplul de mai jos deschide permanent portul TCP 1234 în zona ‘public’. Rețineți că modificările permanente nu intră în vigoare până când serviciul firewalld nu este reîncărcat.

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

pentru a efectua o modificare non-persistentă, emiteți aceeași comandă fără setul de opțiuni --permanent. Orice modificare nepermanentă va intra instantaneu în vigoare și va persista până când firewall-ul este reîncărcat.

odată ce firewalld port deschis, următoarea utilizare netstat pentru a verifica starea portului:

publicitate

# 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

încă nu vedem portul 1234 aici. Acest lucru se datorează faptului că în prezent Portul 1234 nu este legat de niciun serviciu. Deci portul nostru este deschis, dar nu ascultă. De îndată ce o cerere sau un serviciu încearcă să utilizeze portul 1234, vom primi acest lucru în starea de ascultare.

folosiți nc sau ncat pentru a deschide un port în Linux

să verificăm această teorie folosiți nc sau ncat pentru a deschide un port în Linux nc sau ncat este livrat ca parte a nmap-ncat rpm în RHEL/CentOS pe care îl puteți instala folosind yum sau dnf. Utilizați --listen cu --port pentru a deschide un port folosind comanda nc. În exemplul de mai jos deschidem portul 1234

# nc --listen --source-port 1234

deschideți un alt terminal al acestui server și verificați starea portului

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

după cum vedeți portul 1234 ascultă atât pentru IPv4, cât și pentru IPv6. Pentru a utiliza numai IPv4 utilizați -4 cu comanda de mai sus

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

următorul pe un alt terminal puteți verifica starea portului pentru port 1234

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

utilizați nc sau ncat pentru a deschide un port și a transfera fișiere

de asemenea, putem folosi nc pentru a transfera fișiere de la o gazdă la alta gazdă. Aici îmi voi transfera” inputfile ” de la centos-8 la rhel-8 pe client vom deschide un port aleatoriu, aici vom folosi 9899. Am activat verbose, astfel încât să puteți vedea mai multe detalii pe ecran

# 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.

lângă începerea transferului, utilizați comanda de mai jos

# 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.

dacă vă confruntați cu probleme, puteți verifica paravanul de protecție între server și client. Este posibil ca portul respectiv să fie blocat și trebuie să utilizați portul deschis firewalld

Lasă un răspuns

Adresa ta de email nu va fi publicată.