Menu Fermer

Port ouvert : sécurité, intrusion et piratage

Lorsque l’on intéresse à la sécurité informatique, on peut entendre parler de port réseau ouvert.
Selon comment, un pirate peut utiliser pour s’introduire dans un système.
En effet, cela peut être utilisé comme porte d’entrée afin de pirater votre PC.

Ainsi dans cet article, nous abordons les ports réseaux et les implications de sécurité.
Comment lister les ports ouverts sur son PC ?
Comment fermer un port pour éviter les piratages ?

Voici donc un article sur ports ouverts et la sécurité sur Windows et Linux.

Port ouvert : sécurité, intrusion et piratage

Qu’est ce que les ports réseaux ?

Un port réseau est un point d’entré ou de sortie réseau qu’une application ou le système d’exploitation peut utiliser.
Ce dernier se caractérise par un numéro, par exemple le port 139, le port 445.
Les services internet comme un service WEB, service DNS, service mail utilise par convention des numéros spécifiques.
Par exemple, un serveur WEB tourne sur le port 80 (HTTP) et 443 (HTTP).

Liste des ports TCP et services réseaux

Lorsque vous établissez une connexion vers une machine distance, vous vous connectez à un port distant en particulier
En général sur ce dernier une application est en cours de fonctionnement afin de répondre.
Par exemple, un serveur WEB, un serveur FTP, un serveur de jeux, etc.

Sur Windows, le fichier C:\Windows\System32\drivers\etc\services liste les ports avec les services.
Ainsi le port pour les connexions HTTP est le port 80.

La liste des ports et services dans le fichier services de Windows

Ainsi, ci-dessous, on voit que le PC :

  • ouvre une connexion sortante depuis le port 1026 vers le site malekal.com qui tourne sur le port distant 443
  • ouvre une autre connexion sortante depuis le port 1025 vers le google.fr à l’adresse 80
Connexion TCP distante avec les ports locaux et distants

Et donc :

  • Sur le serveur malekal.com se trouve un serveur WEB qui ouvre le port 443 en écoute. Ce dernier peut alors recevoir des connexions provenant d’appareil sur internet
  • De même sur google.fr des serveurs tournent sur le port 80 en attente de connexion

Plus de détails :

Les états des ports : ouverts, fermés

Un port ouvert est donc un port en écoute et attente de connexion entrante.
Par exemple, un serveur WEB ouvre les ports 80 et 443 par défaut et attends que des clients (navigateurs WEB) s’y connecte pour délivrer les pages WEB.

Par défaut Windows ou Linux ouvre des ports liés à des services réseaux (RPC, etc), il est donc normal d’avoir des ports ouverts.
Ainsi cela ne sert à rien de tenter de fermer tous les ports ouverts à tout prix.

En réalité les ports réseaux ont plusieurs états.

Ouvert (Listening)

Une application en cours de fonctionne ouvre un port dans le système d’exploitation.
Elle accepte alors les connexions entrantes vers ce dernier.
On peut ouvrir un port sur différents protocoles, par exemple TCP ou UDP.

Fermé (closed)

Le port est fermé (closed) est n’accepte aucune connexion entrante.

Filtré (filtered)

Une application ou équipement empêche d’atteindre le port.
En général, il s’agit d’un pare-feu ou une règle de routage qui ne transmet pas le paquet.

Non filtré

On peut accéder au port mais on ne connaît pas l’état ouvert ou fermé.

Les ports ouverts, sécurité et malwares

Deux aspects sont donc prendre en compte.
Puisque le service est en court de fonctionnement et en attente de connexion, ce dernier peut permettre une intrusion.
Si le service compte une vulnérabilité, un attaquant peut exploiter celle-ci pour exécuter un logiciel malveillant ou s’introduire dans le système.
Une technique d’attaque et de découverte consiste à vérifier tous les ports ouverts d’une machine pour énumérer les applications et services en cours de fonctionnement.
On appelle cela le scan de ports ou balayage de ports, plus d’informations : 

Enfin les vers informatiques (worms) tirent partie de cela en visant des vulnérabilités logicielles connues sur des services par défaut de Windows ou Linux.

Dans les années 2000, les backdoor fonctionnaient en mode serveur sur les ordinateurs infectés.
C’est à dire qu’un port de attente de connexion était ouvert, le pirate se connectait à ce dernier et donc à la backdoor pour contrôler l’ordinateur infecté.
Seulement, avec la multiplication des routeurs, ce fonctionnement n’a pu perdurer.

De nos jours, les trojan et autres menaces informatiques n’ouvrent plus de port en écoute et ne fonctionne plus en mode serveur.
Cela a cause des routeurs ou box qui empêche la connexion direct vers l’ordinateur infecté.

Ainsi ces derniers établissent des connexions sortantes vers un serveur de contrôle que l’on nomme C&C .
En général il s’agit d’un serveur WEB avec des pages spécifiques.
Le pirate contrôle alors les ordinateurs en donnant des ordres aux ordinateurs infectés depuis le serveur via une liste d’attente de tâche.
Enfin, le cheval de troie récupère les ordres en se connectant à ce dernier.
Plus d’informations :

Lister les ports ouverts

Les scans depuis internet

Il existe des services en ligne qui permettent de vérifier les ports ouverts.

Voici quelques services de ports scans :

Il faut bien comprendre que cela va tester les ports ouverts de votre routeur ou box depuis internet et non votre ordinateur.
En effet, ce dernier n’étant pas directement accessible puisqu’il est placé derrière votre routeur.

Par exemple ci-dessous, les ports sont filtrés car le routeur embarque un pare-feu.

scan de port pour lister les ports ouverts

Sous GNU/Linux

Sur Linux, la commande netstat permet de vérifier les connexions établies mais aussi de lister les ports en écoute (LISTENING).
Cette commande netstat accepte beaucoup de paramètres.

Pour lister les connexions en écoute, vous pouvez utiliser le commande netstat de cette manière :

netstat -taupe |grep LISTEN

On obtient alors une liste avec les numéros des ports, le PID du processus (identifiant du processus) et le nom du processus.

root@tuxgateway: ~$ netstat -taupe|grep LISTEN
tcp        0      0 *:2049                  *:*                     LISTEN     root       3006       2014/rpc.nfsd
tcp        0      0 *:4002                  *:*                     LISTEN     root       3021       2016/rpc.mountd
tcp        0      0 *:3335                  *:*                     LISTEN     eggdrop    1030325    23103/eggdrop
tcp        0      0 *:smux                  *:*                     LISTEN     root       2955       1984/snmpd
tcp        0      0 *:mysql                 *:*                     LISTEN     root       2305       1825/mysqld
tcp        0      0 localhost.localho:imap2 *:*                     LISTEN     root       1964       1640/couriertcpd
tcp        0      0 *:sunrpc                *:*                     LISTEN     root       1603       1395/portmap
tcp        0      0 *:www                   *:*                     LISTEN     root       3227       2038/apache
tcp        0      0 *:auth                  *:*                     LISTEN     root       2246       1774/gidentd
tcp        0      0 *:ftp                   *:*                     LISTEN     root       2962       2008/xinetd
tcp        0      0 *:ssh                   *:*                     LISTEN     root       2912       1990/sshd
tcp        0      0 *:921                   *:*                     LISTEN     root       2992       2011/rpc.statd
tcp        0      0 *:smtp                  *:*                     LISTEN     root       2653       1960/master
  • La première colonne affiche le protocole
  • Les colonnes de types : *:2049 affiche l’adresse locale suivi du port, ici * équivaut à toutes les adresses de la machine
  • la colonne *:* équivaut à n’importe quelle adresse distante sur n’importe quel port
  • la colonne LISTEN indique que le port local est en écoute, la colonne suivante indique l’utilisateur a partir duquel le programme ouvrant le port a été lancé
  • L’avant dernière colonne vous donne le PID du processus ayant ouvert le port
  • Enfin la dernière colonne vous donne le nom du processus ayant ouvert le port

Sous Windows

Netstat existe aussi sur Windows mais est plus limité que sur Linux.

Vous devez ouvrir l’invite de commandes puis dans celle-ci, saisissez :

netstat -ao

Les ports en écoute se listent en premier avec comme état LISTENING.

Netstat et lister les ports ouverts dans Windows

Depuis Windows Vista, le moniteur de ressources permet de lister les connexions de manières graphiques.
Bien entendu, il existe de multiples applications pour lister les connexions o ports ouverts.

Ci-dessous les ports en écoute depuis le moniteur de ressources de Windows.

Les ports en écoute depuis le moniteur de ressources de Windows.

Enfin cette vidéo vous montre comment afficher, lister et suivre les connexions réseaux établies par les processus et applications de Windows.

Comment fermer les ports ouverts

Pour fermer les ports réseaux ou rendre ce dernier inaccessible, il y a deux méthodes :

  • Arrêter le programme à l’origine de l’ouverture du port
  • Filtrer l’accès aux ports avec un pare-feu par exemple

Sur Linux

Sur Linux, utilisez le système de package de votre distribution afin de désinstaller ce dernier.

Enfin si vous désirez garder l’application, vous pouvez la désactiver du démarrage.

Sous GNU/Linux, ce sont généralement des dameons qui ouvrent des ports, arrêtez alors le service et daemon:

  • Sur des distributions de type Redhat/Mandrake : chkconfig <daemon> –level 234 off
  • sur des distributions de type Debian : update-rc.d <daemon> -f remove

Sur ces dernières, suivre l’article :

GNU/Linux : Utilisez Iptables ou sharewall pour filtrer les connexions, des projets permettent de générer des règles à partir de GUI comme Firewall Builder ou Firestarter

Sur Windows

Avec Windows, vous pouvez désactiver le programme au démarrage : Supprimer les programmes au démarrage de Windows
S’il s’agit d’un service Windows alors passez ce dernier en démarrage manuel :

  • Sur votre clavier, appuyez sur la touche Windows
  • puis dans la fenêtre exécutez, saisissez services.msc
  • Dans la liste, double-cliquez sur le service puis dans type de démarrage, choisissez manuel.

Enfin la dernière solution consiste à filtrer les connexions vers le port afin de prévenir les connexions.
Pour cela, vous devez utiliser un pare-feu ou firewall.