que vous résolviez des problèmes de connectivité réseau ou que vous configuriez un pare-feu, l’une des premières choses à vérifier est de savoir quels ports sont réellement ouverts sur votre système.

Cet article décrit plusieurs approches pour savoir quels ports sont ouverts à l’extérieur sur votre système Linux.

Qu’est-ce que le port ouvert #

un port d’écoute est un port réseau sur lequel une application écoute., Vous pouvez obtenir une liste des ports en écoute sur votre système par l’interrogation de la pile réseau avec des commandes comme: ss, netstat ou lsof. Chaque port d’écoute peut être ouvert ou fermé (filtré) à l’aide d’un pare-feu.

en termes généraux, un port ouvert est un port réseau qui accepte les paquets entrants en provenance d’emplacements distants.,

par exemple, si vous utilisez un serveur web qui écoute sur les ports80et443 et que ces ports sont ouverts sur votre pare-feu, n’importe qui (sauf les adresses IP bloquées) pourra accéder aux sites Web hébergés sur votre serveur web en utilisant son navigateur. Dans ce cas, 80 Et 443 sont tous deux des ports ouverts.

Les ports ouverts peuvent poser un risque de sécurité car chaque port ouvert peut être utilisé par des attaquants pour exploiter une vulnérabilité ou effectuer tout autre type d’attaque., Vous devez exposer uniquement les ports nécessaires à la fonctionnalité de votre application et fermer tous les autres ports.

vérifiez les Ports ouverts avec nmap #

Nmap est un puissant outil d’analyse de réseau qui peut analyser des hôtes uniques et de grands réseaux. Il est principalement utilisé pour les audits de sécurité et les tests d’intrusion.

si disponible,nmap devrait être votre premier outil en matière de numérisation de ports. Outre l’analyse des ports, nmap peut également détecter l’adresse Mac, le type de système d’exploitation , les versions du noyau , et bien plus encore.,

la commande suivante émise à partir de la console détermine quels ports écoutent les connexions TCP du réseau:

sudo nmap -sT -p- 10.10.8.8

Le -sT indique à nmap de rechercher les ports TCP et -p- pour rechercher tous les ports 65535. Si -p- n’est pas utilisé nmap va analyser seulement les 1000 ports les plus populaires.

La sortie ci-dessus montre que seuls les ports 22, 80 et 8069 sont ouverts sur le système cible.,

pour rechercher des ports UDP, utilisez-sUau lieu de-sT:

sudo nmap -sU -p- 10.10.8.8

pour plus d’informations, visitez la page de manuel nmap et lisez toutes les autres options puissantes de cet outil.

vérifiez les Ports ouverts avec netcat #

Netcat (ounc) est un outil de ligne de commande qui peut lire et écrire des données sur les connexions réseau, en utilisant les protocoles TCP ou UDP.

Avecnetcat vous pouvez analyser un seul port ou une plage de ports.,

Par exemple pour le balayage des ports TCP ouverts sur une machine distante avec l’adresse IP 10.10.8.8 dans la gamme 20-80 vous devez utiliser la commande suivante:

nc -z -v 10.10.8.8 20-80

Le -z option indique nc pour analyser uniquement pour les ports ouverts, sans envoyer de données et le -v pour plus d’informations détaillées.,

la sortie ressemblera à ceci:

Si vous voulez que seules les lignes avec les ports ouverts soient imprimées à l’écran, filtrez les résultats avec la commandegrep.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded!Connection to 10.10.8.8 80 port succeeded!

pour le balayage des ports UDP passer le -u option pour le nc commande:

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Le 2>&1 construire rediriger la sortie d’erreur standard vers la sortie standard.,

Vérifier les Ports Ouverts à l’aide de Bash Pseudo-Périphérique #

une Autre façon de vérifier si un port est ouvert ou fermé, est d’utiliser le shell Bash /dev/tcp/.. ou /dev/udp/.. pseudo-périphérique.

lors de l’exécution d’une commande sur un pseudo-périphérique/dev/$PROTOCOL/$HOST/$IP, Bash ouvrira une connexion TCP ou UDP à l’hôte spécifié sur le port spécifié.

Les si..,else va vérifier si le port 443 le kernel.org est ouvert:

if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'then echo "Port is open"else echo "Port is closed"fi
Port is open

Comment le code ci-dessus fonctionne?

lors de la connexion à un port à l’aide d’un pseudo-périphérique, le délai d’attente par défaut est énorme, nous utilisons donc la commandetimeout pour tuer la commande de test après 5 secondes. Si la connexion est établie avec kernel.org port 443 la commande test renverra true.,

Pour vérifier la plage de port d’utiliser la boucle for :

for PORT in {20..80}; do timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" && echo "port $PORT is open"done

La sortie devrait ressembler à quelque chose comme ceci:

port 22 is openport 80 is open

Conclusion

Nous vous avons montré les différents outils que vous pouvez utiliser pour scanner les ports ouverts. Il y a aussi d’autres utilitaires et méthodes pour vérifier les ports ouverts, par exemple, vous pouvez utiliser le Python socket module curl , telnet ou wget .