Docker
Esegui l'agente InfraFence come container Docker che protegge il suo host: l'immagine, i privilegi e i mount necessari e tutte le variabili d'ambiente.
Ultimo aggiornamento:
L'agente gira anche come container che protegge il suo host. L'immagine è multi-architettura (amd64 e arm64), pubblicata a ogni release e firmata con cosign.
ghcr.io/infrafence/infrafence-agent:latest, oppure un tag di versione comeghcr.io/infrafence/infrafence-agent:<version>- la stessa immagine su Docker Hub come
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:latestA cosa serve ogni parte:
--privileged,--network host: l'agente gestisce il firewall dell'host (iptables e ipset) e legge lo stato di rete dell'host.--pid host: vede i processi dell'host, per il rilevamento dei processi malware e l'attribuzione del traffico DNS./var/login sola lettura: i log che analizza.- il socket Docker in sola lettura: per trovare i container di cui proteggere porte e log.
/etc/infrafencein un volume con nome: la registrazione sopravvive agli aggiornamenti del container. Il token viene usato una sola volta; gli avvii successivi riusano la registrazione salvata.
Variabili d'ambiente
| Variabile | Predefinito | Effetto |
|---|---|---|
INFRAFENCE_TOKEN |
Il token di installazione, per la prima registrazione. | |
INFRAFENCE_TOKEN_FILE |
Un file che contiene il token, per i Docker secret. | |
INFRAFENCE_AGENT_NAME |
l'hostname breve | Il nome nella dashboard. |
INFRAFENCE_SERVER_URL |
https://infrafence.com |
La dashboard presso cui registrarsi. |
Anche le variabili proprie dell'agente (vedi Configurazione), come WEB_LOG_PATH, si possono passare con -e.
Se al primo avvio non c'è un token, un file del token o una chiave di cluster, il container si ferma con [infrafence] ERROR: No credentials provided for registration.
Docker Compose
Ogni host ha bisogno del proprio token di installazione, come qualsiasi altro server.
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 -dContainer sull'host
Su un host dove gira Docker, l'agente fa il jump alla sua catena del firewall anche da DOCKER-USER, così i ban coprono anche le porte pubblicate dai tuoi container. Un agente installato sull'host con install.sh trova anche i log di accesso dei container web (immagini nginx, Apache e OpenResty; per Traefik e Caddy vedi sotto) e legge queste label sui tuoi container:
| Label | Effetto |
|---|---|
infrafence.monitor |
true per controllare sempre i log del container, false per ignorarlo. |
infrafence.log-path |
Percorsi sull'host dei suoi log di accesso, separati da virgola. |
infrafence.domain |
I suoi domini, separati da virgola. |
La scoperta dei container usa lo strumento a riga di comando docker, che l'immagine dell'agente non contiene: dentro il container, indica invece all'agente i log con WEB_LOG_PATH.
Domini dietro un reverse proxy
Dall'agente 1.0.35 l'agente elenca anche i domini dei container in esecuzione dalle label che legge il loro reverse proxy, tramite il socket di Docker o Podman (in sola lettura, aggiornati ogni 2 minuti, anche dentro il container dell'agente):
- Regole di router di Traefik,
traefik.http.routers.<nome>.rule: ogniHost(...)della regola.HostRegexpe le regole sui percorsi vengono ignorati. - Indirizzi dei siti di Caddy,
caddyecaddy_0,caddy_1... infrafence.domain.
È ciò che Coolify scrive per il suo proxy (coolify-proxy, Traefik o Caddy), quindi un server Coolify non ha bisogno di label. I domini compaiono in Monitoraggio › Badge di monitoraggio, dove si verificano con un record DNS TXT, perché il sito non ha una document root sull'host: vedi Badge di monitoraggio. L'agente non esegue mai nulla nel container del proxy; non legge i log di accesso JSON di Traefik o Caddy.
Altri comandi
L'immagine esegue qualsiasi comando dell'agente le passi, per esempio il controllo in sola lettura:
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight