Gestion du traffic réseau Linux
Pour analyser le trafic réseau d’une machine Linux, il peut être intéressant d’installer ces trois programmes connus dans le monde de l’administration Linux.
Analyse de performances
Installer et lancer le programme BMON
apt install bmon
bmon
Installer le programme iptraff
apt install iptraf-ng
iptraf
Installer le programme iftop
apt install iftop
iftop
Lister les ports ouverts sur la machine
Pour des raisons de sécurité ou pour dépanner, on peut lister les ports ouverts sur la machine. Ici mon port 22 pour le SSH. Il nous donne également le PID pour pouvoir tuer la tâche.
┌──(root㉿kalivm)-[/]
└─# ss -lptun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=844,fd=3))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=844,fd=4))
Une fois que l’on à le port ouvert et le PID associé, on peut également utiliser lsof pour lister les fichiers qui sont ouverts concernant le processus choisi.
┌──(root㉿kalivm)-[/]
└─# lsof -p 21746
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/127/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 21746 root cwd DIR 8,1 4096 2 /
rsyslogd 21746 root rtd DIR 8,1 4096 2 /
rsyslogd 21746 root txt REG 8,1 749320 830429 /usr/sbin/rsyslogd
rsyslogd 21746 root mem REG 8,1 32400 820430 /usr/lib/x86_64-linux-gnu/rsyslog/imudp.so
rsyslogd 21746 root mem REG 8,1 23872 819960 /usr/lib/x86_64-linux-gnu/rsyslog/imklog.so
rsyslogd 21746 root mem REG 8,1 157768 787097 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.33.1
rsyslogd 21746 root mem REG 8,1 149952 791628 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.4
rsyslogd 21746 root mem REG 8,1 751840 790742 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.2
rsyslogd 21746 root mem REG 8,1 190456 789536 /usr/lib/x86_64-linux-gnu/liblzma.so.5.4.1
rsyslogd 21746 root mem REG 8,1 1332480 787370 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.4.1
Il est également possible de rechercher par port directement :
┌──(root㉿kalivm)-[/]
└─# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 844 root 3u IPv4 17198 0t0 TCP *:ssh (LISTEN)
sshd 844 root 4u IPv6 17200 0t0 TCP *:ssh (LISTEN)
sshd 20880 root 4u IPv4 375258 0t0 TCP chesapeake-150.umd.edu:ssh->admin-serv84.umd.edu:62376 (ESTABLISHED)
sshd 20908 kali 4u IPv4 375258 0t0 TCP chesapeake-150.umd.edu:ssh->admin-serv84.umd.edu:62376 (ESTABLISHED)
Ou encore par fichier directement :
┌──(root㉿kalivm)-[/]
└─# lsof /var/log/auth.log
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 21746 root 12w REG 8,1 86789 2622496 /var/log/auth.log
Analyse de trame
Pour analyser les trames réseau, il faut le paquet tcpdump.
apt install tcpdump
Pour par exemple capturer ce qu’il se passe sur le port 443 et l’écrire dans un fichier :
tcpdump port 443 -w /home/user/capture_443.dump
Une fois la requête capturée, insérez votre fichier dump dans un analyseur de trame comme Wireshark pour lire le fichier.
⚠️ Attention
Ne faites pas un cat sur le fichier.
Surveillance réseau
Pour analyser le trafic d’un protocole sur notre serveur
1. Ouvrir une console et lancer un ping sur une machine de notre réseau par exemple
ping 192.168.1.240
2. Ouvrir une autre fenêtre de terminal, cette fois avec un tcpdump en spécifiant le protocole ICMP.
tcpudump icmp
3. On peut également sortir les informations dans un fichier avec -w
tcpdump icmp -w capture.dump
4. Transférer le fichier dump à une machine disposant de Wireshark
scp /home/user/dump [email protected]:/home/user/