InfraFenceInfraFence

Live Security Operations

Inizia

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 come ghcr.io/infrafence/infrafence-agent:<version>
  • la stessa immagine su Docker Hub come infrafence/infrafence-agent

docker run

bash
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:latest

A 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/log in sola lettura: i log che analizza.
  • il socket Docker in sola lettura: per trovare i container di cui proteggere porte e log.
  • /etc/infrafence in 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.

yaml
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:
bash
INFRAFENCE_TOKEN=<YOUR_TOKEN> docker compose up -d

Container 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: ogni Host(...) della regola. HostRegexp e le regole sui percorsi vengono ignorati.
  • Indirizzi dei siti di Caddy, caddy e caddy_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:

bash
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight