Modulo Hardening
Aplicacao de politicas de seguranca.
implant check --modules hardening # somente leitura
implant check --auto-fix --modules hardening # aplicaVerificacoes
| Item | Descricao |
|---|---|
| Fail2Ban | Instalacao e servico ativo |
| Configuracao Fail2Ban | Jail SSH com os valores esperados |
| Kernel hardening | Parametros sysctl de seguranca, conferidos no kernel |
| Kernel ip_forward | Coerente com o papel do host (roteia ou nao) |
| Servicos | Desabilita bluetooth, cups e avahi-daemon se ativos |
| Boot-survival do firewall | Unit que restaura os ipsets do Implant no boot e persistencia das regras (netfilter-persistent ou, sem ele, reaplicacao pela unit) |
| Cobertura DOCKER-USER | Blocklist do rate-limit tambem vale para containers |
Fail2Ban
Configuracao Aplicada
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = <IPs confiaveis>
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3- Um
jail.localque nao foi escrito pelo Implant nunca e sobrescrito: a configuracao vai para o drop-in/etc/fail2ban/jail.d/implant.conf, e a do operador continua valendo. ignoreiprecebe localhost, os IPs desecurity.trusted_ips(config.toml) e, por padrao, o IP da sessao SSH atual. Para adicionar IPs:implant ssh-key --whitelist-ip <IP>.
Gerenciamento manual: `implant fail2ban` (enable, status, list-banned, unban...). Para desbanir em todos os mecanismos de uma vez, use `implant unban`.
Kernel Hardening
Parametros aplicados via /etc/sysctl.d/99-hardening.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = {0 ou 1}
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = {1 ou 2}
net.ipv4.conf.default.rp_filter = {1 ou 2}
net.ipv4.tcp_timestamps = 0
kernel.randomize_va_space = 2
# Somente se o kernel suporta BBR
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbrDepois de aplicar, o Implant confere o valor efetivo de cada chave (sysctl -n), o que detecta drop-ins conflitantes ou modulo ausente.
Hosts que roteiam (Docker, K3s, WireGuard)
O Implant detecta se o host roteia pacotes:
| Papel | ip_forward |
rp_filter |
|---|---|---|
| Docker, K3s ou WireGuard presente | 1 |
2 (loose: aceita trafego assimetrico de VPN e multiplas interfaces) |
| Host single-homed | 0 |
1 (strict) |
Se o Docker for instalado depois do hardening, a divergencia (ip_forward=0 com Docker) e corrigida na mesma rodada do --auto-fix.
BBR
Quando o kernel suporta BBR (builtin ou modulo tcp_bbr), o arquivo inclui fq + bbr e o modulo e persistido em /etc/modules-load.d/tcp_bbr.conf. Sem suporte, nada e adicionado (continua CUBIC).
Gerenciamento manual: `implant sysctl apply | revert | status`.
Pack estendido de rede (opt-in)
Protecoes adicionais de IPv6, SYN flood e TIME_WAIT ficam fora do check padrao:
implant check --auto-fix --harden-network
# ou
implant harden-network applyVeja harden-network.
Boot-survival do firewall
Verifica se a unit implant-firewall-restore esta instalada e atualizada. Sem ela, um reboot deixa os ipsets do Implant (blocklist, whitelist, geo-block, auto-ban) vazios e as regras que os referenciam falham.
O check --auto-fix nao instala a unit: o item fica em Fail e aponta a instalacao. Desde a v2.58.0 o implant rate-limit reconcile instala (ou atualiza) a unit sozinho, com confirmacao automatica e guarda de boot. A instalacao manual continua disponivel:
implant rate-limit reconcile # instala com guarda
implant firewall-restore install --confirm-timeout 10 --boot-guard # manualDesde a v2.59.0 o check tambem exige que as regras que usam os ipsets voltem no boot. Sets sem as regras nao bloqueiam nada. O item reprova, dizendo o que falta, quando:
netfilter-persistentnao esta instalado;iptables-persistentnao esta instalado (sem o plugin dele, onetfilter-persistent savesai 0 sem gravar nada);- o servico
netfilter-persistentnao esta habilitado; /etc/iptables/rules.v4esta ausente ou vazio.
Atencao com o UFW: instalar o pacote ufw remove o iptables-persistent e o netfilter-persistent no apt (conflito de pacotes). Ate a v2.60, os ipsets voltavam pela unit e as regras nao. Desde a v2.61.0 a unit atual reaplica as regras do Implant no boot a partir dos states (rate-limit, feed-block, geo-block), acima das chains do UFW, e o item passa com ela em dia; com unit antiga, o self-update a troca. Regras cruas do operador (DROP solto, policy DROP propria) continuam sem quem as traga: use o UFW ou implant ban. O item tambem reprova se a reaplicacao deste boot falhou e o componente nao foi refeito depois. O `ban` segue a mesma regra e so responde "sobrevive a reboot: sim" com sets e regras.
Veja firewall-restore.
Cobertura DOCKER-USER
Quando o rate-limit esta aplicado, verifica se a chain DOCKER-USER tem o DROP da blocklist (sem ele, IPs banidos alcancam containers com porta publicada). Nao corrige sozinho; a correcao e:
implant rate-limit reconcile