Android

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

Linux Astuces - 10. Scanner un réseau (liste des IP up)

Linux Astuces - 10. Scanner un réseau (liste des IP up)

Table des matières:

Anonim

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 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 Open Port

Un port d'écoute est un port réseau sur lequel une application écoute. Vous pouvez obtenir une liste des ports d'écoute sur 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.

De manière générale, 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, quiconque (à l'exception des ips bloqués) pourra accéder aux sites Web hébergés sur votre serveur Web à l'aide de son navigateur. Dans ce cas, 80 et 443 sont des ports ouverts.

Les ports ouverts peuvent poser un risque pour la sécurité car chaque port ouvert peut être utilisé par des attaquants pour exploiter une vulnérabilité ou effectuer tout autre type d'attaques. Vous ne devez exposer que les ports nécessaires aux fonctionnalités 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 de pénétration.

S'il est disponible, nmap devrait être votre premier outil en matière de numérisation 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 à partir de la console détermine les ports qui écoutent les connexions TCP à partir du réseau:

sudo nmap -sT -p- 10.10.8.8

-sT indique à nmap de rechercher les ports TCP et à -p- de rechercher tous les ports 65535. Si -p- n'est pas utilisé, nmap analysera seulement 1000 ports.

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 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 (ou nc ) est un outil en ligne de commande qui peut lire et écrire des données sur des connexions réseau, en utilisant les 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 utiliserez la commande suivante:

nc -z -v 10.10.8.8 20-80

L'option -z indique à nc de rechercher uniquement les ports ouverts, sans envoyer de données et l'option -v est destinée à 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 succeeded!… Connection to 10.10.8.8 80 port succeeded!

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 rechercher des ports UDP, passez l'option -u à la commande nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

Vérifier les ports ouverts à l'aide du pseudo-périphérique Bash

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

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

L'instruction if..else suivante vérifie si le port 443 sur kernel.org est ouvert:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

Comment fonctionne le code ci-dessus?

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

Vous pouvez également utiliser la boucle for pour vérifier une plage de ports:

for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done for PORT in {20..80}; do timeout 1 bash -c " /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 module de socket Python, curl , telnet ou wget .

Terminal