GNU/Linux >> Znalost Linux >  >> Linux

CentOS / RHEL :Jak zjistit, zda je síťový port otevřený nebo ne?

Síťové připojení TCP/IP může být blokováno, přerušeno, otevřeno nebo filtrováno. Tyto akce jsou obecně řízeny firewallem IPtables, který systém používá, a jsou nezávislé na jakémkoli procesu nebo programu, který může naslouchat na síťovém portu. Za firewallem může na portu naslouchat nebo nenaslouchat program nebo proces (server nebo démon). To lze zkontrolovat pomocí programů netstat nebo ss. Kontrola, zda je port otevřený, blokovaný, zahozený nebo filtrovaný na bráně firewall, není jednoduché. Existují dva způsoby, jak to provést:

  • externě otestujte port
  • vypište konfiguraci brány firewall a zkontrolujte výstup

1. Použití netstat k zobrazení procesů naslouchání

Chcete-li zjistit, zda program nebo proces naslouchá na portu a je připraven přijmout paket, použijte příkaz netstat.

# netstat -tulnp

Argumenty příkazu netstat jsou uvedeny níže:

t – Zobrazit TCP
u – Zobrazit UDP
l – Zobrazit pouze naslouchající procesy (netstat může zobrazit jak naslouchání, tak všechna navázaná připojení, tedy i jako klient)
n – Neřešte názvy IP adres sítě ani čísla portů
p – Zobrazit název procesu, který naslouchá na portu

Například:

# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1254/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1484/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1355/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1562/master
tcp        0      0 0.0.0.0:44349               0.0.0.0:*                   LISTEN      1274/rpc.statd
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1254/rpcbind
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1355/cupsd
udp        0      0 0.0.0.0:44165               0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:602                 0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:1001                0.0.0.0:*                               1254/rpcbind

2. Pomocí ss můžete vidět procesy naslouchání

Chcete-li zjistit, zda program nebo proces naslouchá na portu a je připraven přijmout paket, použijte program ss.

# ss -nutlp

Argumenty programu ss jsou uvedeny níže:

t – Zobrazení soketů TCP.
u – Zobrazit zásuvky UDP.
l – Zobrazit poslechové zásuvky
n – Nyní zkuste přeložit jména
p – Zobrazit proces pomocí soketu

Například:

# ss -nutlp
Netid State      Recv-Q Send-Q                                                        Local Address:Port                                                          Peer Address:Port
udp   UNCONN     0      0                                                                         *:111                                                                      *:*      users:(("rpcbind",1254,6))
udp   UNCONN     0      0                                                                         *:631                                                                      *:*      users:(("cupsd",1355,9))
udp   UNCONN     0      0                                                                         *:44165                                                                    *:*      users:(("rpc.statd",1274,8))
udp   UNCONN     0      0                                                                         *:602                                                                      *:*      users:(("rpc.statd",1274,5))
udp   UNCONN     0      0                                                                         *:1001                                                                     *:*      users:(("rpcbind",1254,7))
tcp   LISTEN     0      128                                                                       *:111                                                                      *:*      users:(("rpcbind",1254,8))
tcp   LISTEN     0      128                                                                       *:22                                                                       *:*      users:(("sshd",1484,3))
tcp   LISTEN     0      128                                                               127.0.0.1:631                                                                      *:*      users:(("cupsd",1355,7))
tcp   LISTEN     0      100                                                               127.0.0.1:25                                                                       *:*      users:(("master",1562,12))
tcp   LISTEN     0      128                                                                       *:44349                                                                    *:*      users:(("rpc.statd",1274,9))

3. pomocí lsof najít otevřené porty

Chcete-li zobrazit seznam všech otevřených portů v systému, použijte následující příkaz k vypsání názvu a čísla procesu, který porty otevřel.

# lsof -i

Zde je příklad výstupu:

# lsof -i
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind   1254     rpc    6u  IPv4  12592      0t0  UDP *:sunrpc
rpcbind   1254     rpc    7u  IPv4  12596      0t0  UDP *:1001
rpcbind   1254     rpc    8u  IPv4  12597      0t0  TCP *:sunrpc (LISTEN)
rpc.statd 1274 rpcuser    5r  IPv4  12784      0t0  UDP *:xmlrpc-beep
rpc.statd 1274 rpcuser    8u  IPv4  12788      0t0  UDP *:44165
rpc.statd 1274 rpcuser    9u  IPv4  12792      0t0  TCP *:44349 (LISTEN)
cupsd     1355    root    7u  IPv4  13147      0t0  TCP localhost:ipp (LISTEN)
cupsd     1355    root    9u  IPv4  13150      0t0  UDP *:ipp
sshd      1484    root    3u  IPv4  13707      0t0  TCP *:ssh (LISTEN)
master    1562    root   12u  IPv4  13923      0t0  TCP localhost:smtp (LISTEN)
sshd      1657    root    3r  IPv4  14745      0t0  TCP 192.168.1.50:ssh->192.168.1.101:49549 (ESTABLISHED)

Externí testování portu

Aplikaci telnet lze použít pro testování jednoduché konektivity síťového soketu, ale pouze pro připojení TCP, nikoli UDP. Pokud například chci zjistit, zda je TCP port 80 v systému připraven přijmout připojení, uvedu IP adresu a port pro telnet:

# telnet 192.168.1.55 80
Trying 192.168.1.55...
Connected to example.redhat.com (192.168.1.55).
Escape character is '^]'.

Pokud server neposlouchá, odpověď je jiná:

# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection refused
telnet: Unable to connect to remote host: Connection refused
  • To znamená, že připojení bylo aktivně odmítnuto. Subsystém TCP přijal paket, prozkoumal jej a zjistil, že se jedná o požadavek na otevření soketu na portu 80, zjistil, že neexistuje žádný proces připravený k přijetí připojení, a odpověděl odmítnutím.
  • Pokud byla brána firewall nakonfigurována tak, aby blokovala nebo filtrovala připojení, telnet by zobrazil něco velmi podobného výše uvedenému, i když byl proces připraven k přijetí připojení.
  • Pokud by byla brána firewall nakonfigurována tak, aby přerušovala připojení, neviděli bychom žádnou odpověď a místo toho by vypršel časový limit telnetu:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out

Výpis pravidel brány firewall

V Red Hat Enterprise Linux mohou být pravidla brány firewall uvedena pomocí příkazu service:

# service iptables status

Nebo pomocí příkazu iptables:

# iptables -xvn -L


Linux
  1. CentOS / RHEL 7 :Jak otevřít port ve firewallu pomocí firewall-cmd?

  2. Jak deaktivovat NetworkManager na CentOS / RHEL 7

  3. Jak zjistit, které konkrétní ethernetové zařízení odpovídá konkrétnímu portu na síťové kartě s více rozhraními v CentOS/RHEL

  1. Jak vytvořit síťový most na CentOS 7 / RHEL 7

  2. CentOS / RHEL :Jak najít UUID zařízení nebo souborového systému

  3. Jak zjistit počet soketů CPU v systému CentOS/RHEL

  1. Jak restartovat síťovou službu na CentOS 8 nebo RHEL 8

  2. Jak otevřít port Http ( 80 ) v Iptables na CentOS

  3. CentOS / RHEL 7 :Jak upravit názvy síťových rozhraní