30/12/2024

Commandes et SystèmeLinux

Netstat, l’activité réseau des serveurs

I. Présentation

Dans ce tutoriel, je vous propose de faire un focus sur une commande très pratique à la lisière du monde du réseau et de la sécurité : je veux parler de netstat. Cette commande trace l’ensemble des métriques statistiques du réseau entre serveurs d’une même infrastructure. Aussi, il est très facile, grâce aux différentes options proposées par l’outil, de filtrer ces statistiques et de se focaliser sur telle ou telle vision spécifique.

II. Fonction netstat

En effet, il y a quelques temps, j’avais déjà écrit un billet concernant l’affichage des connexions actives via la commande ss (Socket Statictics). Mais, pour revenir à une méthode plus standard, la commande netstat liste les ports de service ouverts sur une machine ainsi que les connexions établies. Cela permet de déterminer les services à l’écoute. On peut donc facilement vérifier tous les services actifs d’une machine et s’assurer qu’ils fonctionnement correctement. C’est généralement sur ce genre de fonctionnalité que l’on s’appuie pour déterminer la liste des ports à autoriser ou à interdire afin de constituer les règles de sécurité inhérentes au pare-feu iptables.

La commande netstat possède pas mal d’options. Chacune prise individuellement permet de filtrer un type particulier de statistiques :

  • -t: liste les ports TCP
  • -u: filtre les ports UDP
  • -l: filtre les ports en écoute
  • -n: permet d’afficher les adresses IP sans résolution de noms DNS
  • -p: permet d’afficher le nom du programme et le PID lié au processus
  • -r: permet d’afficher les routes empruntées par les paquets
  • -e: permet d’afficher les statistiques Ethernet
  • -f: permet d’afficher les noms complets (aussi appelés noms FQDN)
  • -s: affiche les statistiques par protocole (soit IP, IPv6, ICMP…)
  • -i: affiche les statistiques pour l’ensemble des interfaces
  • -I<Inter>: affiche les statistiques pour l’interface en paramètre
  • -o: permet d’afficher les timers pour toutes les connexions
  • -M: affiche les connexions utilisant des mécanismes de MASQUERADE
  • -Z: affiche les contextes SELinux (lorsque celui-ci est actif)

De façon générale, lorsque l’on souhaite afficher l’intégralité des connexions, il suffit d’exécuter la commande suivante :

# netstat –a

Bien évidemment, ces différentes directives peuvent être combinées ensemble afin de mieux répondre aux critères de sélection souhaités.

Exemple : pour filtrer les connexions TCP en écoute :

# netstat –tl

Le résultat obtenu affiche alors les lignes suivantes :

L’intérêt réside également dans le fait de pouvoir faire afficher le nombre de bytes dans la file d’attente de réception (colonne Recv-Q) ou de celle d’envoi (colonne Send-Q). Ceci peut surtout être très intéressant pour un serveur base de données distant échangeant des informations avec ses clients, ou un serveur web où l’on souhaite faire afficher les paquets reçus ou émis.

III. Quelques astuces netstat

Si l’on souhaite uniquement afficher les statistiques pour un serveur donné, mais en rafraîchissant l’affichage toutes les n secondes, on peut parfaitement utiliser la commande netstat et ses options en introduisant un délai  en fin de ligne de commande.

Exemple : pour rafraichir l’affichage toutes les cinq secondes :

# netstat –tl 5

On peut également utiliser des filtres sous forme d’expressions régulières pour afficher moins de lignes.

Exemple : affichage des connexions TCP en écoute

# netstat –tan|grep LISTEN

Maintenant, pour pouvoir trouver les ports en écoute sur le serveur, on va pouvoir exécuter la commande ci-dessous:

# netstat -taupeln|grep LISTEN

On devrait alors obtenir un affichage similaire à celui ci-dessous décrivant point par point les différents ports TCP et TCP6 en cours d'utilisation sur la machine:

Une autre commande très pratique est l'utilisation de netstat pour afficher la table de routage. Cela permet de visualiser à la fois la passerelle (s’il y en a une), ainsi que les différentes routes réparties sur les différentes interfaces :

# netstat -r

Le résultat suivant devrait alors apparaître à l'écran:

Il existe bien d’autres options, qui combinées entre elles peuvent apporter de l’information et une certaine connaissance réseau de la machine sur laquelle on se trouve.

IV. Conclusion

En résumé, la commande netstat permet certes d’afficher des statistiques concernant les différentes connexions en cours ou déjà établies, mais on peut également s’en servir pour établir les règles de filtrage vis-à-vis du pare-feu local : qu’il s’agisse de firewall-cmd, d’iptables ou d’un autre.

Cet outil peut être complété par la commande ss, qui prend sa source d’information directement dans le pseudo-système de fichiers /proc, et qui est, de fait, beaucoup plus rapide et plus complet que peut l’être netstat. Mais, avec cet éventail de fonctions, netstat et ss, l’administrateur peut alors mieux contrôler les flux échangés, les ressources à leur associer et les connexions à scruter plus attentivement. Enfin, un autre argument en faveur de cette commande est qu'elle fonctionne aussi bien dans un environnement Linux/Unix que Windows. On peut donc s'en servir dans toutes les configurations où il est nécessaire de connaître en minimum son environnement réseau.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Netstat, l’activité réseau des serveurs

    • Bonsoir, C’est vrai que vu comme ça… Personnellement (peut-être lié à mon éducation) j’ai un peu de mal et je préfère l’anagramme netstat -taupel 🙂

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.