implant sysctl

Aplica, reverte e inspeciona o hardening base do kernel, gravado em /etc/sysctl.d/99-hardening.conf. É a mesma camada que o check --auto-fix aplica sempre; o subcomando permite operá-la de forma isolada e idempotente.

O conteúdo se adapta ao host:

  • Papel de roteamento — se o host roteia pacotes (Docker, K3s ou WireGuard ativo), ip_forward fica em 1 e rp_filter em 2 (loose, tolera tráfego assimétrico). Em host comum, sem roteamento, ip_forward = 0 e rp_filter = 1 (strict).
  • BBR — se o kernel oferece o congestion control BBR (embutido ou como módulo carregável), adiciona fq + bbr e persiste o módulo. Sem BBR, nada é adicionado e o kernel segue com o algoritmo padrão.

Uso

implant sysctl [OPTIONS] <SUBCOMANDO>

Requer root. As opções do comando (--dry-run) vêm antes do subcomando:

sudo implant sysctl --dry-run apply     # correto
sudo implant sysctl apply --dry-run     # erro: argumento inesperado

Subcomandos

Subcomando Descrição
apply Grava 99-hardening.conf e carrega com sysctl -p
revert Remove 99-hardening.conf e recarrega com sysctl --system
status Mostra se o hardening está aplicado e os valores efetivos no kernel

Flags

Flag Descrição
--dry-run Simula sem aplicar mudanças
-o, --output <FORMATO> human (padrão), json ou yaml
-v, --verbose Mostra os comandos executados
-c, --config <ARQUIVO> Arquivo de configuração (padrão /etc/protocolo-implant/config.toml)
-t, --token <TOKEN> Token de identificação do servidor (ou PROTOCOLO_TOKEN)

O que é aplicado

Arquivo: /etc/sysctl.d/99-hardening.conf

Sysctl Valor Por quê
net.ipv4.tcp_syncookies 1 Resiste a SYN flood sem esgotar a fila
net.ipv4.ip_forward 0 ou 1 1 só quando o host roteia (Docker/K3s/WireGuard)
net.ipv4.conf.{all,default}.send_redirects 0 Host não é roteador: não envia ICMP redirect
net.ipv4.conf.{all,default}.accept_source_route 0 Rejeita pacotes com source routing
net.ipv4.conf.{all,default}.accept_redirects 0 Ignora ICMP redirect (anti sequestro de rota)
net.ipv4.conf.{all,default}.secure_redirects 0 Ignora redirect até de gateways conhecidos
net.ipv4.icmp_echo_ignore_broadcasts 1 Anti smurf (ping em broadcast)
net.ipv4.icmp_ignore_bogus_error_responses 1 Descarta respostas ICMP malformadas
net.ipv4.conf.{all,default}.rp_filter 1 ou 2 Anti spoofing; 2 (loose) quando o host roteia
net.ipv4.tcp_timestamps 0 Não expõe uptime via timestamps TCP
kernel.randomize_va_space 2 ASLR completo
net.core.default_qdisc fq Só com BBR disponível
net.ipv4.tcp_congestion_control bbr Só com BBR disponível

Com BBR, o implant também grava /etc/modules-load.d/tcp_bbr.conf e carrega o módulo tcp_bbr, para que a configuração sobreviva ao reboot.

Status

O status lê os valores efetivos do kernel (sysctl -n), não só o arquivo:

Campo Significado
applied 99-hardening.conf existe e foi gerado pelo implant
config_file Caminho do arquivo
ip_forward, rp_filter, congestion_control Valores em vigor no kernel
docker_detected Docker ou K3s presente
routing_role Host roteia pacotes (Docker, K3s ou WireGuard)

Se applied é true mas algum valor efetivo diverge, outro drop-in em /etc/sysctl.d/ está sobrescrevendo o do implant (arquivos com nome maior na ordem alfabética vencem).

Como reverter

sudo implant sysctl revert

O revert:

  1. remove /etc/sysctl.d/99-hardening.conf;
  2. se o host roteia (Docker/K3s/WireGuard), grava /etc/sysctl.d/99-ip-forward.conf com net.ipv4.ip_forward = 1, para não derrubar a rede dos containers ou da VPN;
  3. recarrega tudo com sysctl --system.

Observações:

  • sysctl --system só reaplica o que outros arquivos definem. Uma chave que nenhum outro arquivo define mantém o valor atual no kernel até o próximo reboot.
  • O revert não remove /etc/modules-load.d/tcp_bbr.conf.
  • implant reset --kernel-hardening e o passo 6 do emergency-reset fazem a mesma reversão.

O hardening base não faz parte do emergency-mode: para suspendê-lo, use revert e depois apply.

Exemplos

# Ver o que seria feito
sudo implant sysctl --dry-run apply

# Aplicar
sudo implant sysctl apply

# Conferir valores efetivos em JSON
sudo implant sysctl status -o json

# Reverter
sudo implant sysctl revert

Saída JSON do status (resumida):

{
  "success": true,
  "command": "sysctl",
  "data": {
    "action": "status",
    "target": "sysctl",
    "result": "completed",
    "dry_run": false,
    "state": {
      "applied": true,
      "config_file": "/etc/sysctl.d/99-hardening.conf",
      "ip_forward": "1",
      "rp_filter": "2",
      "congestion_control": "bbr",
      "docker_detected": true,
      "routing_role": true
    }
  }
}

Relação com outros comandos

Camada Arquivo Comando
Hardening base (este) /etc/sysctl.d/99-hardening.conf implant sysctl / check --auto-fix
Pack estendido opt-in (IPv6, SYN flood, TIME_WAIT) /etc/sysctl.d/99-harden-network.conf harden-network
Tuning de capacidade (file-max, inotify, filas) /etc/sysctl.d/99-implant.conf check --auto-fix (removido por limits revert)

Veja também

  • harden-network — pack estendido de rede
  • check — aplica o hardening base no --auto-fix
  • reset — --kernel-hardening