implant harden-network
Pack opt-in de hardening de rede que cobre gaps do hardening base
(check --auto-fix aplica só sysctls IPv4). Endereça três classes de
problema comuns em servidores expostos:
- IPv6 desprotegido — VPS modernas (DO/Hetzner/Vultr/GCP) trazem
IPv6 ativo por default. Sem
accept_redirects=0no IPv6, atacante na mesma LAN/segmento pode hijack rotas via ICMPv6 redirect. - Anti SYN flood —
tcp_syncookies=1(já aplicado pelo hardening base) salva o servidor de cair, mas a fila default (tcp_max_syn_backlog) é pequena. Subir para 8192 + reduzir janela de retransmissão de SYN-ACK fortalece a defesa. - TIME_WAIT acumulando — servidores expostos com muitas conexões
curtas esgotam ephemeral ports com
tcp_fin_timeout=60sdefault. Reduzir + ligartcp_tw_reuserecicla mais rápido.
Uso
implant harden-network <SUBCOMANDO>Como subcomando standalone (reversível independentemente)
sudo implant harden-network apply # aplica pack
sudo implant harden-network status # estado atual
sudo implant harden-network revert # remove packDesligar temporariamente (emergency)
sudo implant harden-network emergency-disable --duration 3600 --source ticket-123
sudo implant harden-network emergency-status
sudo implant harden-network emergency-restore # re-aplica agora e cancela o deadmanemergency-disable remove o pack por um TTL (--duration em segundos,
default 3600, máximo 21600 = 6h); ao fim do TTL um deadman re-aplica
sozinho. --source é um identificador livre de quem disparou (ex.:
número de ticket). Para desligar todas as features opt-in de uma vez, use
implant emergency-mode.
Junto com auto-fix (flag em `check`)
sudo implant check --auto-fix --harden-networkA flag requer --auto-fix (é destrutiva). Se passada sem
--auto-fix, é ignorada com warning.
Sysctls aplicados
Arquivo: /etc/sysctl.d/99-harden-network.conf
| Sysctl | Valor | Por quê |
|---|---|---|
net.ipv6.conf.all.accept_redirects |
0 |
Espelho do v4 — anti ICMPv6 redirect hijack |
net.ipv6.conf.default.accept_redirects |
0 |
Idem para novas interfaces |
net.ipv6.conf.all.accept_source_route |
0 |
Espelho do v4 — anti source-route attacks |
net.ipv6.conf.default.accept_source_route |
0 |
Idem |
net.ipv4.tcp_max_syn_backlog |
8192 |
Fila maior contra SYN flood |
net.core.somaxconn |
65535 |
Backlog de accept() para serviços |
net.ipv4.tcp_synack_retries |
2 |
Janela menor de retransmissão (default 5) |
net.ipv4.tcp_syn_retries |
3 |
Idem para SYN inicial |
net.ipv4.tcp_fin_timeout |
15 |
Recicla TIME_WAIT (default 60s) |
net.ipv4.tcp_tw_reuse |
1 |
Reuso de sockets em TIME_WAIT |
net.ipv4.tcp_rfc1337 |
1 |
Anti TIME_WAIT assassination (RFC 1337) |
net.ipv4.tcp_keepalive_time |
600 |
Detecta zumbi em 10min (default 2h) |
net.ipv4.tcp_keepalive_intvl |
30 |
Intervalo entre probes |
net.ipv4.tcp_keepalive_probes |
5 |
Probes antes de dar como morto |
vm.swappiness |
10 |
Prefere RAM, swap só sob pressão |
vm.overcommit_memory |
0 |
Heurística padrão do kernel (ver nota abaixo) |
vm.panic_on_oom |
0 |
Kill processo, não derruba kernel |
net.netfilter.nf_conntrack_max |
524288 |
Apenas se Docker/K3s detectado |
nf_conntrack_tcp_timeout_syn_recv |
10 |
Idem (default 60s) — anti SYN flood na tabela |
nf_conntrack_tcp_timeout_syn_sent |
10 |
Idem |
nf_conntrack_tcp_timeout_close_wait |
30 |
Idem (default 60s) |
nf_conntrack_tcp_timeout_fin_wait |
30 |
Idem (default 120s) |
nf_conntrack_tcp_timeout_time_wait |
30 |
Idem (default 120s) |
vm.overcommit_memory: versões anteriores à 2.43.0 gravavam o modo2(comovercommit_ratio = 80). Em hosts com memória comprometida acima doCommitLimitresultante (comum em hosts de containers sem swap), todoforkfalhava e o SSH caía. O pack agora grava0explicitamente, o que desfaz o modo2no próximoapply.
Saída JSON
{
"success": true,
"schema_version": "1.0",
"client": {"name": "implant", "version": "2.54.0"},
"command": "harden-network",
"data": {
"action": "status",
"target": "harden-network",
"result": "completed",
"dry_run": false,
"state": {
"applied": true,
"config_file": "/etc/sysctl.d/99-harden-network.conf",
"docker_detected": true,
"ipv6_protected": true,
"tcp_syn_backlog": "8192",
"somaxconn": "65535"
}
}
}Relação com o hardening base
| Camada | Arquivo | Subcomando | Default no check --auto-fix? |
|---|---|---|---|
| Base (IPv4 + ASLR) | /etc/sysctl.d/99-hardening.conf |
implant sysctl apply |
Sim (sempre) |
| Estendido (IPv6 + SYN/TW tuning) | /etc/sysctl.d/99-harden-network.conf |
implant harden-network apply |
Não (opt-in via flag) |
Os dois são independentes — você pode rodar harden-network revert
sem afetar o 99-hardening.conf base.