
Auditeur de configuration de sécurité du noyau Linux en lecture seule et sans agent (local et SSH). Objectif initial : vérifications de migration TCP / MPTCP pour CVE-2026-98432.
Un outil d'audit de sécurité Linux léger et open-source écrit en Python.
Auditez des serveurs Linux locaux et distants via SSH sans installer d'agents ni modifier la configuration du système.
Il s'agit d'un auditeur de configuration et d'état des correctifs, et non d'un scanner d'exploits. Il signale les paramètres du noyau et l'utilisation associés à une vulnérabilité, et compare le paquet du noyau en cours d'exécution avec la version corrigée du fournisseur. Il ne tente jamais de déclencher une vulnérabilité.
| Fonctionnalité | v0.2.0 |
|---|---|
| Python 3.8+, aucune dépendance tierce | ✅ |
| Audit Linux local | ✅ |
| Audit distant via SSH (sans agent) | ✅ |
| Analyse multi-serveurs en parallèle | ✅ |
| Ubuntu / Debian / Rocky / AlmaLinux / RHEL / Fedora | ✅ |
| Inspection de la migration des sockets de requête TCP | ✅ |
| Inspection de la configuration et de l'utilisation de MPTCP | ✅ |
| Détection du noyau, de la distribution et du redémarrage en attente | ✅ |
| Rapports JSON / CSV | ✅ |
| Vérification des correctifs CVE du noyau (Ubuntu, Debian, RHEL, Rocky, AlmaLinux, CentOS) | ✅ |
| Mises à jour de sécurité automatiques | ❌ jamais |
| Modification de la configuration du serveur | ❌ jamais |
Le contrôleur (votre poste de travail Mac ou Linux) construit un petit script
POSIX sh à partir des vérifications sélectionnées et le transmet via un pipe à sh -s sur chaque cible
via SSH. Rien n'est copié ni installé sur la cible. Le script affiche
des faits au format key=value ; toute l'évaluation se fait sur le contrôleur, qui traite
la sortie de la cible comme non fiable (caractères de contrôle supprimés, valeurs tronquées,
injection de formules CSV neutralisée).
Examinez précisément ce qui sera exécuté sur vos serveurs avant de l'exécuter :
python3 netviser_cve_audit.py --print-script
Les cibles nécessitent uniquement sh et des outils standard (ss d'iproute2, awk,
grep, sed). Python n'est pas requis sur les cibles.
Le contrôleur nécessite Python 3.8+ et OpenSSH (macOS ou Linux).
git clone https://github.com/maxigentr/netviser-linux-security-auditor.git
cd netviser-linux-security-auditor
# Audit this Linux machine
python3 netviser_cve_audit.py --local
# Audit a remote server
python3 netviser_cve_audit.py --host [email protected]
# Custom SSH port and key
python3 netviser_cve_audit.py --host [email protected] --port 2290 --identity ~/.ssh/audit_ed25519
# Multiple servers, 10 in parallel
python3 netviser_cve_audit.py --hosts servers.txt --workers 10
# Non-root SSH user with passwordless sudo, for full process and BPF visibility
python3 netviser_cve_audit.py --host admin@web01 --sudo
# Watch MPTCP counters for 60 seconds to see if MPTCP is used right now
python3 netviser_cve_audit.py --hosts servers.txt --sample-interval 60
# Also check whether other kernel CVEs are patched
python3 netviser_cve_audit.py --hosts servers.txt --cve CVE-2024-1086,CVE-2024-26925
L'outil peut également être installé (pip install .) et exécuté en tant que netviser-audit
ou python3 -m netviser_audit.
Voir examples/servers.example.txt pour le
format du fichier d'hôtes. Les ports par hôte utilisent ssh://user@host:port ou un
alias ~/.ssh/config.
| Option | Description |
|---|---|
--local / --host H / --hosts FILE | Ce qu'il faut auditer |
--checks IDS | Sous-ensemble séparé par des virgules (voir --list-checks) ; les dépendances sont ajoutées automatiquement |
--cve IDS | Signale également l'état du correctif noyau de ces CVE (répétable ou séparé par des virgules) |
--offline | Ne pas télécharger les données d'avis du fournisseur |
--advisories FILE | Utiliser des données d'avis enregistrées précédemment ; les enregistrements manquants sont tout de même téléchargés sauf avec --offline |
--save-advisories FILE | Enregistrer les données d'avis utilisées, pour des exécutions hors ligne ou répétables |
--sudo | Exécuter le collecteur avec sudo -n (ne demande jamais de mot de passe) |
--sample-interval N | Lire les compteurs MPTCP deux fois, à N secondes d'intervalle |
--output PREFIX | Préfixe du rapport (par défaut netviser_audit → .json, .csv) |
--no-report | Afficher uniquement dans le terminal |
--fail-on-review | Quitter avec le code 3 lorsqu'une constatation REVIEW existe (pour CI / cron) |
-v, --verbose | Afficher toutes les constatations, pas seulement REVIEW / UNKNOWN |
Les exécutions SSH utilisent BatchMode=yes (authentification par clé uniquement) et
StrictHostKeyChecking=accept-new.
Code de sortie : 0 succès, 1 une cible n'a pas pu être analysée, 2 erreur d'utilisation,
3 constatations de revue présentes (uniquement avec --fail-on-review).
| Id | Ce qu'elle inspecte |
|---|---|
kernel | Distribution, version du noyau, paquet du noyau en cours d'exécution, noyau installé plus récent / redémarrage requis |
patch | État du correctif de chaque CVE pour le paquet du noyau en cours d'exécution, à partir des données d'avis du fournisseur |
tcp_migration | net.ipv4.tcp_migrate_req ; programmes BPF sk_reuseport chargés (root + bpftool) |
mptcp | net.mptcp.enabled, gestionnaire de chemins, CONFIG_MPTCP, sockets et processus MPTCP, compteurs de handshake, utilisation de mptcpize |
cve_2026_98432 | Configuration associée à CVE-2026-98432 ; son état de correctif est patch.CVE-2026-98432 |
Chaque constatation possède un statut — OK, INFO, REVIEW ou UNKNOWN — et un
verdict lisible par machine (par ex. mptcp.usage = IN_USE).
La vérification patch répond à une question par CVE : le noyau en cours d'exécution
est-il corrigé selon le fournisseur de la distribution ?
dpkg-query / rpm -qf) : son nom, sa version exacte et son paquet
source. Il liste également les identifiants CVE mentionnés dans le changelog de ce paquet et dans
les livepatches chargés (canonical-livepatch, kpatch-patch).~
sont gérés correctement.| Distribution | Source des avis |
|---|---|
| Ubuntu | Ubuntu Security API — par version et variante de noyau (linux, linux-hwe-*, linux-aws, …) |
| Debian | Données du Debian Security Tracker via OSV |
| RHEL, Rocky Linux, AlmaLinux, CentOS | Red Hat Security Data API — flux principal RHEL |
Seuls les identifiants CVE sont envoyés à ces services ; rien concernant vos hôtes
ne quitte le contrôleur. Pour une utilisation en réseau isolé, exécutez une fois avec
--save-advisories adv.json puis ultérieurement avec --offline --advisories adv.json.