GNU/Linux >> Tutoriels Linux >  >> Linux

CentOS / RHEL :Comment savoir si un port réseau est ouvert ou non ?

Une connexion réseau TCP/IP peut être soit bloquée, interrompue, ouverte ou filtrée. Ces actions sont généralement contrôlées par le pare-feu IPtables utilisé par le système et sont indépendantes de tout processus ou programme pouvant être à l'écoute sur un port réseau. Au-delà du pare-feu, un programme ou un processus (un serveur ou un démon) peut être à l'écoute sur un port ou ne pas l'écouter. Ceci peut être vérifié en utilisant les programmes netstat ou ss. Vérifier si un port est ouvert, bloqué, abandonné ou filtré au niveau du pare-feu n'est pas simple. Il existe deux manières de procéder :

  • tester le port en externe
  • répertorier la configuration du pare-feu et examiner le résultat

1. Utilisation de netstat pour voir les processus d'écoute

Pour voir si un programme ou un processus écoute sur un port, prêt à accepter un paquet, utilisez la commande netstat.

# netstat -tulnp

Les arguments de la commande netstat sont répertoriés ci-dessous :

l – Afficher TCP
u – Afficher UDP
l – Afficher uniquement les processus d'écoute (netstat peut afficher à la fois l'écoute et toutes les connexions établies, c'est-à-dire en tant que client également)
n – Ne résolvez pas les noms d'adresse IP ou les numéros de port du réseau
p – Afficher le nom du processus qui écoute sur le port

Par exemple :

# 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. Utiliser ss pour voir les processus d'écoute

Pour voir si un programme ou un processus écoute sur un port, prêt à accepter un paquet, utilisez le programme ss.

# ss -nutlp

Les arguments du programme ss sont listés ci-dessous :

l – Afficher les sockets TCP.
u – Afficher les sockets UDP.
l – Afficher les prises d'écoute
n – Essayez maintenant de résoudre les noms
p - Afficher le processus à l'aide de socket

Par exemple :

# 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. utiliser lsof pour trouver les ports ouverts

Pour répertorier tous les ports ouverts sur un système, utilisez la commande suivante pour répertorier le nom et le numéro du processus qui a ouvert les ports.

# lsof -i

Voici un exemple de sortie :

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

Tester un port en externe

L'application telnet peut être utilisée pour tester la connectivité d'un socket réseau simple, mais uniquement pour les connexions TCP, pas UDP. Par exemple, si je souhaite voir si le port TCP 80 d'un système est prêt à accepter une connexion, je précise l'adresse IP et le port pour telnet :

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

Si le serveur n'écoute pas la réponse est différente :

# 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
  • Cela indique que la connexion a été activement refusée. Le sous-système TCP a reçu le paquet, l'a examiné et a découvert qu'il s'agissait d'une demande d'ouverture d'un socket sur le port 80, a constaté qu'aucun processus n'était prêt à accepter la connexion et a répondu par un refus.
  • Si le pare-feu était configuré pour bloquer ou filtrer la connexion, telnet afficherait quelque chose de très similaire à ce qui précède, même s'il y avait un processus prêt à accepter la connexion.
  • Si le pare-feu était configuré pour supprimer les connexions, nous ne verrions aucune réponse et telnet expirerait à la place :
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out

Liste des règles de pare-feu

Dans Red Hat Enterprise Linux, les règles de pare-feu peuvent être répertoriées à l'aide de la commande de service :

# service iptables status

Ou en utilisant la commande iptables :

# iptables -xvn -L


Linux
  1. Comment redémarrer le service réseau sur CentOS 8 ou RHEL 8

  2. Comment ouvrir le port Http (80) dans Iptables sur CentOS

  3. CentOS / RHEL 7 :Comment ouvrir un port dans le firewall avec firewall-cmd ?

  4. Comment désactiver NetworkManager sur CentOS / RHEL 7

  5. Comment ouvrir un port dans CentOS / RHEL 7

Comment configurer une interface réseau virtuelle sur RHEL 8 / CentOS 8

RHEL 8 / CentOS 8 ouvre le port FTP 21 avec pare-feu

Comment ouvrir et fermer des ports sur RHEL 8 / CentOS 8 Linux

Comment vérifier les ports ouverts sur RHEL 8 / CentOS 8 Linux

Comment créer un pont réseau sur CentOS 7 / RHEL 7

Comment rechercher et fermer des ports ouverts sous Linux