Pile réseau : ss, netstat, tcpdump, etc.
Pour ce niveau nous avons là aussi différentes strates successives. Il faut en effet, gérer les sockets, la couche Réseau (via le protocole IP) la couche Transport (via l’un des protocoles TCP ou UDP) et enfin, la couche Ethernet. Cela peut se schématiser de la façon suivante :
En ce qui concerne la gestion des sockets, il n’est qu’un seul outil efficace, permettant de fournir de l’information sur les performances des flux circulant. Il s’agit de l’utilitaire ss. Cette commande obtient ses informations directement depuis l’espace noyau. Cela lui confère un certain avantage de rapidité, vis-à-vis de son homologue netstat, qui lui, effectue de l’agrégation d’informations depuis les fichiers se trouvant au sein de l’arborescences /proc.
Ainsi, lorsqu'on souhaite lister les échanges de type UDP, il suffit d’exécuter la commande suivante :
# ss -ua
Afin de lister uniquement les sockets de type TCP à l’écoute (donc, déjà actives), on doit exécuter plutôt la commande :
# ss -lt
Pour atteindre les données de la couche TCP/UDP, il est possible de choisir d’utiliser l’un des programmes suivants, issus des programmes eBPF :
- tcptop
- tcplife
- tcpconnect
- tcpaccept
- tcponlat
- tcpretrans
Pour la couche IP, on peut facilement exécuter la commande ip, permettant de récupérer nombre de statistiques concernant les entrées/sorties des différentes interfaces réseau :
# ip a
On peut également s’intéresser aux paquets circulant sur le réseau. Pour cela, on doit utiliser la commande route. Il faut également se rappeler que certaines informations se trouvent dans les dossiers du pseudo-répertoire /proc/net.
Par ailleurs, si le focus se fait plutôt sur les paquets diffusés sur le réseau local, on peut alors être amené à scruter attentivement les statistiques du pare-feu iptables grâce à la commande ci-dessous :
# iptables -L -v
De la même manière, l’utilitaire netstat qui, comme on l’a déjà mentionné, effectue de l’agrégation de données depuis différentes sources stockées dans les fichiers des pseudo-file systèmes /proc et /sys peut être interrogé :
# netstat -s
Enfin, si l’on préfère utiliser un outil un peu plus graphique, il est possible d’utiliser l’interface de iptraf-ng qui présente les différentes interfaces en corrélation avec leurs entrées/sorties pour chacune d’elles :
De la même manière, au niveau de la couche physique Ethernet, on peut avoir recours à un traceur tel que tcpdump. Il s’agit d’un outil de capture et d’analyse réseau, permettant de disposer du trafic en temps réel de l’ensemble du réseau d’une machine, en favorisant la capture des données. Celles-ci sont alors récupérées dans un fichier de type pcap :
# tcpdump -n -i eth0
REMARQUE : il existe de nombreux autres outils similaires à tcpdump. On peut citer, par exemple, wireshark, nmap qui s’intéresse tout particulièrement aux ports de service.