Tartalomjegyzék
ebben a cikkben példákat fogok megosztani a port állapotának ellenőrzésére és egy port megnyitására Linuxban. Ez a cikk a CentOS 8 használata közben íródott, így nyugodtan mondhatjuk, hogy teljes mértékben lefedi a CentOS / RHEL 7/8, A Fedora, az Oracle Enterprise Linux és általában az egész Red Hat operációs rendszercsaládot, esetleg a Novell SLES-ét és az OpenSUSE-t is.
mielőtt belevágnánk a Példákba, hogy megnyissunk egy portot Linuxban, világosan meg kell értenünk a követelményt. A legalapvetőbb kérdés, ami eszembe jut
- meg kell nyitnia egy portot egy szolgáltatáshoz? Mint például egy egyedi port 5555 apache szolgáltatás?
- úgy érti, hogy a port már hallgat, de a tűzfal blokkolja, így meg akarja nyitni a portot a tűzfalban?
- nyisson meg egy portot egyéni ideiglenes feladatokhoz, például fájlok átviteléhez és fogadásához ezen a porton keresztül, majd zárja be a portot.
ezeket a forgatókönyveket ebben a cikkben tárgyaljuk
ellenőrizze a port állapotát
a meglévő nyitott portok listájának ellenőrzéséhez A nmap
– et fogjuk használni a port állapotának ellenőrzéséhez:
# 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
jelenleg csak két port van nyitva a CentOS 8 csomópontomon.
a figyelő portok ellenőrző listája
a netstat segítségével soroljuk fel a figyelő állapotban lévő TCP portokat. A portok teljes száma magasabb az nmap kimenetéhez képest.
# 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
nyisson meg egy portot valamilyen szolgáltatáshoz
ha ez a követelmény, akkor rossz kérdést keres. Alapvetően fordítva van, azaz egy szolgáltatás megnyit egy portot. Például, amikor elindítja az SSHD szolgáltatást, alapértelmezés szerint a 22-es portot indítja el, nem pedig fordítva, azaz ha megnyitja a 22-es portot, akkor nem indul el automatikusan az SSHD szolgáltatás.
figyeljük meg ezt a példát, tudjuk, hogy a port 22 nyitva van az én CentOS 8 csomópont. Ha leállítom az sshd szolgáltatást
# systemctl stop sshd
láthatja, hogy a 22-es port már nincs nyitva.
# 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
az alapértelmezett port módosításához a megfelelő szolgáltatás konfigurációs fájlját kell használni. Ha kész, újraindíthatja a szolgáltatást, amelynek automatikusan meg kell nyitnia a megfelelő portot a Linux csomóponton.
/etc/services
ez az első forgatókönyvre vonatkozik.
firewalld nyitott port
az is lehetséges, hogy a portok le vannak tiltva a tűzfalban. Ha a port nem szerepel a nmap
listában, akkor valószínűleg a tűzfal blokkolja.
a firewalld-ot fogjuk használni a port megnyitásához, mivel ez a leggyakrabban használt interfész ma az RHEL/CentOS 7-ben és 8-ban. Határozza meg, hogy a rendszer hálózati interfészei melyik zónában vannak. A következő példában az eth0 és eth1 interfész a nyilvános zónában van:
# firewall-cmd --get-active-zones
libvirt
interfaces: virbr0
public
interfaces: eth0 eth1
a zónán belüli Port végleges megnyitásához használja a --add-port
opciót. Az alábbi példa véglegesen megnyitja az 1234-es TCP portot a ‘nyilvános’ zónában. Ne feledje, hogy az állandó változások csak a firewalld szolgáltatás újratöltéséig lépnek hatályba.
# firewall-cmd --zone=public --add-port=1234/tcp --permanentsuccess# firewall-cmd --reloadsuccess
--permanent
beállításkészlet nélkül. Minden nem állandó változás azonnal érvénybe lép, és a tűzfal újratöltéséig fennmarad.miután a firewalld megnyitotta a portot, a netstat használatával ellenőrizze a port állapotát:
# 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
még mindig nem látjuk az 1234-es portot. Ez azért van, mert jelenleg az 1234-es port nem kötődik semmilyen szolgáltatáshoz. Tehát a kikötőnk nyitva van, de nem hallgat. Amint egy kérés vagy szolgáltatás megpróbálja használni az 1234-es portot, ezt hallgatási állapotban kapjuk meg.
NC vagy ncat használatával nyisson meg egy portot Linuxban
ellenőrizzük ezt az elméletet a nc
vagy ncat
használatával nyisson meg egy portot Linuxban nc
vagy ncat
a nmap-ncat
rpm részeként szállítjuk RHEL/CentOS-ban, amelyet Yum vagy dnf segítségével telepíthet. Használja a --listen
parancsot a --port
gombbal egy port megnyitásához a nc
paranccsal. Az alábbi példában megnyitjuk a portot 1234
# nc --listen --source-port 1234
nyissa meg a kiszolgáló másik terminálját, és ellenőrizze a port állapotát
# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 28983/nctcp6 0 0 :::1234 :::* LISTEN 28983/nc
amint látja, hogy az 1234-es port mind az IPv4, mind az IPv6 számára figyel. Csak az IPv4 használatához használja a -4-et a fenti paranccsal
# nc --listen --source-port 1234 -4
következő egy másik terminálon ellenőrizheti a port állapotát 1234
# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 29329/nc
az nc vagy az ncat használatával nyisson meg egy portot és továbbítson fájlokat
a nc
használatával fájlokat is átvihetünk egyik gazdagépről a másikra. Itt átviszem a “inputfile
” – et centos-8
– ról rhel-8
– re az ügyfélen egy véletlenszerű portot nyitunk meg, itt 9899-et fogunk használni. Engedélyeztem a verbose alkalmazást, így további részleteket láthat a képernyőn
# 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.
az átvitel elindításához használja az alábbi parancsot
# 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.
ha bármilyen problémával szembesül, ellenőrizheti a tűzfalat a szerver és az ügyfél között. Lehetséges, hogy az adott port blokkolva van, ezért a firewalld open port
parancsot kell használnia