Map & Fix

Sécurité de l'agent

Vous allez installer un programme sur vos machines. Cette page dit exactement ce qu'il fait, ce qu'il ne fait pas, et comment le vérifier vous-même, sans avoir à nous croire sur parole.

En bref

RéseauConnexions HTTPS sortantes vers votre console Map & Fix, et rien d'autre. Il n'ouvre aucun port : rien ne peut le joindre depuis l'extérieur.
Commandes à distanceAucune. La console peut seulement lui demander un nouvel inventaire. Il n'existe pas de canal pour lui faire exécuter une commande.
Mise à jourJamais automatique par Map & Fix. Elle passe par votre gestionnaire de paquets (apt, dnf), à votre rythme. Une console compromise ne peut pas modifier un agent installé.
DroitsService root réduit à deux capacités Linux (CAP_DAC_READ_SEARCH, CAP_SYS_PTRACE). Système en lecture seule, écriture limitée à son dossier d'état.
SignaturePaquets et dépôt signés par une clé qui ne quitte jamais le poste de publication : elle n'est ni sur nos serveurs, ni dans notre CI.
ChargePriorité minimale sur le processeur et le disque, mémoire plafonnée à 1 Go.

Pourquoi l'agent a besoin de ces droits

Pour repérer vos failles, l'agent doit voir tout ce qui est installé et tout ce qui tourne sur la machine, quel que soit le compte propriétaire. Il démarre donc en root, comme beaucoup d'agents de supervision, mais réduit à deux capacités Linux : CAP_DAC_READ_SEARCH, qui lui donne accès en lecture à tous les fichiers, et CAP_SYS_PTRACE, qui lui permet d'identifier les processus.

Il ne s'en sert que pour cet inventaire. Il ignore les journaux et les fichiers temporaires du système (/var/log, /tmp) ainsi que les disques montés sous /mnt et /media, et il n'écrit que dans son propre dossier. Le détail de ce qui part vers Map & Fix est ci-dessous : vous pouvez le contrôler vous-même dans son journal et sur le réseau.

Ce qu'il envoie

QuoiDétail
La machineNom d'hôte, système, version du noyau, architecture, adresses IP publiques.
Les processusNuméro, compte propriétaire, exécutable, ligne de commande avec les secrets masqués, fichiers chargés en mémoire (leur chemin).
Les ports en écouteProtocole, adresse, port, processus.
Les conteneursNom, image, état, ports publiés, projet Compose.
Les logicielsNom, version et emplacement des paquets, relevés par Syft, un outil open source lancé en local et vérifié par son empreinte.

Un signal de vie part chaque minute, et un inventaire toutes les six heures, ou à la demande depuis la console.

Ce qu'il n'envoie jamais

Installer en vérifiant tout

La commande de la console est la plus simple. Elle embarque la clé publique ci-dessous, et apt ou dnf vérifient ensuite les signatures. Si vous préférez ne rien exécuter à l'aveugle, faites ces étapes à la main.

Empreinte de la clé de signature :

0264 9E62 5DB6 F384 7296 E51C 1C36 08A7 FFF7 A718

Comparez-la à celle que nous vous transmettons par un autre canal, par exemple dans notre échange contractuel :

curl -fsSLO https://packages.mapandfix.com/mapandfix.asc
gpg --show-keys --fingerprint mapandfix.asc

Puis, sur Debian et Ubuntu :

sudo install -D -m 644 mapandfix.asc /etc/apt/keyrings/mapandfix.asc
echo "deb [signed-by=/etc/apt/keyrings/mapandfix.asc] https://packages.mapandfix.com stable main" \
  | sudo tee /etc/apt/sources.list.d/mapandfix.list
sudo apt-get update
sudo apt-get install mapandfix-agent
sudo MAPANDFIX_URL=https://app.mapandfix.com MAPANDFIX_ENROLL_TOKEN=mafe_… mapandfix-agent enroll
echo "MAPANDFIX_URL=https://app.mapandfix.com" | sudo tee /etc/mapandfix/agent.env
sudo systemctl enable --now mapandfix-agent

Identité et jetons

Retirer l'agent

Depuis la console, le retrait coupe immédiatement son identité. Sur la machine :

# Debian, Ubuntu
sudo apt-get purge mapandfix-agent
sudo rm -rf /var/lib/mapandfix-agent /etc/mapandfix /etc/apt/sources.list.d/mapandfix.list /etc/apt/keyrings/mapandfix.asc

# RHEL, Amazon Linux
sudo dnf remove mapandfix-agent
sudo rm -rf /var/lib/mapandfix-agent /etc/mapandfix /etc/yum.repos.d/mapandfix.repo /etc/pki/rpm-gpg/RPM-GPG-KEY-mapandfix

Rien d'autre ne reste sur la machine.

Le vérifier vous-même

# Ses droits réels
systemctl show mapandfix-agent -p CapabilityBoundingSet -p NoNewPrivileges -p ProtectSystem
# Aucun port en écoute
sudo ss -tlnp | grep mapandfix
# Ses connexions sortantes
sudo ss -tnp | grep mapandfix
# Son activité
journalctl -u mapandfix-agent

Une question, un doute ?

Écrivez à support@nbx-labs.com. Une vulnérabilité dans l'agent nous intéresse en priorité.