GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier les ports ouverts sous Linux avec netstat, lsof et nmap

Cet article explique comment vérifier les ports ouverts à l'aide des commandes netstat, lsof et nmap pour savoir quels services écoutent sur quels ports.

Lors du dépannage de problèmes de connectivité réseau ou de problèmes spécifiques à une application, l'une des premières choses à vérifier doit être quels ports sont réellement utilisés sur votre système et quelle application écoute sur un port spécifique.

Le port réseau est identifié par son numéro, l'adresse IP associée et le type de protocole de communication, tel que TCP ou UDP. Avant tout, un port ouvert est un port réseau sur lequel une application ou un processus écoute, agissant comme point de terminaison de communication.

Chaque port d'écoute peut être ouvert ou fermé (filtré) à l'aide d'un pare-feu. En termes généraux, un port ouvert est un port réseau qui accepte les paquets entrants provenant d'emplacements distants.

Vérifier les ports ouverts avec netstat

netstat (statistiques du réseau ) est un outil en ligne de commande pour surveiller les connexions réseau entrantes et sortantes ainsi que pour afficher les tables de routage, les statistiques d'interface, etc. Cet outil est très important et très utile pour les administrateurs réseau Linux ainsi que les administrateurs système pour surveiller et dépanner leur réseau -problèmes liés et déterminer les performances du trafic réseau.

Pour répertorier tous les ports TCP ou UDP en cours d'écoute, y compris les services utilisant les ports et l'état du socket, utilisez la commande suivante :

$ sudo netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      24919/amavisd    
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      967/master   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      800/tinyproxy       
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      967/master          
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      844/pure-ftpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      768/sshd            
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      967/master          
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1001/dovecot  
tcp6       0      0 :::3306                 :::*                    LISTEN      823/mysqld       
tcp6       0      0 ::1:783                 :::*                    LISTEN      24911/spamd.pid -d  
tcp6       0      0 :::80                   :::*                    LISTEN      781/httpd         
tcp6       0      0 :::21                   :::*                    LISTEN      844/pure-ftpd 
tcp6       0      0 :::22                   :::*                    LISTEN      768/sshd            
tcp6       0      0 :::25                   :::*                    LISTEN      967/master        
tcp6       0      0 :::993                  :::*                    LISTEN      1001/dovecot        
tcp6       0      0 :::995                  :::*                    LISTEN      1001/dovecot        
udp        0      0 0.0.0.0:47967           0.0.0.0:*                           460/avahi-daemon: r 
udp        0      0 127.0.0.1:123           0.0.0.0:*                           472/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           472/ntpd     
udp6       0      0 :::123                  :::*                                472/ntpd 

Les options utilisées dans cette commande ont la signification suivante :

  • -t  :Afficher les ports TCP.
  • -u  :Afficher les ports UDP.
  • -l  :Afficher uniquement les ports d'écoute.
  • -n  :Afficher les adresses numériques au lieu de résoudre les hôtes.
  • -p :Affiche le PID et le nom du processus de l'écouteur. Ces informations s'affichent uniquement si vous exécutez la commande en tant qu'utilisateur root ou sudo.

Les colonnes importantes dans notre cas sont :

  • Proto :protocole utilisé par le socket.
  • Adresse locale :l'adresse IP et le numéro de port sur lesquels le processus écoute.
  • PID/Nom du programme :le PID et le nom du processus.

De plus, si vous voulez filtrer les résultats, utilisez le grep commande. Par exemple, pour trouver quel processus écoute sur le port TCP 22, vous tapez :

$ sudo netstat -tulnp | grep :22
tcp     0      0 0.0.0.0:22        0.0.0.0:*         LISTEN      768/sshd            
tcp6    0      0 :::22             :::*              LISTEN      768/sshd

Si la sortie est vide, cela signifie que rien n'écoute sur le port.

Pour en savoir plus sur netstat commande sous Linux, consultez sa page de manuel.

Vérifier les ports ouverts avec lsof

lsof signifiant "LiSt Open Files" est utilisé pour savoir quels fichiers sont ouverts par quel processus. Sous Linux, tout est un fichier. Vous pouvez considérer un socket comme un fichier qui écrit sur le réseau.

Pour obtenir une liste de tous les ports TCP en écoute avec le type lsof :

$ sudo lsof -nP -iTCP -sTCP:LISTEN
COMMAND     PID      USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd        768      root    3u  IPv4    16112      0t0  TCP *:22 (LISTEN)
sshd        768      root    4u  IPv6    16114      0t0  TCP *:22 (LISTEN)
httpd       781      root    4u  IPv6    16328      0t0  TCP *:80 (LISTEN)
httpd       781      root    6u  IPv6    16336      0t0  TCP *:443 (LISTEN)
tinyproxy   800 tinyproxy    0u  IPv4    16750      0t0  TCP *:8080 (LISTEN)
tinyproxy   805 tinyproxy    0u  IPv4    16750      0t0  TCP *:8080 (LISTEN)
mysqld      823     mysql   20u  IPv6    17479      0t0  TCP *:3306 (LISTEN)
pure-ftpd   844      root    4u  IPv4    16289      0t0  TCP *:21 (LISTEN)
pure-ftpd   844      root    5u  IPv6    16290      0t0  TCP *:21 (LISTEN)
master      967      root   13u  IPv4    17225      0t0  TCP *:25 (LISTEN)
master      967      root  103u  IPv4    17319      0t0  TCP 127.0.0.1:10025 (LISTEN)
dovecot    1001      root   24u  IPv4    18600      0t0  TCP *:995 (LISTEN)
dovecot    1001      root   37u  IPv6    18623      0t0  TCP *:993 (LISTEN)
httpd     24344    apache    4u  IPv6    16328      0t0  TCP *:80 (LISTEN)
httpd     24344    apache    6u  IPv6    16336      0t0  TCP *:443 (LISTEN)
/usr/bin/ 24911      root    5u  IPv4 25208447      0t0  TCP 127.0.0.1:783 (LISTEN)
/usr/bin/ 24911      root    6u  IPv6 25208449      0t0  TCP [::1]:783 (LISTEN)
spamd     24913      root    5u  IPv4 25208447      0t0  TCP 127.0.0.1:783 (LISTEN)
spamd     24913      root    6u  IPv6 25208449      0t0  TCP [::1]:783 (LISTEN)
/usr/sbin 24919    amavis    5u  IPv4 25208583      0t0  TCP 127.0.0.1:10024 (LISTEN)
/usr/sbin 24919    amavis    6u  IPv6 25208584      0t0  TCP [::1]:10024 (LISTEN)
smtpd     28403   postfix    6u  IPv4    17225      0t0  TCP *:25 (LISTEN)
smtpd     28403   postfix    7u  IPv6    17226      0t0  TCP *:25 (LISTEN)

Les options utilisées sont les suivantes :

  • -n  :Ne convertissez pas les numéros de port en noms de port.
  • -P  :Ne résolvez pas les noms d'hôte, affichez les adresses numériques.
  • -iTCP -sTCP:LISTEN  :Afficher uniquement les fichiers réseau avec l'état TCP ÉCOUTER.

Pour trouver quel processus écoute sur un port particulier, par exemple, le port 3306, vous utiliseriez :

$ sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  823 mysql   20u  IPv6  17479      0t0  TCP *:3306 (LISTEN)

La sortie montre que le serveur MySQL utilise le port 3306.

Pour en savoir plus sur lsof commande sous Linux, consultez sa page de manuel.

Vérifier les ports ouverts avec nmap

nmap , ou mappeur de réseau , est un outil de ligne de commande Linux open source pour l'exploration du réseau et l'audit de sécurité. Avec nmap, les administrateurs de serveur peuvent rapidement révéler les hôtes et les services, rechercher les problèmes de sécurité et rechercher les ports ouverts.

nmap Les commandes peuvent être utilisées pour vérifier qu'un seul port ou une série de ports sont ouverts.

Voici comment analyser le port 80 sur le système cible :

$ sudo nmap -p 80 192.168.0.1
Nmap scan report for 192.168.0.1
Host is up (0.000073s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds

Analysez les ports 1 à 200 sur le système cible :

$ sudo nmap -p 1-200 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:42 EEST
Nmap scan report for 192.168.0.1
Host is up (0.0000080s latency).
Not shown: 196 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
25/tcp open  smtp
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds

Analysez (rapidement) les ports les plus courants :

$ sudo nmap -F 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:44 EEST
Nmap scan report for 192.168.0.1
Host is up (0.000014s latency).
Not shown: 89 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
443/tcp  open  https
465/tcp  open  smtps
587/tcp  open  submission
993/tcp  open  imaps
995/tcp  open  pop3s
3306/tcp open  mysql
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds

Conclusion

En conclusion, vérifier quels ports sont ouverts et quelles informations peuvent être obtenues des services acceptant les connexions sur ces ports vous donne les informations dont vous avez besoin pour verrouiller votre serveur.

Par exemple, toute information superflue qui s'échappe de votre machine peut être utilisée par un utilisateur malveillant pour tenter d'exploiter des vulnérabilités connues ou d'en développer de nouvelles. Moins ils peuvent comprendre, mieux c'est.


Linux
  1. Comment vérifier les ports ouverts sous Linux avec netstat, lsof et nmap

  2. Comment vérifier la version du système d'exploitation et de Linux

  3. Comment vérifier l'écoute / les ports ouverts avec Netstat sous Linux

  4. Comment vérifier le port ouvert sur un système Linux distant

  5. Vérifier les ports d'écoute avec netstat

Comment vérifier les ports ouverts sur Debian 10

Comment vérifier qu'un port est ouvert sur un système Linux distant

Comment rechercher et fermer des ports ouverts sous Linux

Comment vérifier la version du système d'exploitation avec la ligne de commande Linux

Comment vérifier tous les ports ouverts de votre système Linux

Comment vérifier les ports ouverts sous Linux ?