Innholdsfortegnelse
I denne artikkelen vil jeg dele eksempler for å sjekke portstatus og åpne en port I Linux. Denne artikkelen ble skrevet mens Du bruker CentOS 8, så det er trygt å si at den også fullt ut dekker CentOS / RHEL 7/8, Fedora, Oracle Enterprise Linux og generelt Hele Red Hat-familien av operativsystemer og muligens Novells SLES og OpenSUSE.
Før vi hopper inn i eksemplene for å åpne en port I Linux, må vi forstå kravet tydelig. Det helt grunnleggende spørsmålet som kommer til meg
- trenger du å åpne en port for en tjeneste? Slik som en tilpasset port 5555 for apache-tjenesten?
- mener du at porten allerede lytter, men blokkeres av brannmur, slik at du vil åpne en port i brannmur?
- Åpne en port for egendefinert midlertidig oppgave, for eksempel overføring og mottak av filer ved hjelp av denne porten, og lukk porten.
vi vil dekke alle disse scenariene i denne artikkelen
Sjekk portstatus
for å sjekke listen over eksisterende porter som er åpne, bruker vi nmap
for å sjekke portstatus:
# 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
Foreløpig ser vi bare to porter er åpne på Min CentOS 8 node.
Sjekk liste over lytteporter
vi vil bruke netstat til å liste TCP-porter som er i lyttetilstand. Totalt antall porter er høyere i forhold til nmap-utgangen.
# 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
Åpne en port for noen tjeneste
hvis dette er kravet ditt, ser du etter feil spørsmål. I utgangspunktet er det andre veien rundt, dvs. en tjeneste vil åpne en port. For eksempel når du starter SSHD-tjenesten, vil den som standard starte port 22 og ikke omvendt, dvs. hvis du åpner port 22, starter DEN ikke AUTOMATISK sshd-tjenesten.
La oss observere dette i eksempel, vi vet at port 22 er åpen på Min CentOS 8 node. Hvis jeg stopper sshd-tjenesten
# systemctl stop sshd
kan du se at port 22 ikke er åpen lenger.
# 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
du må bruke den respektive tjenestens konfigurasjonsfil for å endre standardporten. Når du er ferdig, kan du starte tjenesten på nytt, og det skal automatisk åpne den respektive porten på Linux-noden din.
/etc/services
dette dekker det første scenariet.
firewalld åpen port
det er også mulig at portene dine er deaktivert i brannmur. Hvis porten din ikke er oppført i nmap
, er den mest sannsynlig blokkert av brannmur.
vi vil bruke firewalld til å åpne en port, da DETTE er det mest brukte grensesnittet i DAG I RHEL / CentOS 7 og 8. Bestem hvilken sone systemets nettverksgrensesnitt er i. I eksemplet nedenfor er grensesnittet eth0 og eth1 i sonen offentlig:
# firewall-cmd --get-active-zones
libvirt
interfaces: virbr0
public
interfaces: eth0 eth1
å permanent firewalld åpen port i en sone bruke --add-port
alternativet. Eksemplet nedenfor åpner permanent TCP-port 1234 i offentlig sone. Merk at permanente endringer ikke trer i kraft før firewalld-tjenesten er lastet på nytt.
# firewall-cmd --zone=public --add-port=1234/tcp --permanentsuccess# firewall-cmd --reloadsuccess
--permanent
– alternativsettet. Enhver ikke-permanent endring vil øyeblikkelig tre i kraft og vil fortsette til brannmuren lastes på nytt.når firewalld åpen port, neste bruk netstat å sjekke port status:
# 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
vi ser fortsatt ikke port 1234 her. Dette skyldes at port 1234 ikke er bundet til noen tjeneste. Så vår port ER ÅPEN, MEN IKKE LYTTER. Så snart en forespørsel eller tjeneste prøver å bruke port 1234, vil vi få dette I LYTTE tilstand.
Bruk nc eller ncat for å åpne en port I Linux
la oss verifisere denne teorien Bruk nc
Eller ncat
for å åpne en port I Linux nc
eller ncat
leveres som en del av nmap-ncat
rpm I RHEL / CentOS som du kan installere ved hjelp av yum eller dnf. Bruk --listen
med --port
for å åpne en port ved hjelp av kommandoen nc
. I eksemplet nedenfor åpner vi port 1234
# nc --listen --source-port 1234
Åpne en annen terminal på denne serveren og sjekk portstatus
# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 28983/nctcp6 0 0 :::1234 :::* LISTEN 28983/nc
som du ser port 1234 lytter etter Både IPv4 og IPv6. For å bare bruke IPv4 bruk -4 med kommandoen ovenfor
# nc --listen --source-port 1234 -4
Neste på en annen terminal kan du sjekke portstatus for port 1234
# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 29329/nc
Bruk nc eller ncat for å åpne en port og overføre filer
Vi Kan også bruke nc
for å overføre fil fra en vert til en annen vert. Her overfører jeg min «inputfile
» fra centos-8
til rhel-8
på klienten åpner vi en tilfeldig port, her bruker vi 9899. Jeg har aktivert detaljert slik at du kan se flere detaljer på skjermen
# 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.
Ved siden av start overføringen, bruk kommandoen nedenfor
# 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.
hvis du møter problemer, kan du sjekke brannmuren mellom serveren og klienten. Det er mulig at den respektive porten er blokkert, og du må bruke firewalld open port