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éseau | Connexions 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 à distance | Aucune. La console peut seulement lui demander un nouvel inventaire. Il n'existe pas de canal pour lui faire exécuter une commande. |
| Mise à jour | Jamais 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é. |
| Droits | Service 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. |
| Signature | Paquets 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. |
| Charge | Priorité 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
| Quoi | Détail |
|---|---|
| La machine | Nom d'hôte, système, version du noyau, architecture, adresses IP publiques. |
| Les processus | Numé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 écoute | Protocole, adresse, port, processus. |
| Les conteneurs | Nom, image, état, ports publiés, projet Compose. |
| Les logiciels | Nom, 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
- Le contenu de vos fichiers, de vos bases de données ou de vos journaux.
- Les variables d'environnement des processus, où vivent souvent les secrets : il ne les lit pas.
- Le trafic réseau : il ne l'écoute pas.
- Les mots de passe et jetons passés en ligne de commande : ils sont masqués avant l'envoi. Ce masquage repose sur les noms d'options courants (
--password,--token…) : une application qui passerait un secret sous un autre nom ne serait pas masquée. Mieux vaut ne jamais en passer par ligne de commande.
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
- Le jeton d'inscription ne sert qu'à l'installation et n'est écrit nulle part sur la machine. Il expire après 24 heures par défaut, peut servir à plusieurs machines pendant ce temps, et se révoque depuis la console. Il ne donne accès à aucune donnée : il permet seulement d'inscrire une machine.
- À l'inscription, la machine reçoit sa propre identité, stockée en local et lisible de root seul. Côté Map & Fix, secrets et identités ne sont conservés que hachés.
- La commande d'installation contient le jeton : il peut rester dans l'historique de votre terminal. Son expiration couvre ce cas.
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é.