Comment savoir si un port TCP ou UDP est ouvert ou fermé sous Linux

Savoir si un port TCP ou UDP est ouvert ou fermé est une tâche fondamentale pour tout administrateur système et réseau. Souvent, il est essentiel de savoir si les ports sont ouverts pour établir la communication avec le service qui écoute derrière, mais il est également très important de savoir s'ils sont fermés pour éviter d'éventuels problèmes de sécurité. Aujourd'hui, dans cet article, nous allons vous montrer comment savoir si un port est ouvert ou fermé dans un Linux/Unix système d'exploitation, car ce système d'exploitation est normalement utilisé dans les serveurs.

Il y a plusieurs façons de vérifier si un certain port est ouvert ou fermé, en particulier sous Linux, la première d'entre elles utilise le populaire programme Netcat qui est pré-installé dans toutes les distributions, alors un très bon moyen de savoir si un port est ouvert C'est en le vérifiant directement avec le Nmap programme qui nous permettra d'analyser tous les ports d'un certain hôte. Enfin, si nous voulons savoir si nous avons un port ouvert ou fermé, nous devrons le regarder dans le pare-feu et aussi dans les connexions actuelles du système d'exploitation.

Dites si un port TCP ou UDP est ouvert ou fermé sous Linux

Afficher les ports ouverts avec Netcat

Netcat est un outil fourni par défaut dans la plupart des distributions Linux, donc, en plus d'être très facile à utiliser, nous n'aurons pas besoin d'installer de packages supplémentaires. Avant de vérifier avec Netcat si le port est ouvert, voyons les deux paramètres Netcat les plus importants:

  • z est un paramètre qui garantit qu'à la fin du contrôle, la connexion est fermée ou, sinon, le programme resterait en cours d'exécution en boucle jusqu'à ce que nous le terminions manuellement avec control + C, de la même manière que lors d'un ping sur Linux.
  • v est le paramètre chargé de vérifier si le port est ouvert ou fermé.

Pour vérifier le port, ce que nous devons faire est de taper ce qui suit dans un terminal:

nc -zv {IP} {PUERTO}

Par exemple, pour vérifier port 443 sur notre routeur, nous allons Type:

nc -zv 192.168.10.1 443

Dans l'image suivante, vous pouvez voir comment ce port est ouvert:

Si nous testons le site Web de cet article et le port 443, nous obtiendrons des informations similaires:

Dans le cas où il serait fermé, nous devrions mettre ceci:

Comme vous l'avez vu, il est très facile de vérifier si un port est ouvert ou fermé avec Netcat, un utilitaire très simple préinstallé sous Linux. En plus des commandes «z» et «v», nous avons également d'autres arguments disponibles qui nous permettront de connaître plus d'informations. Si nous exécutons la commande suivante, l'aide apparaîtra:

nc -h

Comme vous pouvez le voir, nous avons de nombreux arguments pour étendre les fonctionnalités.

Afficher les ports ouverts avec Nmap

Nmap est le programme par excellence pour découvrir les hôtes et aussi pour vérifier si les différents ports sont ouverts, ce programme n'est pas pré-installé dans les systèmes d'exploitation Linux, mais on peut l'installer directement à partir des référentiels avec l'ordre suivant:

sudo apt install nmap

Une fois installé, pour savoir si un port spécifique est ouvert, il faut mettre la commande suivante:

nmap -p {PUERTO} {IP}

Dans l'image suivante, vous pouvez voir comment un port ouvert apparaîtrait:

Dans le cas où un port est fermé ou filtré par un pare-feu, ce qui suit apparaîtra:

Si nous voulons analyser tous les ports d'un certain hôte ou d'une plage de ports, nous devrons indiquer une plage de ports comme suit:

nmap -p {PUERTO}-{PUERTO} {IP}

Par exemple :

nmap -p 1-65535 192.168.10.1

Comme vous pouvez le voir, vérifier les ports ouverts avec Nmap est vraiment simple, en plus, nous pouvons scanner tous les hôtes sur le réseau local domestique ou professionnel, pour analyser plus tard les différents ports.

Vérifiez le pare-feu sous Linux

Si nous voulons vérifier si nous avons un port ouvert pour accepter les connexions, la première chose à vérifier est l'état du pare-feu dans notre système d'exploitation Linux. Par défaut, sur tous les serveurs Linux, la politique est permissive, c'est-à-dire que tous les paquets sont acceptés par la politique. Nous pouvons modifier cette politique pour une politique restrictive, et même ajouter de nouvelles tables, chaînes et règles pour autoriser ou refuser le trafic.

Si dans notre terminal Linux, nous mettons ce qui suit:

iptables -L

Nous obtiendrons toutes les chaînes et règles de la table «filter» iptables, dans le cas de l'utilisation de Nftables, vous devez indiquer la commande suivante:

nft list ruleset

Une recommandation de sécurité très importante est que tous les ports sur un serveur Linux doivent être fermés, de cette manière, lorsque nous levons un service écoutant sur un certain port, il ne sera pas accessible à moins que nous l'autorisions dans le pare-feu. Nous devons vérifier en détail si un certain port est ouvert ou non pour que nos services soient accessibles depuis l'étranger.

Afficher l'état des connexions TCP et UDP

Si nous voulons connaître l'état de tous les protocoles TCP, UDP, ICMP et autres de notre système d'exploitation, un outil largement utilisé a toujours été «netstat», cependant, cet outil a été à la deuxième place grâce au nouveau «ss» cela nous fournira une grande quantité d'informations facilement et rapidement. Cet outil est en charge de vérifier toutes les sockets ouvertes ou fermées sur notre serveur Linux, et nous pourrons voir les statistiques desdites sockets ouvertes ou fermées. Si vous avez utilisé l'outil netstat dans le passé, nous sommes sûrs que vous allez adorer ce nouvel outil «ss».

L'outil «ss» est déjà pré-installé sur les systèmes d'exploitation Linux dans le cadre du système lui-même, comme c'est le cas avec le «ping», le «traceroute» et bien d'autres outils. Si nous ouvrons une console, à la fois en mode utilisateur et en mode super-utilisateur, nous devons exécuter:

ss

Une fois que nous avons exécuté cet ordre, nous pouvons voir ce qui suit:

Nous verrons l'état de la connexion (ESTAB), ainsi que les paquets reçus et envoyés, l'adresse locale et le port, ainsi que l'adresse distante et le port utilisé. Nous allons avoir un grand nombre de ports utilisés par les différents programmes et services que nous aurons installés dans le système d'exploitation.

Si nous voulons voir l'état de tous les ports (sockets), nous pouvons mettre l'ordre suivant:

ss -a

Si nous voulons voir uniquement les ports qui «écoutent», il faut mettre la commande suivante:

ss -l

Dans l'image suivante, vous pouvez voir un exemple de ports qui sont «PRÊTS» pour accepter les connexions entrantes:

Dans le cas où nous voulons afficher les connexions TCP, nous devrons utiliser l'argument «-t» et dans le cas où nous voulons afficher les connexions UDP, nous devrons utiliser l'argument «-u».

ss -t ss -u

La commande «ss» est vraiment utile pour afficher toutes les connexions établies et aussi à l'écoute dans notre système d'exploitation Linux.

Comme vous l'avez vu, nous avons différentes méthodes pour savoir si un port est ouvert ou fermé sur un hôte distant et aussi sur notre ordinateur local, en fonction de ce que nous voulons savoir, nous utiliserons tel ou tel outil, le plus important est que tous les ports qui ne sont pas utilisés doivent être fermés pour la sécurité à travers le pare-feu, de cette manière, nous éviterons les problèmes de sécurité et l'exploitation des vulnérabilités dans les serveurs.