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 comoghcr.io/infrafence/infrafence-agent:<version>- a mesma imagem no Docker Hub como
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:latestPor 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/logsomente leitura: os logs que ele analisa.- o socket do Docker somente leitura: para encontrar os containers cujas portas e logs proteger.
/etc/infrafenceem 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.
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 -dContainers 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: cadaHost(...)da regra.HostRegexpe regras de caminho são ignorados. - Endereços de site do Caddy,
caddyecaddy_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:
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight