implant lockdown
Primitiva genérica para restringir qualquer serviço com TTL e
auto-recovery via systemd-run. O wrapper ssh-service
usa esta primitiva com lockdown_cmd e restore_cmd específicos do SSH.
Aqui você expõe os mesmos building blocks para outros serviços. A mesma
primitiva é usada internamente pelo emergency-mode e pela confirmação/
guarda de boot do firewall-restore.
Uso
implant lockdown <subcomando> [OPTIONS]Subcomandos
`create --service --ttl-seconds --lockdown-cmd --restore-cmd `
Cria um lockdown novo (ou substitui existente para o mesmo service).
--service— identificador único do serviço ([A-Za-z0-9._-]{1,64})--ttl-seconds— TTL em segundos (max21600= 6h)--lockdown-cmd— shell command que restringe o serviço (ex:systemctl stop nginx && ufw deny 80/tcp)--restore-cmd— shell command que restaura o serviço (ex:systemctl start nginx && ufw allow 80/tcp)
`heartbeat --service --ttl-seconds [--source ]`
Renova o TTL e reagenda o systemd-run. Sem heartbeat, o restore
acontece quando o TTL atual expira.
`status [--service ]`
Sem --service: lista todos os lockdowns ativos.
Com --service: detalhe de um lockdown específico.
`list`
Lista todos os lockdowns ativos persistidos em /var/lib/implant/lockdowns/.
`emergency-restore --service `
Recovery imediato: roda o restore_cmd sem esperar o TTL e cancela o
timer agendado. Exige TTY interativo (prompt de confirmação).
Persistência
- Diretório:
/var/lib/implant/lockdowns/(mode 0700) - Arquivo por serviço:
<service>.json(mode 0600) - Schema:
LockdownEntrycomservice,disabled_at,expires_at,ttl_seconds,lockdown_cmd,restore_cmd,last_heartbeat,last_heartbeat_source,history,schema_version - Writes atômicos via
.tmp+fs::rename
systemd-run
A cada create ou heartbeat, um transient unit é (re)agendado:
systemd-run --on-active={ttl}s --unit=implant-restore-{service} \
/bin/sh -c '<restore_cmd>'Inspecionar manualmente:
systemctl status implant-restore-ssh-service.timer
systemctl list-timers --all | grep implant-restoreSaída JSON
Igual ao ssh-service — envelope com o registro do lockdown para create/heartbeat/status/emergency-restore; lista de registros para list.
Exemplo
# Tirar o nginx do ar por 30 min, com volta automática
sudo implant lockdown create --service nginx --ttl-seconds 1800 \
--lockdown-cmd 'systemctl stop nginx' \
--restore-cmd 'systemctl start nginx'
# Manter por mais 30 min
sudo implant lockdown heartbeat --service nginx --ttl-seconds 1800 --source ticket-123
# Voltar agora
sudo implant lockdown emergency-restore --service nginxVeja também
- ssh-service — wrapper especializado para SSH
- Conceito: Lockdown / Deadman