GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier (scanner) les ports ouverts sous Linux

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 vers l'extérieur sur votre système Linux.

Qu'est-ce que le numéro de port ouvert

Un port d'écoute est un port réseau sur lequel une application écoute. Vous pouvez obtenir une liste des ports d'écoute de votre système en interrogeant la pile réseau avec des commandes telles que 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 provenant d'emplacements distants.

Par exemple, si vous exécutez un serveur Web qui écoute sur les ports 80 et 443 et que ces ports sont ouverts sur votre pare-feu, n'importe qui (sauf les ips bloquées) pourra accéder aux sites web hébergés sur votre serveur web en utilisant son navigateur. Dans ce cas, les deux 80 et 443 sont 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érifier 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 d'analyse de port. 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 depuis 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 pour rechercher les ports TCP et -p- pour rechercher tous les 65535 ports. Si -p- n'est pas utilisé nmap analysera uniquement les 1000 ports les plus populaires.

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST
Nmap scan report for 10.10.8.8
Host is up (0.0012s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

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

Pour rechercher les 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 de nmap et découvrez toutes les autres options puissantes de cet outil.

Vérifier les ports ouverts avec netcat #

Netcat (ou nc ) est un outil de ligne de commande qui peut lire et écrire des données sur des connexions réseau, à l'aide des protocoles TCP ou UDP.

Avec netcat vous pouvez analyser un seul port ou une plage de ports.

Par exemple, pour rechercher des ports TCP ouverts sur une machine distante avec l'adresse IP 10.10.8.8 dans la plage 20-80 vous utiliseriez la commande suivante :

nc -z -v 10.10.8.8 20-80

Le -z l'option indique nc pour scanner uniquement les ports ouverts, sans envoyer de données et le -v est pour des informations plus détaillées.

La sortie ressemblera à ceci :

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
...
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Si vous voulez que seules les lignes avec les ports ouverts soient imprimées à l'écran, filtrez les résultats avec le grep commande.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Pour rechercher les ports UDP, passez le -u option au nc commande :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Le 2>&1 construct redirige l'erreur standard vers la sortie standard.

Vérifier les ports ouverts à l'aide de Bash Pseudo Device #

Une autre façon de vérifier si un certain port est ouvert ou fermé consiste à utiliser le shell Bash /dev/tcp/.. ou /dev/udp/.. pseudo-périphérique.

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

L'instruction if..elsestation suivante vérifiera si le port 443 sur 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 fonctionne le code ci-dessus ?

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 le timeout commande pour tuer la commande de test après 5 secondes. Si la connexion est établie avec kernel.org port 443 la commande de test renverra true.

Pour rechercher une plage de ports, utilisez 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 ressemblera à ceci :

port 22 is open
port 80 is open

Conclusion #

Nous vous avons montré plusieurs outils que vous pouvez utiliser pour rechercher des ports ouverts. Il existe également 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 .

Si vous avez des questions ou des remarques, veuillez laisser un commentaire ci-dessous.


Linux
  1. Comment vérifier la version de Redhat

  2. Comment vérifier les ports ouverts sous Linux avec netstat, lsof et nmap

  3. Comment fermer les ports sous Linux ?

  4. Comment vérifier l'écoute / les ports ouverts avec Netstat sous Linux

  5. Comment lister les ports ouverts sur le serveur Linux/Unix

Comment vérifier les ports ouverts sur Debian 10

Comment vérifier qu'un port est ouvert sur un système Linux distant

Comment rechercher et fermer des ports ouverts sous Linux

Comment utiliser Netcat pour analyser les ports ouverts sous Linux

Comment vérifier tous les ports ouverts de votre système Linux

Comment vérifier les ports ouverts sous Linux ?