Comment trouver les ports ouverts dans Linux?

Je sais que je peux utiliser nmap pour voir quels ports sont ouverts sur une machine spécifique. Mais ce dont j’ai besoin, c’est d’un moyen de le récupérer du côté de l’hôte lui-même.

Actuellement, si j’utilise nmap sur l’une de mes machines pour vérifier l’autre, j’obtiens par exemple :

info:~# nmap 192.168.1.3

PORT    STATE  SERVICE
25/tcp  open   smtp
993/tcp open   imaps
80/tcp  open   http
23/tcp closed  telnet
143/tcp open   imap
443/tcp open   https
465/tcp open   smtps

Existe-t-il un moyen de faire cela sur l’hôte lui-même ? Pas à partir d’une machine distante vers un hôte spécifique.

Je sais que je peux le faire

nmap localhost 

Mais je ne veux pas faire cela, car je vais insérer la commande dans un script qui passera par toutes les machines.

Sous Linux, vous pouvez utiliser :

ss -ltu

ou

netstat -ltu

ltu: Listening TCP et UDP ports.

Ajoutez l’option -n (pour ss ou netstat) si vous voulez désactiver la traduction du numéro de port et de l’adresse IP en service et nom d’hôte.

Ajoutez l’option -p pour voir les processus (s’il y en a, certains ports peuvent être liés par le noyau comme pour NFS) qui écoutent (si vous n’avez pas les privilèges du super-utilisateur, cela ne donnera cette information que pour les processus s’exécutant sous votre nom).

Cela listera les ports sur lesquels une application écoute (pour UDP, il s’agit d’une socket qui lui est liée). Notez que certains peuvent n’écouter que sur une adresse donnée (IPv4 et/ou IPv6), ce qui apparaîtra dans la sortie de ss/netstat (0.0.0.0 signifie écouter sur n’importe quelle adresse IPv4, [: :] sur n’importe quelle adresse IPv6). Même dans ce cas, cela ne signifie pas qu’un autre hôte sur le réseau puisse contacter le système sur ce port et cette adresse, car n’importe quel pare-feu, y compris le pare-feu de l’hôte, peut bloquer ou masquer/rediriger les connexions entrantes sur ce port en se basant sur des règles plus ou moins complexes (comme n’autoriser que les connexions provenant de tel ou tel hôte, de tel ou tel port source, à telle ou telle heure et seulement jusqu’à telle ou telle fois par minute, etc…).

Vous pouvez également utiliser

sudo lsof -i |grep LISTEN

qui affichera tous les ports actuellement à l’ÉCOUTE.

Il suffit de faire nmap localhost ou nmap 127.0.0.1

Il y a aussi ss -lntu

Si vous connaissez déja le PID du processus, exécuter la commande suivantes:

netstat --all --program | grep '3265'
  • --all affiche les sockets qui écoutent et ceux qui n’écoutent pas.

  • --program affiche le PID et le nom du programme auquel appartient la socket.