Comment surveiller les connexions TCP/IP actives sous Windows à l’aide de PowerShell

De nombreux utilisateurs se servent d’outils netstatou d’applications graphiques comme TCPView pour visualiser les connexions TCP/IP actives ou les ports ouverts sous Windows. Cependant, si vous êtes adepte du scripting PowerShell, PowerShell Get-NetTCPConnectionest une alternative très pratique. Intégré à Windows (à partir de Windows 8/Server 2012), il offre une vue plus claire et plus personnalisable de l’activité de vos connexions réseau, processus et ports.

Voici le principe : Get-NetTCPConnectionsans aucun filtre, cette commande affiche la liste de toutes les connexions TCP actives, avec des détails comme les adresses IP locales et distantes, les ports, l’état actuel (écoute, connexion établie, attente, etc.) et les identifiants des processus qui les utilisent. C’est un peu étrange, mais cette commande simplifie la création de scripts et l’automatisation de la surveillance réseau, car elle permet de filtrer précisément ce qui compte : par exemple, uniquement les ports d’écoute ou uniquement les connexions établies.

Remarque : si vous souhaitez afficher les noms DNS plutôt que les adresses IP, vous pouvez rediriger les commandes vers Resolve-DnsName. La syntaxe est légèrement plus longue, mais cela vaut la peine pour plus de clarté. De plus, pour identifier les services Windows liés à des activités réseau spécifiques, vous pouvez combiner cette méthode avec la sortie de [ nom de la commande manquante] ; vous découvrirez parfois des informations inattendues.Get-WmiObjectGet-NetTCPConnection

Comment réparer ou vérifier les connexions réseau avec PowerShell

Méthode 1 : Lister toutes les connexions TCP actives

  • Ouvrez PowerShell avec les droits d’administrateur (cliquez avec le bouton droit sur le menu Démarrer, choisissez Windows PowerShell (Admin) ).
  • Exécutez cette commande Get-NetTCPConnection. Elle affichera la liste de tous les processus en communication TCP sur votre PC. Vous y trouverez les adresses IP locales et distantes, les ports, l’état des connexions et les identifiants des processus.

C’est très pratique pour avoir un aperçu rapide. Sur certaines configurations, il peut y avoir un léger délai ou tout ne s’affiche pas immédiatement. Un redémarrage ou une nouvelle exécution suffit généralement à résoudre le problème.

Méthode 2 : Analyse des ports d’écoute

  • Si vous souhaitez uniquement connaître les ports ouverts qui écoutent les connexions entrantes, exécutez : Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State | Sort-Object LocalPort | ft
  • Cela permet de filtrer toutes les connexions établies ou sortantes.

Cette commande est utile pour résoudre les conflits de ports ou fermer les ports ouverts inutilement. Si aucun résultat ne s’affiche, il est possible qu’aucun port ne soit à l’écoute ou que vous deviez exécuter PowerShell en tant qu’administrateur.

Méthode 3 : Filtrage des connexions établies et de leurs hôtes

  • Pour obtenir un aperçu détaillé des connexions actives et établies avec les noms DNS distants et les chemins de processus, essayez ceci :
  • Get-NetTCPConnection -State Established | Select-Object LocalAddress, LocalPort, @{name='RemoteHostName';expression={(Resolve-DnsName $_. RemoteAddress).NameHost}}, RemoteAddress, RemotePort, State, @{name='ProcessName';expression={(Get-Process -Id $_. OwningProcess).Path}}, OffloadState, CreationTime | ft

Remarque : La résolution DNS peut ralentir le système, surtout en cas de nombreuses connexions. Sur certains ordinateurs, elle peut prendre quelques secondes ou échouer si le DNS est mal configuré. Néanmoins, c’est le moyen le plus simple de voir précisément avec qui ou quoi votre PC communique et quel processus est à l’origine de la connexion.

Méthode 4 : Connexion à des PC distants / Surveillance du trafic

  • Pour afficher les connexions actives sur une machine distante, utilisez la communication à distance PowerShell :
  • Invoke-Command -ComputerName be-dc01 {Get-NetTCPConnection -State Established}

Cela s’avère utile pour dépanner des serveurs ou des postes de travail distants sans s’y connecter directement. Assurez-vous simplement que la communication à distance PowerShell est activée sur la machine cible (via la commande Enable-PSRemoting ).Car, bien sûr, Windows complique parfois les choses inutilement.

Un petit détail à retenir : il arrive que les données réseau ou l’état de la connexion semblent bloqués ou manquants ; il peut alors être nécessaire de réinitialiser la pile réseau ou de redémarrer l’ordinateur. Enfin, pour les scripts, il est courant de combiner ces commandes avec une logique permettant de déclencher des alertes ou des journaux.

Si vous souhaitez aller plus loin, vous pouvez créer des scripts qui surveillent des schémas de connexion spécifiques, comme l’ouverture du port 3389 (RDP) ou SSH, et qui affichent des notifications ou consignent les informations. Ainsi, vous adoptez une approche proactive plutôt que réactive en matière de sécurité réseau.

Vous pouvez même étendre cette fonction pour surveiller d’éventuelles attaques RDP par force brute en combinant ces outils avec vos propres scripts ou des solutions tierces.

J’espère que cela constituera un bon point de départ pour quiconque souhaite mieux comprendre ses connexions réseau sans se fier uniquement aux outils graphiques. PowerShell est étonnamment puissant si l’on prend la peine de l’explorer.

Résumé

  • Utilisez-le Get-NetTCPConnectionpour visualiser les connexions TCP et les filtres en cours.
  • À combiner avec Resolve-DnsName pour les recherches DNS.
  • Utilisez la communication à distance PowerShell pour vérifier les systèmes distants.
  • Les scripts peuvent être configurés pour les alertes, la journalisation ou la surveillance de ports et d’adresses IP spécifiques.

Conclure

Ce n’est pas parfait — il arrive que le DNS rencontre des problèmes ou que des commandes se bloquent — mais globalement, PowerShell offre une solution flexible pour diagnostiquer et surveiller l’activité réseau sous Windows. C’est particulièrement pratique pour automatiser les vérifications régulières ou créer un tableau de bord de surveillance personnalisé. Veillez simplement à bien contrôler vos scripts et n’oubliez pas qu’un redémarrage résout souvent les problèmes les plus étranges. Espérons que cela aidera certains à comprendre ce qui se passe sur leur réseau.