Modulo Docker

Instalacao e configuracao otimizada do Docker (ou do K3s, com --cluster-mode k3s).

implant check --modules docker             # somente leitura
implant check --auto-fix --modules docker  # aplica

Verificacoes

Item Descricao Valor
Docker instalado Instalacao via script oficial get.docker.com
Docker service Servico ativo e habilitado -
Docker Compose Plugin v2 docker compose
Network public Rede para servicos publicos (proxy) public (bridge)
Limites de logs Docker Rotacao de logs dos containers max-size <= 100m e max-file <= 10 (aplica 10MB x 3)
Limpeza Docker Mais de 5 containers parados prune de containers/imagens com mais de 24h e volumes orfaos
K3s instalado / nao instalado Coerencia com o --cluster-mode -

O item de limites de log aceita qualquer valor definido dentro do teto, nao apenas o template do Implant.

Configuracao Aplicada

daemon.json

As chaves abaixo sao mescladas ao /etc/docker/daemon.json existente (com backup); as demais chaves do arquivo sao preservadas:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3",
    "compress": "true"
  },
  "storage-driver": "overlay2",
  "live-restore": true,
  "userland-proxy": false,
  "experimental": false,
  "features": { "buildkit": true }
}

Gerenciamento manual: `implant docker-limits apply | revert | status`.

Network

Cria a network public se nao existir. As demais networks ficam a cargo de cada stack.

docker network create public

ip_forward

Apos uma instalacao nova do Docker, o Implant garante net.ipv4.ip_forward = 1 na mesma rodada (veja Hardening).

K3s

Com --cluster-mode k3s, o Implant instala e configura K3s em vez de Docker:

implant check --auto-fix --cluster-mode k3s
implant check --auto-fix --cluster-mode k3s --cluster-role agent \
  --cluster-url https://<servidor>:6443 --cluster-token <token>

Para trocar um servidor ja configurado: `implant reconfigure`.

Firewall e containers

Portas publicadas pelo Docker passam pela chain DOCKER-USER, nao pela INPUT. Os bans, o rate-limit (rate-limit add --docker <porta>) e o geo-block do Implant instalam ganchos tambem na DOCKER-USER. O item Cobertura DOCKER-USER do modulo Hardening confere isso.

Traefik

Para servidores com Traefik como proxy, ha um modulo e dois comandos dedicados:

O que Como
Permissao e query string do access log implant check --modules traefik (corrige com implant fix --auto)
Ligar/desligar o access log e restringir permissoes `implant traefik-accesslog` (--enable, --disable, --fix-perms)
Bloquear arquivos sensiveis (/.env, /.git, chaves...) no ingresso com 403 `implant traefik-edge` (--audit, --configure)

O access log configurado pelo Implant grava em JSON, so erros (400-599), descarta os headers por padrao (mantem User-Agent, Content-Type, X-Forwarded-For e X-Real-Ip; Authorization e Cookie nunca) e, nas versoes do Traefik que suportam, descarta a query string, que pode conter credenciais. Os arquivos ficam com modo 0640 (grupo adm).