Docker
Exécutez l'agent InfraFence dans un conteneur Docker qui protège son hôte : l'image, les privilèges et montages nécessaires, et chaque variable d'environnement.
Dernière mise à jour:
L'agent fonctionne aussi dans un conteneur qui protège son hôte. L'image est multi-architecture (amd64 et arm64), publiée à chaque version et signée avec cosign.
ghcr.io/infrafence/infrafence-agent:latest, ou une étiquette de version commeghcr.io/infrafence/infrafence-agent:<version>- la même image sur Docker Hub sous le nom
infrafence/infrafence-agent
docker run
docker run -d --name infrafence-agent --restart unless-stopped \
--privileged --network host --pid host \
-v /var/log:/var/log:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v infrafence-config:/etc/infrafence \
-e INFRAFENCE_TOKEN=<YOUR_TOKEN> \
ghcr.io/infrafence/infrafence-agent:latestPourquoi chaque élément est nécessaire :
--privileged,--network host: l'agent gère le pare-feu de l'hôte (iptables et ipset) et lit l'état réseau de l'hôte.--pid host: il voit les processus de l'hôte, pour la détection des processus malveillants et l'attribution des requêtes DNS./var/logen lecture seule : les journaux qu'il analyse.- le socket Docker en lecture seule : pour trouver les conteneurs dont il faut protéger les ports et les journaux.
/etc/infrafencedans un volume nommé : l'enregistrement survit aux mises à niveau du conteneur. Le jeton n'est utilisé qu'une fois ; les démarrages suivants réutilisent l'enregistrement stocké.
Variables d'environnement
| Variable | Par défaut | Effet |
|---|---|---|
INFRAFENCE_TOKEN |
Le jeton d'installation, pour le premier enregistrement. | |
INFRAFENCE_TOKEN_FILE |
Un fichier contenant le jeton, pour les secrets Docker. | |
INFRAFENCE_AGENT_NAME |
le nom d'hôte court | Le nom dans le tableau de bord. |
INFRAFENCE_SERVER_URL |
https://infrafence.com |
Le tableau de bord auprès duquel s'enregistrer. |
Toutes les variables propres à l'agent (voir Configuration), comme WEB_LOG_PATH, peuvent aussi être passées avec -e.
Sans jeton, fichier de jeton ni clé de cluster au premier démarrage, le conteneur s'arrête avec [infrafence] ERROR: No credentials provided for registration.
Docker Compose
Chaque hôte a besoin de son propre jeton d'installation, comme n'importe quel autre serveur.
services:
infrafence-agent:
image: ghcr.io/infrafence/infrafence-agent:latest
container_name: infrafence-agent
restart: unless-stopped
privileged: true
network_mode: host
pid: host
environment:
- INFRAFENCE_TOKEN=${INFRAFENCE_TOKEN}
volumes:
- /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- infrafence-config:/etc/infrafence
volumes:
infrafence-config:INFRAFENCE_TOKEN=<YOUR_TOKEN> docker compose up -dConteneurs sur l'hôte
Sur un hôte où Docker tourne, l'agent saute aussi vers sa chaîne de pare-feu depuis DOCKER-USER, si bien que les bannissements couvrent aussi les ports publiés par vos conteneurs. Un agent installé avec install.sh sur l'hôte trouve aussi les journaux d'accès des conteneurs web (images nginx, Apache et OpenResty ; pour Traefik et Caddy, voir plus bas) et lit ces labels sur vos conteneurs :
| Label | Effet |
|---|---|
infrafence.monitor |
true pour toujours surveiller les journaux du conteneur, false pour l'ignorer. |
infrafence.log-path |
Chemins sur l'hôte de ses journaux d'accès, séparés par des virgules. |
infrafence.domain |
Ses domaines, séparés par des virgules. |
La découverte des conteneurs utilise l'outil en ligne de commande docker, que l'image de l'agent ne contient pas : à l'intérieur du conteneur, indiquez plutôt les journaux à l'agent avec WEB_LOG_PATH.
Domaines derrière un reverse proxy
Depuis l'agent 1.0.35, l'agent liste aussi les domaines de vos conteneurs en cours d'exécution à partir des labels que lit leur reverse proxy, via le socket Docker ou Podman (en lecture seule, actualisés toutes les 2 minutes, aussi dans le conteneur de l'agent) :
- Règles de routeur Traefik,
traefik.http.routers.<nom>.rule: chaqueHost(...)de la règle.HostRegexpet les règles de chemin sont ignorés. - Adresses de site Caddy,
caddyetcaddy_0,caddy_1... infrafence.domain.
C'est ce que Coolify écrit pour son proxy (coolify-proxy, Traefik ou Caddy) : un serveur Coolify n'a donc besoin d'aucun label. Les domaines apparaissent dans Surveillance › Badge de surveillance, où ils se vérifient avec un enregistrement DNS TXT, puisque le site n'a pas de racine sur l'hôte : voir Badge de surveillance. L'agent n'exécute jamais rien dans le conteneur du proxy ; il ne lit pas les journaux d'accès JSON de Traefik ou de Caddy.
Autres commandes
L'image exécute toute commande de l'agent que vous lui passez, par exemple la vérification en lecture seule :
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight