InfraFenceInfraFence

Live Security Operations

Empezar

Docker

Ejecuta el agente InfraFence como un contenedor Docker que protege su host - la imagen, los privilegios y montajes necesarios, y todas las variables de entorno.

Última actualización:

El agente también funciona como un contenedor que protege su host. La imagen es multiarquitectura (amd64 y arm64), se publica con cada versión y está firmada con cosign.

  • ghcr.io/infrafence/infrafence-agent:latest, o una etiqueta de versión como ghcr.io/infrafence/infrafence-agent:<version>
  • la misma imagen en Docker Hub como 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

Por qué hace falta cada parte:

  • --privileged, --network host: el agente gestiona el firewall del host (iptables e ipset) y lee el estado de red del host.
  • --pid host: ve los procesos del host, para la detección de procesos maliciosos y la atribución de DNS.
  • /var/log en solo lectura: los logs que analiza.
  • el socket de Docker en solo lectura: para encontrar los contenedores cuyos puertos y logs debe proteger.
  • /etc/infrafence en un volumen con nombre: el registro sobrevive a las actualizaciones del contenedor. El token se usa una sola vez; los arranques posteriores reutilizan el registro guardado.

Variables de entorno

Variable Predeterminado Efecto
INFRAFENCE_TOKEN El token de instalación, para el primer registro.
INFRAFENCE_TOKEN_FILE Un archivo que contiene el token, para los secretos de Docker.
INFRAFENCE_AGENT_NAME el nombre de host corto El nombre en el panel.
INFRAFENCE_SERVER_URL https://infrafence.com El panel en el que registrarse.

Cualquiera de las variables propias del agente (consulta Configuración), como WEB_LOG_PATH, también se puede pasar con -e.

Sin un token, un archivo de token o una clave de clúster en el primer arranque, el contenedor se detiene con [infrafence] ERROR: No credentials provided for registration.

Docker Compose

Cada host necesita su propio token de instalación, como cualquier otro servidor.

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

Contenedores en el host

En un host donde funciona Docker, el agente también salta a su cadena de firewall desde DOCKER-USER, así que los bloqueos cubren también los puertos que publican tus contenedores. Un agente instalado con install.sh en el host también encuentra los logs de acceso de los contenedores web (imágenes de nginx, Apache y OpenResty; para Traefik y Caddy, ver más abajo) y lee estas etiquetas de tus contenedores:

Etiqueta Efecto
infrafence.monitor true para vigilar siempre los logs del contenedor, false para omitirlo.
infrafence.log-path Rutas del host de sus logs de acceso, separadas por comas.
infrafence.domain Sus dominios, separados por comas.

El descubrimiento de contenedores usa la herramienta de línea de comandos docker, que la imagen del agente no contiene: dentro del contenedor, indica al agente los logs con WEB_LOG_PATH.

Dominios detrás de un proxy inverso

Desde el agente 1.0.35, el agente también lista los dominios de tus contenedores en ejecución a partir de las etiquetas que lee su proxy inverso, mediante el socket de Docker o Podman (solo lectura, actualizados cada 2 minutos, también dentro del contenedor del agente):

  • Reglas de router de Traefik, traefik.http.routers.<nombre>.rule: cada Host(...) de la regla. HostRegexp y las reglas de ruta se omiten.
  • Direcciones de sitio de Caddy, caddy y caddy_0, caddy_1...
  • infrafence.domain.

Es lo que Coolify escribe para su proxy (coolify-proxy, Traefik o Caddy), así que un servidor Coolify no necesita ninguna etiqueta. Los dominios aparecen en Supervisión › Distintivo de monitorización, donde se verifican con un registro DNS TXT, porque el sitio no tiene raíz de documentos en el host: consulta Distintivo de monitorización. El agente nunca ejecuta nada en el contenedor del proxy; no lee los logs de acceso JSON de Traefik ni de Caddy.

Otros comandos

La imagen ejecuta cualquier comando del agente que le pases, por ejemplo la comprobación de solo lectura:

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