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 ports80
et443
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-sU
au 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
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
.
Laisser un commentaire