Découvrez si un port 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. Il est souvent essentiel de savoir si les ports sont ouverts pour établir la communication avec le service à l’é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 RedesZone, nous allons vous apprendre à savoir si un port est ouvert ou fermé dans un système d’exploitation Linux, car ce système d’exploitation est normalement utilisé dans les serveurs.
Il existe plusieurs façons de vérifier si un certain port est ouvert ou fermé, en particulier sous Linux, la première d’entre elles est d’utiliser le programme populaire Netcat qui est pré-installé dans toutes les distributions, alors un très bon moyen de savoir si un port est open C’est en le vérifiant directement avec le programme Nmap qui nous permettra de scanner tous les ports d’un certain hôte. Enfin, si nous voulons savoir si nous avons un port ouvert ou fermé, il faudra le regarder dans le pare-feu et aussi dans les connexions actuelles du système d’exploitation.
Afficher les ports ouverts avec Netcat
Netcat est un outil qui vient 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 de la vérification, la connexion est fermée ou, sinon, le programme resterait exécuté en boucle jusqu’à ce que nous le terminions manuellement avec contrôle + C, de la même manière qu’un ping sur Linux.
- v est le paramètre qui se charge 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 le port 443 sur notre routeur nous taperons :
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 RedesZone et le port 443, nous obtiendrons des informations similaires :
Dans le cas où il est 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 qui est pré-installé dans 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 depuis les dépôts dans 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 à quoi ressemblerait un port ouvert :
Dans le cas où un port est fermé ou filtré par un pare-feu, 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 pourrons scanner tous les hôtes du réseau local domestique ou professionnel, pour scanner ultérieurement 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» d’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 façon, lorsque nous élevons un service à l’écoute sur un certain port, il ne sera pas accessible à moins que nous ne l’autorisons dans le pare-feu. Nous devrons 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 sommes intéressés à 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» qui nous fournira une grande quantité d’informations facilement et rapidement. Cet outil est chargé de vérifier tous les sockets ouverts ou fermés sur notre serveur Linux, et nous pouvons voir les statistiques desdits sockets ouverts ou fermés. 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», «traceroute» et bien d’autres outils. Si nous ouvrons une console, à la fois en mode utilisateur et en mode superutilisateur, nous devons exécuter :
ss
Une fois que nous avons exécuté cet ordre, nous pouvons voir ce qui suit :
On verra l’état de la connexion (ESTAB), mais aussi les colis reçus et envoyés, l’adresse locale et le port, ainsi que l’adresse distante et le port utilisé. Nous allons utiliser un grand nombre de ports 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 on veut voir uniquement les ports qui sont «à l’écoute», il faut mettre la commande suivante :
ss -l
Dans l’image suivante, vous pouvez voir un exemple de ports « PRÊTS » pour accepter les connexions entrantes :
Dans le cas où nous souhaitons afficher les connexions TCP, nous devrons utiliser l’argument «-t» et dans le cas où nous souhaitons 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 également pour écouter sur 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, selon ce qui nous intéresse de savoir, nous utiliserons un outil ou un autre, 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 des serveurs.