Christophe CasalegnoAutoimmune warrior, Entrepreneur & Bio/Hacker

SxNetstat 2.1 : analyser les connexions TCP par adresse IP

Analyser les connexions TCP par adresse IP

SxNetstat

SxNetstat est un outil Bash sous licence GPL qui transforme l’inventaire des connexions TCP d’un serveur Linux en un classement immédiatement exploitable des adresses IP distantes.

Le principe reste volontairement simple : récupérer les connexions avec ss, ou netstat en solution de repli, extraire proprement les adresses IPv4 et IPv6, les compter, puis afficher les plus présentes. Cette version 2.1 ajoute les filtres et les garde-fous nécessaires pour en faire autre chose qu’un simple one-liner jetable.

Utilisation

Sans argument, SxNetstat affiche son aide. Pour afficher les dix premières adresses :

./sxnetstat.sh --number 10

Afficher les vingt premières, ou toutes les adresses :

./sxnetstat.sh --number 20
./sxnetstat.sh --all

Activer la résolution DNS inverse :

./sxnetstat.sh --number 50 --reverse
./sxnetstat.sh --number 50 --reverse-lookup 1

Filtrer sur un port et sur le sens de la connexion :

./sxnetstat.sh --all --port 443 --direction out
./sxnetstat.sh --all --port 22 --direction in

Avec --direction in, le port est recherché du côté local ; avec out, du côté distant ; avec any, qui est la valeur par défaut, des deux côtés.

Listes blanches IPv4 et IPv6

L’option --whitelist-file peut être répétée. Chaque fichier accepte des adresses exactes et des réseaux CIDR, en IPv4 comme en IPv6 :

./sxnetstat.sh --all \
  --whitelist-file /etc/sxwall/whitelist.d/local.conf \
  --whitelist-file /etc/sxwall/whitelist.d/partners.conf

Les lignes vides et les commentaires sont ignorés. Lorsqu’il est exécuté via une délégation sudo, SxNetstat n’accepte que des fichiers réguliers appartenant à root, non modifiables par le groupe ou par les autres utilisateurs, réellement situés dans /etc/sxwall/whitelist.d. Les liens symboliques et les sorties de ce répertoire sont refusés.

Ce que fait réellement la version 2.1

– prise en charge de ss avec repli sur netstat ;
– analyse correcte des couples adresse/port IPv4 et IPv6 ;
– normalisation des adresses IPv4 encapsulées dans IPv6 ;
– classement des IP par nombre de connexions recensées ;
– filtres de port et de direction ;
– listes blanches cumulables avec adresses et CIDR ;
– résolution DNS inverse facultative ;
– refus d’un résultat partiel si l’inventaire réseau échoue.

La liste d’exclusion intégrée écarte également les adresses locales ou spéciales les plus évidentes, ainsi que les marqueurs d’adresses utilisés par StackX.

Compatibilité de la ligne de commande

Attention si vous utilisiez une ancienne version : les anciens arguments positionnels ne sont plus acceptés. Le choix est volontaire : une option explicite évite qu’un nombre, un port ou un indicateur soit interprété de travers dans un script automatisé. Utilisez désormais --number, --port, --direction et les autres options documentées.

Dépendances

SxNetstat utilise Bash, awk, sort, uniq, tail et ss ou netstat. La commande host n’est nécessaire que pour la résolution inverse. La validation renforcée des fichiers de liste blanche utilise également readlink et stat.

Ressources

Script : sxnetstat.sh

—
Christophe Casalegno (retrouvez tous mes liens, mes projets et mes réseaux sur all.bo)

Christophe Casalegno Brain 0verride

Soyez simple
et direct !