GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire une analyse de port sous Linux

Pour de nombreux administrateurs système en herbe, la mise en réseau est un sujet vaste et intimidant. Pour les saisir, il existe de nombreuses couches, protocoles et interfaces à apprendre et de nombreuses ressources et utilitaires.

Les ports sont des terminaux de communication logiques dans les réseaux TCP/IP et UDP. De nombreux services, tels qu'un serveur Web, un serveur d'applications et un serveur de fichiers, fonctionneront sur une seule adresse IP. Chacun de ces services doit écouter et interagir sur un port particulier pour communiquer. Lorsque vous vous connectez à un ordinateur, vous le faites via une adresse IP et un port.

Dans certains cas, le programme que vous utilisez choisira automatiquement un port pour vous. Par exemple, lorsque vous accédez à https://www.fosslinux.com, vous vous connectez au serveur fosslinux.com sur le port 443, qui est le port standard pour le trafic Web sécurisé. Comme il s'agit de la valeur par défaut, votre navigateur ajoutera automatiquement le port pour vous.

Dans ce guide, vous en apprendrez plus sur les ports. Nous examinerons les divers programmes qui nous aideront à connaître l'état de nos ports. Ceux-ci incluent :

  •  Nmap
  •  Zenmap
  •  Netcat
  •  netstat
  •  Unicornscan
  •  A l'aide de la pseudo-unité Bash, vous pouvez rechercher des ports ouverts
  •  Utiliser la commande ss

Le logiciel netstat sera utilisé pour localiser les ports ouverts, et le programme Nmap sera utilisé pour obtenir des informations sur l'état des ports d'une machine sur un réseau. Vous pourrez trouver des ports populaires et rechercher dans vos systèmes des ports ouverts une fois que vous aurez terminé.

Se familiariser avec les ports

Le modèle de réseau OSI comporte plusieurs couches. La couche de transport est la partie de la pile de protocoles qui traite de la communication entre les services et les applications. Ce dernier est la couche principale avec laquelle les ports sont connectés.

Pour comprendre la configuration des ports, vous aurez besoin de quelques informations terminologiques. Voici une variété de mots qui seront utiles pour comprendre ce qui sera discuté ensuite :

Port :un emplacement réseau adressable introduit dans le système d'exploitation aide à différencier le trafic destiné à diverses applications ou services.

Sockets Internet :un descripteur de fichier qui définit une adresse IP et le numéro de port associé, ainsi que le protocole de transfert de données à utiliser.

Liaison :lorsqu'une application ou un service utilise une prise Internet pour gérer ses données d'entrée et de sortie.

Écoute :lorsqu'un service se lie à une combinaison port/protocole/adresse IP pour attendre les demandes des clients, il est supposé "écouter" sur ce port.

Il établit un lien avec le client le cas échéant après avoir reçu un message en utilisant le même port qu'il a écouté activement. Étant donné que les prises Internet sont associées à une adresse IP client particulière, le serveur peut écouter et traiter simultanément les requêtes de plusieurs clients.

Port Scanning tente de se connecter à une série de ports séquentiels pour savoir lesquels sont disponibles et quels services et systèmes d'exploitation s'exécutent derrière eux.

Identifier les ports souvent utilisés

Un numéro compris entre 1 et 65535 est attribué à chaque port.

Étant donné que plusieurs ports inférieurs à 1024 sont associés à des ressources que les systèmes d'exploitation de type Linux et Unix considèrent comme vitales pour les fonctions réseau, leur attribuer des services nécessite des privilèges root.

Les ports « enregistrés » sont ceux dont le numéro est compris entre 1024 et 49151. Cela signifie qu'en soumettant une demande à l'IANA (Internet Assigned Numbers Authority), ils peuvent être « réservés » dans un sens très large pour des services spécifiques. Ils ne sont pas strictement mis en œuvre, mais ils peuvent donner un aperçu des services opérant sur un port donné.

Les ports entre 49152 et 65535 ne sont pas disponibles pour l'enregistrement et sont recommandés pour un usage personnel. En raison du grand nombre de ports ouverts, vous n'aurez pas à vous soucier de la plupart des services qui se connectent à des ports particuliers.

Cependant, en raison de leur utilisation répandue, des ports spécifiques méritent d'être appris. Voici une liste qui est loin d'être complète :

  • 20 :Détails FTP
  • 22 :SSH
  • 23 :Telnet
  • 21 :Port de contrôle FTP
  • 25 : SMTP (protocole de transfert de courrier simple)
  • 80 :HTTP – Trafic Web non chiffré
  • 443 :HTTPS – Trafic réseau sécurisé
  • 143 :port de messagerie IMAP
  • 161 :SNMP
  • 194 :CRI
  • 389 :LDAP
  • 631 :port du démon d'impression CUPS
  • 666 :DOOM – Cet ancien jeu a son portage unique
  • 587 : SMTP – envoi de messages

Ce ne sont là que quelques-unes des installations qui sont souvent reliées aux ports. Les ports requis pour les applications que vous essayez de configurer doivent être mentionnés dans leur documentation respective.

La plupart des services peuvent être configurés pour utiliser des ports autres que le port normal, mais vous devez vous assurer que le client et le serveur utilisent le port non standard.

Le fichier qui contient une liste de plusieurs ports couramment utilisés s'appelle /etc/services.

tuts@fosslinux:~$ less /etc/services

ou

 tuts@fosslinux:~$ cat /etc/services

Il vous fournira une liste des ports populaires ainsi que les services qui vont avec :

Cela peut afficher différentes pages en fonction de votre configuration. Pour voir la page d'entrées suivante, appuyez sur ESPACE ou appuyez sur Q pour revenir à votre invite.

Analyse des ports

Une méthode de vérification des ports ouverts sur un PC ou un serveur est connue sous le nom de balayage de port. Les joueurs et les pirates utilisent également des scanners de ports pour rechercher des ports ouverts et des services d'empreintes digitales. Un port peut être ouvert, filtré, fermé ou non filtré, selon son état. Un port donné est disponible au cas où une application écoute activement le port donné pour les connexions ou les paquets/

L'une des premières choses à vérifier lors du dépannage de problèmes de connexion réseau ou de la configuration d'un pare-feu est de savoir quels ports sont disponibles sur votre appareil.

Cet article traite de plusieurs méthodes pour déterminer quels ports de votre système Linux sont disponibles pour le monde extérieur.

Qu'est-ce qu'un port ouvert ?

Un port d'écoute peut écouter sur un port réseau. Vous pouvez obtenir une liste des ports d'écoute de votre système à l'aide de commandes telles que ss, netstat ou lsof pour interroger la pile réseau.

Lors de l'utilisation d'un pare-feu, chaque port d'écoute peut être ouvert ou fermé (filtré).

Un port réseau est appelé port ouvert s'il accepte les paquets entrants provenant d'emplacements distants. Par exemple, si votre serveur Web écoute les ports 80 et 443 et que ces ports sont disponibles sur votre pare-feu, n'importe qui, à l'exception des adresses IP bloquées, peut utiliser son navigateur pour accéder aux sites Web hébergés sur votre serveur Web. Les ports 80 et 443 sont ouverts dans cette situation.

Les ports ouverts peuvent constituer un risque pour la sécurité, car les attaquants peuvent les utiliser pour pirater des vulnérabilités ou mener d'autres types d'attaques. Tous les autres ports doivent être fermés et seuls les ports nécessaires aux fonctionnalités de votre application doivent être exposés.

Dans le protocole Internet TCP/IP, il existe deux types de ports à rechercher :TCP (Transmission Control Protocol) et UDP (Uniform Datagram Protocol) (User Datagram Protocol). TCP et UDP ont chacun leurs méthodes d'analyse. Nous verrons comment effectuer une analyse de port dans un environnement Linux dans cet article, mais nous verrons d'abord comment fonctionne l'analyse de port. Il est important de se rappeler que l'analyse des ports est illégale dans de nombreux pays, alors vérifiez les autorisations avant d'analyser votre cible.

Rechercher TCP

Puisqu'il garde une trace de l'état des connexions, TCP est un protocole avec état. L'établissement de liaison à trois voies du socket serveur et du socket côté client est nécessaire pour une connexion TCP. Le client envoie un SYN à un socket serveur qui écoute, et le serveur répond par un SYN-ACK. Le client envoie ensuite un ACK pour terminer l'établissement de la connexion.

Un analyseur envoie un paquet SYN au serveur pour rechercher un port TCP ouvert. Le port est disponible si SYN-ACK est renvoyé. Le port est fermé si le serveur ne termine pas la poignée de main et répond par un RST.

Numériser avec UDP

D'autre part, UDP est un protocole sans état qui ne garde pas la trace de l'état de la connexion. Cela exclut également l'utilisation d'une poignée de main à trois.

Un scanner UDP est chargé d'envoyer un paquet UDP au port pour le rechercher. Un paquet ICMP est produit et renvoyé à l'origine si ce port est fermé. Si cela ne se produit pas, le port est ouvert.

Étant donné que les pare-feu perdent des paquets ICMP, l'analyse des ports UDP est toujours imprécise, ce qui entraîne des faux positifs pour les analyseurs de ports.

Scanneurs de ports

Nous pouvons passer à divers scanners de port et à leurs fonctionnalités maintenant que nous avons examiné les fonctions de numérisation de port. Ceux-ci incluent :

Nmap

Nmap est un mappeur de réseau qui a gagné en popularité en tant que l'un des outils de découverte de réseau gratuits les plus utilisés. Nmap est devenu l'un des outils les plus populaires pour les administrateurs réseau lors de la cartographie de leurs réseaux. Le logiciel peut être utilisé pour localiser des hôtes actifs sur un réseau, effectuer une analyse de port, des balayages de ping, la détection de système d'exploitation et la détection de version, entre autres.

Plusieurs cyberattaques récentes ont de nouveau souligné l'importance des outils d'audit de réseau comme Nmap. Par exemple, ils peuvent avoir été détectés plus tôt si les administrateurs système avaient suivi les appareils connectés, selon les analystes. Nous verrons ce qu'est Nmap, ce qu'il peut faire et comment utiliser les commandes les plus populaires dans ce didacticiel.

Nmap est un outil d'analyse de réseau capable d'analyser à la fois des hôtes uniques et de vastes réseaux. Il est également utilisé pour les tests d'intrusion et les audits de conformité.

En ce qui concerne l'analyse des ports, Nmap devrait être votre premier choix s'il est ouvert. Nmap peut détecter l'adresse Mac, la forme du système d'exploitation, les versions du noyau et bien plus encore en plus de l'analyse des ports.

Nmap n'est pas seulement un outil d'analyse de réseau. Il est également responsable de l'utilisation des paquets IP pour localiser tous les appareils connectés et fournir des informations sur les services en cours d'exécution et les systèmes d'exploitation.

Le logiciel est disponible pour divers systèmes d'exploitation, notamment Linux, Gentoo et Free BSD. Le plus souvent, il est utilisé via une interface de ligne de commande. Cependant, des interfaces graphiques sont également disponibles. Son succès a également été facilité par une communauté d'assistance aux utilisateurs dynamique et active.

Nmap a été conçu pour les réseaux à grande échelle et peut rechercher des milliers d'appareils connectés. Les petites entreprises, en revanche, utilisent de plus en plus Nmap ces dernières années. En raison de l'essor de l'Internet des objets, les réseaux de ces entreprises sont devenus plus complexes et, par conséquent, plus difficiles à sécuriser.

En conséquence, plusieurs outils de surveillance de sites Web utilisent désormais Nmap pour inspecter le trafic entre les serveurs Web et les appareils IoT. L'émergence récente de botnets IoT tels que Mirai a suscité l'intérêt pour Nmap, notamment en raison de sa capacité à interroger les appareils connectés via le protocole UPnP et à mettre en évidence toute machine potentiellement malveillante.

Jusqu'à présent, Nmap était le scanner de ports le plus polyvalent et le plus détaillé disponible. Tout, de l'analyse des ports à l'empreinte digitale du système d'exploitation et à l'analyse des vulnérabilités, est possible avec lui. L'interface graphique de Nmap s'appelle Zenmap et possède à la fois une interface CLI et une interface graphique. Il dispose d'un large éventail d'options pour effectuer des analyses rapides et précises. Voici comment configurer Nmap sur un système Linux.

Nmap aide à effectuer l'analyse des ports de diverses manières. Les variantes les plus largement utilisées incluent :

  • # analyse sS TCP SYN
  • # sT Analyse de connexion TCP
  • # analyses UDP sU
  • # sY SCTP INIT scan
  • # sN TCP NULL

Les principales distinctions entre ces types de scans sont de savoir s'ils protègent les ports TCP ou UDP et s'ils exécutent ou non un lien TCP. Voici les principales différences :

L'analyse sS TCP SYN est la plus basique de ces analyses et fournit à la plupart des utilisateurs toutes les informations nécessaires. Des milliers de ports sont analysés par seconde et n'éveillent pas les soupçons car ils ne complètent pas une liaison TCP.

L'analyse TCP Connect, qui interroge activement chaque hôte et demande une réponse, est la principale alternative à cette forme d'analyse. Cette analyse prend plus de temps qu'une analyse SYN, mais elle peut fournir des résultats plus précis.

L'analyse UDP fonctionne de la même manière que l'analyse de connexion TCP, sauf qu'elle analyse les ports DNS, SNMP et DHCP à l'aide de paquets UDP. Ce type d'analyse permet de vérifier les vulnérabilités, car ce sont les ports les plus couramment ciblés par les pirates.

L'analyse SCTP INIT examine deux services distincts :SS7 et SIGTRAN. Puisqu'il ne termine pas toute la procédure SCTP, cette analyse peut également prévenir les soupçons lors de la recherche d'un réseau externe.

L'analyse TOP NULL est un autre processus d'analyse ingénieux. Il exploite une faille dans le framework TCP qui lui permet d'exposer l'état des ports sans avoir à les interroger explicitement, vous permettant de voir leur état même si un pare-feu les protège.

Nous aborderons les points suivants dans cet article :

  • Comment configurer Nmap ?
  • Comment exécuter une analyse de port de base sur un ordinateur local et distant
  • Quel est le meilleur moyen de rechercher les ports TCP et UDP ?
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install nmap -y

Les ports écoutant les connexions TCP depuis le réseau peuvent être déterminés en exécutant la commande suivante depuis la console :

tuts@fosslinux:~$ sudo nmap -sT -p- 10.10.4.3

L'option -sT demande à Nmap de rechercher les ports TCP, tandis que l'option -p- lui demande d'analyser les 65535 ports. Si l'option -p- n'est pas spécifiée, Nmap ne vérifiera que les 1000 ports les plus courants.

Selon les performances, seuls les ports 22, 80 et 8069 sont ouverts sur la machine cible.

Au lieu de -sT, utilisez -sU pour rechercher les ports UDP comme suit :

tuts@fosslinux:~$ sudo nmap -sU -p- 10.10.4.3

Nous allons maintenant utiliser Nmap pour rechercher sur un serveur (hackme.org) les ports ouverts et répertorier les services disponibles sur ces ports. Tapez nmap et l'adresse du serveur dans l'invite de commande.

tuts@fosslinux:~$ nmap hackme.org

Puisqu'il a besoin des privilèges root, utilisez l'option -sU avec sudo pour rechercher les ports UDP.

tuts@fosslinux:~$ sudo nmap -sU hackme.org

Nmap possède également de nombreuses autres fonctionnalités, notamment :

  • -p- :analyse la liste complète des 65 535 ports
  • -sT :il s'agit d'une analyse de connexion pour TCP
  • -O :analyse le système d'exploitation en cours d'exécution
  • -v :analyse détaillée
  • -A :Analyse agressive, analyse de pratiquement tout
  • -T[1-5] :Pour définir la vitesse de numérisation
  • -Pn :se produit chaque fois que le serveur bloque le ping

Zenmap

Zenmap est une interface click-kiddie pour Nmap qui élimine le besoin de mémoriser ses commandes. Pour le configurer, installez zenmap en exécutant la commande suivante.

tuts@fosslinux:~$ sudo apt-get install -y zenmap

Alternativement,

mkdir -p ~/Downloads/zenmap
cd ~/Downloads/zenmap

wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-6_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/n/nmap/zenmap_7.80+dfsg1-1build1_all.deb

sudo apt install ./*.deb

Tapez l'adresse du serveur et choisissez parmi les options de recherche disponibles pour l'analyser.

Netcat

Netcat, qui peut être appelé nc, est un outil en ligne de commande. Il utilise les protocoles TCP ou UDP pour lire et écrire des données via des connexions réseau. Il s'agit également d'un rédacteur de port TCP et UDP brut qui peut également rechercher des ports.

Netcat peut rechercher un seul port ou certains ports.

Puisqu'il utilise l'analyse des liens, il est plus lent que Network Mapper. Pour le configurer, formez

tuts@fosslinux:~$ sudo apt install netcat-traditional -y

Écrivez ce qui suit pour voir si un port est disponible.

tuts@fosslinux:~$ nc -z -v hackme.org 80

Tapez le terme de recherche suivant pour trouver une liste de ports.

tuts@fosslinux:~$ nc -z -nv 127.0.0.1 50-80

Pour rechercher des ports TCP ouverts sur une machine distante avec l'adresse IP 10.10.4.3 dans la plage 20-80, par exemple, utilisez la commande suivante :

tuts@fosslinux:~$ nc -z -v 10.10.4.3 50-80

L'option -z indique à nc de rechercher uniquement les ports ouverts et de ne soumettre aucune donnée, tandis que l'option -v fournit des détails plus précis.

Voici à quoi ressemblera le produit final :

Filtrez les résultats avec la commande grep si vous voulez que les lignes avec les ports ouverts soient imprimées à l'écran.

tuts@fosslinux:~$ nc -z -v 10.10.4.3 50-80 2>&1 | grep succeeded

Passez le choix -u à ​​la commande nc pour rechercher les ports UDP :

tuts@fosslinux:~$ nc -z -v -u 10.10.4.3 50-80 2>&1 | grep succeeded

commande lsof

La commande lsof, qui répertorie les fichiers ouverts sous Linux, est le dernier outil que nous examinerons pour interroger les ports ouverts. Comme Unix/Linux est un fichier, un fichier ouvert peut être un flux ou un fichier réseau.

Utilisez l'option -i pour répertorier toutes les données Internet et réseau. Cette commande affiche une combinaison de noms de service et de ports numériques.

tuts@fosslinux:~$ sudo lsof -i

Exécutez lsof dans ce format pour voir quelle application écoute sur un port spécifique, exécutez la commande suivante.

tuts@fosslinux:~$ sudo lsof -i:80

En utilisant la commande netstat

Netstat est un outil de recherche d'informations sur le sous-système réseau Linux largement utilisé. Il peut être utilisé pour imprimer tous les ports disponibles au format suivant :

tuts@fosslinux:~$ sudo netstat -ltup

L'indicateur -l indique à netstat d'imprimer toutes les sockets d'écoute, -t toutes les connexions TCP, -u toutes les connexions UDP et -p tous les noms d'applications/programmes écoutant sur le port.

Ajoutez l'indicateur -n pour imprimer des valeurs numériques au lieu des noms de service.

tuts@fosslinux:~$ sudo netstat -lntup

Vous pouvez également utiliser la commande grep pour voir quelles applications écoutent sur un port spécifique.

tuts@fosslinux:~$ sudo netstat -lntup | grep "apache2."

Alternativement, comme indiqué, vous pouvez définir le port et localiser l'application qui y est attachée.

tuts@fosslinux:~$ sudo netstat -lntup | grep ":80"

Licorne scan

Unicornscan est un scanner de ports puissant et rapide conçu pour les chercheurs en sécurité. Il utilise sa pile TCP / IP distribuée par utilisateur, contrairement à Network Mapper. Ce dernier a plusieurs fonctionnalités que Nmap n'a pas. Certains d'entre eux sont mentionnés ci-dessous.
L'analyse asynchrone sans état de TCP est possible avec le type de variations des drapeaux TCP.

La capture de bannière TCP est une analyse UDP asynchrone et sans état avec des spécificités de protocole asynchrone qui envoient suffisamment de signatures pour obtenir une réponse. En évaluant les réponses, la reconnaissance active et passive du système d'exploitation, du programme et des composants distants est possible.

  • Filtrage et enregistrement des fichiers PCAP
  • Performance d'une base de données relationnelle
  • Prise en charge des modules personnalisés
  • Vues des ensembles de données personnalisables

Tapez unicornscan dans le champ de recherche pour installer Unicornscan en exécutant la commande suivante sur le terminal.

tuts@fosslinux:~$ sudo apt-get install unicornscan -y

Pour exécuter une analyse, écrivez ce qui suit.

tuts@fosslinux:~$ sudo us 127.0.0.1

À l'aide de l'unité Bash Pseudo, vous pouvez rechercher des ports ouverts

Lorsque vous cherchez à établir si un port est ouvert ou fermé, le pseudo-périphérique Bash shell /dev/tcp/ ou /dev/udp/ est très pratique.

Bash ouvrira un lien TCP ou UDP vers l'hôte spécifié sur le port spécifié lorsqu'une commande est exécutée sur un pseudo-périphérique /dev/$PROTOCOL/$HOST/$IP.

L'instruction if…else ci-dessous vérifiera si le port 443 sur kernel.org est ouvert :commande :

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

Étant donné que le délai d'expiration par défaut lors de la connexion à un port à l'aide d'un pseudo-périphérique est si long, nous utilisons la commande timeout pour détruire la commande de test après 5 secondes. La commande de test renverra true si le lien vers le port 443 de kernel.org est créé.

Utilisez la boucle for pour rechercher une plage de ports :

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

Utilisation de la commande ss

La commande ss est un autre outil précieux pour afficher les informations de socket. Ses performances sont très similaires à celles de netstat. La commande suivante affiche tous les ports d'écoute des connexions TCP et UDP sous forme de valeur numérique.

tuts@fosslinux:~$ sudo ss -lntu

Conclusion

Que vous soyez un Gamer, un DevOp ou un Hacker, les scanners de ports sont pratiques. Il n'y a pas de contraste approprié entre ces scanners; aucun d'entre eux n'est parfait et chacun a ses propres avantages et inconvénients. Vos besoins dicteront cela et comment vous voulez les utiliser.

Vous pouvez également rechercher des ports ouverts à l'aide d'autres utilitaires et méthodes, tels que le module socket Python, curl, telnet ou wget. Nous avons également montré comment déterminer quels processus sont connectés à des ports spécifiques.


Linux
  1. Comment changer le port SSH sous Linux

  2. Comment fermer les ports sous Linux ?

  3. Comment ouvrir un port sous Linux

  4. comment utiliser netstat sur un port spécifique sous Linux

  5. La commande Linux obtient le port inutilisé

Comment bloquer un port à l'aide d'un pare-feu sous Linux

Comment utiliser Netcat pour analyser les ports ouverts sous Linux

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Comment envoyer un ping à un numéro de port sous Linux

Comment vérifier les ports ouverts sous Linux ?

Ouvrir un port sous Linux