Comment énumérer les ports ouverts sur Linux?

Comment énumérer les ports ouverts sur Linux?

Dans le réseautage, 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étaphore préférée pour décrire ce qu'est un port. Imaginez un navire chargé de cargaison, qui se rendra dans un terrain lointain. 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 s'accostera.

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

Ports sur Linux

Les ports agissent comme un point final de la communication. C'est un numéro 16 bits (0 à 65535 en décimal). Alors que la gamme est grande, pour une facilité d'utilisation, les ports sont classés en trois catégories. Chaque catégorie est étiquetée comme la plage de valeur du port:

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

Dans 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 comportera des méthodes pour répertorier tous les ports actuellement utilisés. Dans Linux, il existe plusieurs outils disponibles pour la tâche. La plupart d'entre eux viennent intégrés dans n'importe quelle distribution Linux.

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

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

Liste des protocoles et des ports ouverts de / etc / services

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

$ cat / etc / services | moins

Liste des ports ouverts à l'aide de netstat

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

Exécutez la commande netstat suivante:

$ netstat -atu

Allons une ventilation rapide de tous les drapeaux que nous avons utilisés dans cette commande.

  • un: Raconte à Netstat de montrer toutes les sockets
  • t: Indique à netstat de répertorier les ports TCP
  • u: Indique à netstat de répertorier les ports UDP

Voici une autre variation de la commande netstat:

$ netstat -lntu

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

  • l: Raconte à Netstat d'imprimer uniquement les prises d'écoute
  • n: Indique à netstat de montrer le numéro de port

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

$ netstat -lntup

Liste des ports ouverts à l'aide de 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: Dit à SS d'afficher les prises d'écoute
  • n: Dit à SS de ne pas essayer de résoudre les noms de service
  • t: Dit à SS d'afficher les prises TCP
  • u: Dit à SS d'afficher les prises UDP

Liste des ports ouverts à l'aide de LSOF

La commande LSOF doit lister les fichiers ouverts. Cependant, il peut également être utilisé pour afficher les ports ouverts.

Exécutez la commande LSOF suivante:

$ lsof -i

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

$ lsof -i

Liste des ports ouverts à l'aide de NMAP

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

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

$ sudo nmap -st -p- localhost

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

  • -St: Cette section indique à NMAP de rechercher des ports TCP.
  • -p- : Cela indique à NMAP de rechercher 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 -su -p- localhost

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

$ sudo nmap -n -pn -st -su -p- localhost

Liste des ports ouverts à l'aide de netcat

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

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

$ nc -z -v localhost 1-1000

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

$ nc -z -v localhost 1-65535

Allons une rupture rapide des drapeaux.

  • z: Indique à Netcat de scanner uniquement des ports ouverts sans envoyer de données
  • V: Dit à 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 -z -v localhost 0-65535 2> & 1 | Grep a réussi

Si vous souhaitez effectuer la numérisation sur le protocole UDP, ajoutez l'indicateur "-u".

$ nc -z -v -u localhost 0-65535 2> & 1 | Grep a réussi

Dernières pensées

Comme démontré, il existe des tonnes de façons de rechercher des ports ouverts sur 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.

Happy Computing!