InfraFenceInfraFence

Live Security Operations

Começar

Docker

Execute o agente InfraFence como um container Docker que protege o próprio host - a imagem, os privilégios e mounts necessários e todas as variáveis de ambiente.

Última atualização:

O agente também roda como um container que protege o seu host. A imagem é multiarquitetura (amd64 e arm64), publicada a cada versão e assinada com cosign.

  • ghcr.io/infrafence/infrafence-agent:latest, ou uma tag de versão como ghcr.io/infrafence/infrafence-agent:<version>
  • a mesma imagem no 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 que cada parte é necessária:

  • --privileged, --network host: o agente gerencia o firewall do host (iptables e ipset) e lê o estado de rede do host.
  • --pid host: ele vê os processos do host, para a detecção de processos maliciosos e a atribuição do DNS.
  • /var/log somente leitura: os logs que ele analisa.
  • o socket do Docker somente leitura: para encontrar os containers cujas portas e logs proteger.
  • /etc/infrafence em um volume nomeado: o registro sobrevive às atualizações do container. O token é usado uma vez; as inicializações seguintes reutilizam o registro salvo.

Variáveis de ambiente

Variável Padrão Efeito
INFRAFENCE_TOKEN O token de instalação, para o primeiro registro.
INFRAFENCE_TOKEN_FILE Um arquivo com o token, para Docker secrets.
INFRAFENCE_AGENT_NAME o hostname curto O nome no painel.
INFRAFENCE_SERVER_URL https://infrafence.com O painel em que se registrar.

Qualquer uma das variáveis do próprio agente (veja Configuração), como WEB_LOG_PATH, também pode ser passada com -e.

Sem um token, um arquivo de token ou uma chave de cluster na primeira inicialização, o container para com [infrafence] ERROR: No credentials provided for registration.

Docker Compose

Cada host precisa do seu próprio token de instalação, como qualquer outro 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

Containers no host

Em um host onde o Docker roda, o agente salta para a sua cadeia de firewall também a partir de DOCKER-USER, então os banimentos cobrem também as portas que seus containers publicam. Um agente instalado no host com install.sh também encontra os logs de acesso dos containers web (imagens nginx, Apache e OpenResty; para Traefik e Caddy, veja abaixo) e lê estas labels nos seus containers:

Label Efeito
infrafence.monitor true para sempre acompanhar os logs do container, false para ignorá-lo.
infrafence.log-path Caminhos no host dos seus logs de acesso, separados por vírgula.
infrafence.domain Os seus domínios, separados por vírgula.

A descoberta de containers usa a ferramenta de linha de comando docker, que a imagem do agente não contém: dentro do container, aponte o agente para os logs com WEB_LOG_PATH.

Domínios atrás de um proxy reverso

A partir do agente 1.0.35, o agente também lista os domínios dos seus containers em execução a partir dos labels que o proxy reverso deles lê, pelo socket do Docker ou do Podman (só leitura, atualizados a cada 2 minutos, também dentro do container do agente):

  • Regras de roteador do Traefik, traefik.http.routers.<nome>.rule: cada Host(...) da regra. HostRegexp e regras de caminho são ignorados.
  • Endereços de site do Caddy, caddy e caddy_0, caddy_1...
  • infrafence.domain.

É o que o Coolify grava para o seu proxy (coolify-proxy, Traefik ou Caddy), então um servidor Coolify não precisa de nenhum label. Os domínios aparecem em Monitorar › Selo de monitoramento, onde são verificados com um registro DNS TXT, já que o site não tem raiz de documentos no host: veja Selo de monitoramento. O agente nunca executa nada no container do proxy; ele não lê os logs de acesso JSON do Traefik ou do Caddy.

Outros comandos

A imagem executa qualquer comando do agente que você passar, por exemplo a verificação somente leitura:

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