Installer Pavois
Installer Pavois : le binaire signé se tire des releases du dépôt (intégrité et provenance SLSA vérifiables), le moteur CINC Auditor (natif ou Docker), les prérequis sudo/SSH, les OS supportés, la construction depuis les sources pour les contributeurs et les erreurs courantes.
Cette page couvre l’installation complète (binaire vérifié ou depuis les sources). Déjà installé ? Allez directement au premier scan : Démarrer.
Prérequis
- Poste de contrôle : Linux ou macOS. Pavois est un CLI Go sur CINC Auditor ; il scanne une cible locale, SSH ou Docker depuis ce poste, aucun agent sur la cible.
- curl : c’est tout ce qu’il faut pour installer le binaire. Ni mise, ni Go, ni chaîne d’outils : le corpus de règles est déjà dedans. mise n’est nécessaire que pour construire depuis les sources, et c’est expliqué plus bas.
- sudo : la config effective d’un service exige root (sshd -T, sysctl, auditctl). Scannez avec
--sudo. - SSH : pour une cible distante, Pavois utilise votre ~/.ssh/config et votre clé, comme oscap ou lynis.
Installer le binaire
Pavois est un binaire statique unique. Le corpus de règles est embarqué : rien à générer, aucune chaîne d’outils à installer, rien à compiler. C’est la façon d’installer Pavois.
Les binaires se tirent du dépôt, depuis les releases GitHub : un binaire statique par plateforme (Linux et macOS, amd64 et arm64), des paquets .deb et .rpm, un checksums.txt, un SBOM CycloneDX et une attestation de provenance SLSA. Le binaire est autoporté (corpus de règles embarqué) : télécharger, vérifier l’intégrité et la provenance, puis scanner.
Avec curl, sans rien installer d’autre
BASE=https://github.com/stephrobert/pavois/releases/download/v0.1.1
curl -fsSLO $BASE/pavois-linux-amd64 && curl -fsSLO $BASE/checksums.txt
sha256sum --ignore-missing --check checksums.txt # intégrité
sudo install -m 0755 pavois-linux-amd64 /usr/local/bin/pavois
pavois doctor # corpus embarqué, prêt à scannerSur macOS, remplacez sha256sum par shasum -a 256 -c. Le binaire n’a aucune dépendance partagée : il n’a besoin ni de Ruby, ni de Go, ni de Python.
Avec un paquet .deb ou .rpm
curl -fsSLO $BASE/pavois_0.1.1_amd64.deb && sudo dpkg -i pavois_0.1.1_amd64.deb
curl -fsSLO $BASE/pavois-0.1.1.amd64.rpm && sudo rpm -i pavois-0.1.1.amd64.rpmVérifier la provenance (optionnel, recommandé)
sha256sum prouve que le fichier n’a pas changé depuis la publication des empreintes. Il ne prouve pas QUI l’a construit : quelqu’un qui remplace le binaire et le checksums.txt produit un couple cohérent. C’est l’attestation de provenance SLSA qui répond à cette question, et la vérifier demande GitHub CLI (paquets officiels Debian, Ubuntu, Fedora, Homebrew, ou un binaire autonome sur cette page) :
gh attestation verify pavois-linux-amd64 --repo stephrobert/pavois # qui l’a construitLa commande confirme que ce fichier exact est sorti du workflow de release de ce dépôt, sur ce tag, et pas seulement qu’il porte le bon nom. Elle interroge le journal de transparence public : aucun accès au dépôt n’est requis, et un binaire récupéré ailleurs se vérifie aussi bien.
Construire depuis les sources (contributeurs)
Cette section s’adresse aux contributeurs. Ce n’est pas la façon dont l’outil est censé s’installer, et ça ne le sera jamais : la compilation tire une chaîne Go, Node et Python épinglée, et régénère des artefacts qu’un binaire de release porte déjà en lui.
Le dépôt ne livre que la source de vérité. Le corpus InSpec (.rb) et le paquet OSCAL sont des artefacts dérivés, régénérés depuis la référence. La mise en place est donc en deux temps : construire, puis régénérer.
La chaîne d’outils est épinglée dans mise.toml, et c’est mise qui l’installe : vous n’avez donc ni Go, ni Node, ni Python à gérer à la main, et vous obtenez exactement les versions que la CI utilise. Une seule commande, puis un shell rouvert :
sudo apt install -y extrepo && sudo extrepo enable mise # dépôt signé, jamais un script tubé
sudo apt update && sudo apt install -y mise
# Fedora / RHEL : dnf copr enable jdxcode/mise && dnf install mise
# macOS : brew install miseUn dépôt signé, jamais un script tubé dans un shell. Pavois ne vous demandera jamais de faire curl | sh : un outil de durcissement qui commence par là a déjà perdu le débat. extrepo active le dépôt APT signé de mise et vérifie sa clé ; les blocs curl plus haut téléchargent un fichier dont vous contrôlez ensuite l’empreinte, ce qui n’est pas la même chose qu’exécuter du code téléchargé à l’aveugle.
git clone https://github.com/stephrobert/pavois.git && cd pavois
mise trust && mise install # Go, Node, Python épinglés
mise run build # -> go/pavois
mise run regen # corpus .rb + OSCAL depuis la référence
./go/pavois doctor # vérifie CINC, sudo, SSH, OS, corpusVérifiez : ./go/pavois version.
Le moteur de scan (CINC Auditor)
Installer Pavois ne suffit pas à scanner. Pavois exécute ses contrôles avec CINC Auditor (le build open-source de Chef InSpec), et CINC n’est dans aucun dépôt de distribution : aucun gestionnaire de paquets ne peut aller le chercher, donc le paquet Pavois ne peut pas le déclarer en dépendance. C’est à vous de l’installer, et c’est la seule chose à installer en plus du binaire.
Si vous sautez cette étape, le premier scan s’arrête sur no native CINC engine found. Rien ne manque au paquet Pavois : c’est le moteur qui n’est pas là.
META="https://omnitruck.cinc.sh/stable/cinc-auditor/metadata?p=el&pv=9&m=x86_64"
URL=$(curl -sS "$META" | awk '/^url/{print $2}') # le paquet de cette plateforme
SUM=$(curl -sS "$META" | awk '/^sha256/{print $2}') # et son empreinte publiée
curl -fsSLO "$URL"
echo "$SUM ${URL##*/}" | sha256sum --check # intégrité, avant toute exécution
sudo dnf install -y "./${URL##*/}" # Debian/Ubuntu : sudo apt install ./<fichier>
pavois doctor # moteur CINC (natif) : /usr/bin/cinc-auditorLes clés p et pv sont celles d’omnitruck : el/8, el/9, debian/12, debian/13, ubuntu/22.04, ubuntu/24.04. AlmaLinux et Rocky se déclarent en el, comme pour la détection de profil de Pavois. Le point d’entrée metadata publie l’URL du paquet et son sha256 : on télécharge, on vérifie, on installe avec le gestionnaire du système. La documentation amont propose aussi un script tubé dans un shell root ; ce site ne vous le demandera pas, et cette recette lui est équivalente sans exécuter du code téléchargé à l’aveugle.
Deux modes existent, choisis par --engine (défaut : auto) :
- natif (recommandé) : le binaire cinc-auditor installé ci-dessus. Indispensable pour auditer l’hôte courant (local) et confortable en SSH (il respecte votre ~/.ssh/config). Sur une cible distante, et seulement là, --bootstrap-cinc laisse Pavois l’installer pour vous.
- Docker (repli) : zéro-install, pratique pour scanner un conteneur. Un conteneur ne peut pas auditer son hôte, donc ce mode ne remplace pas le moteur natif pour une cible local : réservez-le aux cibles docker://.
Cibles et transports
pavois scan local --sudo # hôte courant (natif)
pavois scan user@host --key ~/.ssh/id_ed25519 --sudo # distant via SSH
pavois scan my-container # conteneur via docker://Systèmes supportés
Le poste de scan tourne sous Linux ou macOS. Les cibles auditées couvrent 9 profils, un par OS :
- Debian 12
- Debian 13
- Fedora
- RHEL 10 / Rocky 10 / AlmaLinux 10
- RHEL 8 / Rocky 8 / AlmaLinux 8
- RHEL 9 / Rocky 9 / AlmaLinux 9
- Ubuntu 22.04
- Ubuntu 24.04
- Ubuntu 26.04
Le profil est auto-détecté depuis la cible : --profile ne sert que pour un profil personnalisé. AlmaLinux et Rocky sont détectés comme RHEL de la même version.
Erreurs courantes
Avant un scan, lancez pavois doctor : il vérifie chaque prérequis (moteur CINC, sudo, SSH, OS, corpus) et affiche la commande exacte pour corriger chaque manque (voir la sortie). Sinon, les cas fréquents :
- no native CINC engine found : le moteur n’est pas installé. C’est de loin le cas le plus fréquent après une installation par paquet, et il est souvent lu comme une dépendance manquante du paquet Pavois : elle ne l’est pas, le binaire est statique et ne réclame aucune bibliothèque. Installez le moteur : CINC Auditor.
- sudo: a terminal is required / requires a TTY : certaines cibles (ex. Debian 12 avec Defaults use_pty) refusent sudo via SSH non-interactif. Utilisez
--on-targetpour exécuter le moteur sur la cible. - connexion SSH qui échoue malgré une bonne clé : un ProxyJump global (Host *) dans ~/.ssh/config peut casser les connexions directes. Pavois neutralise ça en interne.
- corpus vide / profil introuvable : uniquement dans un clone du dépôt, où le corpus .rb est régénéré et non versionné. Lancez
mise run regen. Un binaire de release ne peut pas tomber sur ce cas : son corpus est embarqué.