Aller au contenu

Netstat, l’activité réseau des serveurs


Ldfa

Messages recommandés

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 :

01-netstat-550x159.png

01-netstat-550x159.png

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:

02-netstat-ports-550x155.png

02-netstat-ports-550x155.png

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:

03-netstat-route-550x70.png

03-netstat-route-550x70.png

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.

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.