Comment lister les ports ouverts sur Linux ?

How List Open Ports Linux



En réseau, un port est une fonctionnalité intéressante. C'est un moyen pour le trafic réseau d'identifier l'application ou le service de destination. Chaque processus/service obtient son port unique. Un port sera toujours associé à l'adresse IP de l'hôte avec le protocole.

C'est une de mes métaphores préférées pour décrire ce qu'est un port. Imaginez un navire chargé de marchandises, qui voyagera vers une terre lointaine. Quelles informations sont nécessaires pour atteindre correctement la destination ? Par souci de simplicité, disons qu'il a besoin du pays (l'adresse IP) et du Port le navire accostera.







Dans ce guide, découvrez comment répertorier les ports ouverts sur Linux.



Port sous Linux

Les ports agissent comme un point de terminaison de la communication. C'est un nombre de 16 bits (0 à 65535 en décimal). Bien que la gamme soit large, pour une facilité d'utilisation, les ports sont classés en trois catégories. Chaque catégorie est étiquetée comme la plage de valeurs de port :



  • 0 à 1023 : Il s'agit des ports connus, également appelés ports système, qui sont réservés aux processus système offrant une grande variété de services réseau. Pour se lier à un port bien connu, un processus doit avoir le privilège de superutilisateur.
  • 1024 à 49151 : Il s'agit des ports enregistrés, également appelés ports utilisateur, qui sont désignés par l'IANA pour des services spécifiques. Sur demande, un processus peut y avoir accès. Dans le cas de la plupart des systèmes, aucun privilège de superutilisateur n'est requis pour utiliser ces ports.
  • 49152 à 65535 : Ce sont les ports dynamiques, également appelés ports privés. Ces ports ne peuvent pas être enregistrés auprès de l'IANA. Ces ports sont ouverts à l'utilisation pour des services privés ou personnalisés et peuvent également être automatiquement attribués en tant que ports éphémères (ports éphémères utilisés par IP).

Sous Linux, il existe plusieurs façons de vérifier les ports ouverts. Par défaut, tout port restera fermé à moins qu'une application ne l'utilise. Si un port est ouvert, il doit être affecté à un service/processus.





Liste des ports ouverts

Il est plus facile d'identifier quels ports sont utilisés plutôt que quels ports sont ouverts. C'est pourquoi la section suivante présentera des méthodes pour répertorier tous les ports actuellement utilisés. Sous Linux, plusieurs outils sont disponibles pour cette tâche. La plupart d'entre eux sont intégrés à n'importe quelle distribution Linux.

Apprendre quels ports sont actuellement ouverts peut être utile dans divers scénarios. Il est possible de configurer un port dédié pour une certaine application. Un port ouvert peut également être une indication forte d'intrusion dans le réseau.



Les méthodes suivantes sont illustrées sur Ubuntu 20.04.1 LTS.

Lister les protocoles et les ports ouverts depuis /etc/services

Le fichier /etc/services contient des informations sur les services en cours d'exécution. C'est un gros dossier, donc prêt à être submergé.

$chat /etc/prestations de service| moins

Lister les ports ouverts à l'aide de netstat

L'outil netstat est un utilitaire permettant d'afficher les connexions réseau pour TCP, les tables de routage et diverses interfaces réseau. Il offre également des statistiques de protocole réseau. En utilisant netstat, nous pouvons lister tous les ports ouverts du système.

Exécutez la commande netstat suivante :

$netstat -atu

Voyons rapidement tous les indicateurs que nous avons utilisés dans cette commande.

  • à : indique à netstat d'afficher toutes les sockets
  • t : indique à netstat de lister les ports TCP
  • vous : indique à netstat de lister les ports UDP

Voici une autre variante de la commande netstat :

$netstat -lntu

Il y a deux nouveaux drapeaux utilisés dans la commande. Que signifient-ils?

  • l : indique à netstat d'imprimer uniquement les sockets d'écoute
  • m : indique à netstat d'afficher le numéro de port

Pour afficher le PID du processus qui utilise un port, utilisez l'indicateur -p :

$netstat -Intup

Lister les ports ouverts en utilisant ss

L'outil ss est un utilitaire pour enquêter sur socket. Son utilisation est similaire à netstat.

Pour répertorier les ports ouverts, exécutez la commande ss suivante :

$ss-lntu

Les drapeaux sont similaires à netstat. Les fonctions qu'ils décrivent sont également assez similaires.

  • l : indique à ss d'afficher les sockets d'écoute
  • m : indique à ss de ne pas essayer de résoudre les noms de service
  • t : indique à ss d'afficher les sockets TCP
  • vous : indique à ss d'afficher les sockets UDP

Lister les ports ouverts en utilisant lsof

La commande lsof consiste à lister les fichiers ouverts. Cependant, il peut également être utilisé pour afficher les ports ouverts.

Exécutez la commande lsof suivante :

$lsof-je

Pour obtenir les ports ouverts d'un protocole spécifique (TCP, UDP, etc.) puis le définir après le drapeau -i, utilisez :

$lsof-je <protocole>

Lister les ports ouverts à l'aide de nmap

L'outil nmap est un outil puissant pour l'exploration du réseau et l'analyse de la sécurité/des ports. Il peut signaler tous les ports ouverts dans le système.

Pour répertorier les ports TCP ouverts, exécutez la commande nmap suivante. Ici, l'adresse IP est celle de l'ordinateur hôte :

$sudo nmap -sT -p-hôte local

Ici, il y a deux parties de l'argument de commande.

  • -sT : cette section indique à nmap de rechercher les ports TCP.
  • -p- : Ceci indique à nmap de rechercher tous les 65535 ports. S'il n'est pas utilisé, nmap analysera seulement 1000 ports par défaut.

Si vous devez répertorier les ports UDP ouverts, exécutez la commande nmap suivante :

$sudo nmap -son -p-hôte local

Pour obtenir à la fois les ports TCP et UDP ouverts, utilisez la commande suivante :

$sudo nmap -n -PN -sT -son -p-hôte local

Lister les ports ouverts à l'aide de netcat

L'outil netcat est un utilitaire de ligne de commande permettant de lire et d'écrire des données sur des connexions réseau via les protocoles TCP et UDP. Cet outil peut également être utilisé pour lister les ports ouverts. Il peut effectuer des tests sur un port spécifique ou une plage de ports.

La commande netcat suivante analysera le port de 1 à 1000. La commande netcat effectuera l'analyse sur le protocole TCP par défaut :

$NC-Avec -vhôte local1-1000

Il peut également être étendu à toute la liste des ports possibles :

$NC-Avec -vhôte local1-65535

Faisons une rapide ventilation des drapeaux.

  • Avec : indique à netcat de rechercher uniquement les ports ouverts sans envoyer de données
  • v : indique à netcat de s'exécuter en mode verbeux

Pour obtenir uniquement les ports ouverts de cette liste, filtrez la sortie avec grep pour le terme réussi.

$NC-Avec -vhôte local0-65535 2> &1 | saisirréussi

Si vous souhaitez effectuer l'analyse sur le protocole UDP, ajoutez l'indicateur -u.

$NC-Avec -v -uhôte local0-65535 2> &1 | saisirréussi

Dernières pensées

Comme démontré, il existe de nombreuses façons de rechercher des ports ouverts sous Linux. Je suggère d'essayer toutes les méthodes avant de décider laquelle maîtriser. Si vous utilisez régulièrement un certain outil comme netcat ou nmap, la maîtrise des méthodes associées sera la plus bénéfique.

Bon calcul !