Tor ativoPT
Reforço — RedderOSMinimizar (voltar ao ambiente de trabalho)Fechar (voltar ao ambiente de trabalho)
// docs

Reforço

O reforço é aplicado em ficheiros de texto do overlay do build. Para o auditar, basta lê-los ou compará-los com um diff. Esta página resume cada um.

Linha de arranque do kernel

Todas as entradas do GRUB levam estes parâmetros (o build.sh acrescenta-os a config/grub.cfg):

ParâmetroEfeito
lockdown=confidentialityNem o root pode ler a memória do kernel nem carregar nele código não assinado.
init_on_alloc=1A memória é posta a zero ao ser reservada.
init_on_free=1A memória é posta a zero ao ser libertada: menos dados a recuperar num ataque cold boot.
slab_nomergeNão mistura caches do alocador do kernel, o que dificulta explorar transbordos de memória.
page_alloc.shuffle=1Distribui aleatoriamente as páginas livres.
randomize_kstack_offset=onDeslocamento aleatório da pilha do kernel em cada chamada ao sistema.
pti=onIsolamento das tabelas de páginas do kernel (Meltdown).
mitigations=auto,nosmtMitigações de CPU ativas e SMT (hyper-threading) desativado se necessário.
vsyscall=noneRetira a antiga página vsyscall, de endereço fixo.
debugfs=offSem debugfs.
apparmor=1 security=apparmorAtiva o AppArmor como módulo de segurança.
ipv6.disable=1IPv6 completamente desativado.

sysctl

Ficheiro: /etc/sysctl.d/99-redderos-hardening.conf.

Kernel

ChaveValorEfeito
kernel.kptr_restrict2Oculta os endereços do kernel, também ao root.
kernel.dmesg_restrict1Só o root lê o registo do kernel.
kernel.printk3 3 3 3Só erros graves na consola.
kernel.unprivileged_bpf_disabled1BPF só para o root.
net.core.bpf_jit_harden2Reforça o compilador JIT do BPF.
kernel.kexec_load_disabled1Não é possível carregar outro kernel a quente.
kernel.yama.ptrace_scope2Só o root pode depurar outros processos.
kernel.perf_event_paranoid3Sem perf para utilizadores normais.
kernel.sysrq0Teclas mágicas SysRq desativadas.
kernel.core_pattern|/bin/falseNenhum dump de memória chega a ser escrito.
kernel.unprivileged_userns_clone0Sem namespaces de utilizador para utilizadores normais.
dev.tty.ldisc_autoload0Não carrega disciplinas de linha a pedido.
vm.unprivileged_userfaultfd0userfaultfd só para o root.
vm.swappiness0Não usar swap (além disso, não há nenhuma).

Sistema de ficheiros

ChaveValorEfeito
fs.protected_symlinks1Protege contra armadilhas com ligações simbólicas em /tmp.
fs.protected_hardlinks1O mesmo com ligações físicas.
fs.protected_fifos2O mesmo com FIFOs.
fs.protected_regular2O mesmo com ficheiros normais.
fs.suid_dumpable0Os programas setuid não geram dumps.

Rede

ChaveValorEfeito
net.ipv4.tcp_syncookies1Resiste a inundações SYN.
net.ipv4.tcp_rfc13371Proteção TIME-WAIT (RFC 1337).
net.ipv4.tcp_timestamps0Sem marcas temporais TCP, que denunciam o relógio.
net.ipv4.conf.*.rp_filter1Descarta pacotes com origem falsificada.
net.ipv4.conf.*.accept_redirects0Ignora redirecionamentos ICMP.
net.ipv4.conf.all.secure_redirects0O mesmo, incluindo os «seguros».
net.ipv4.conf.all.send_redirects0Não envia redirecionamentos.
net.ipv4.conf.all.accept_source_route0Ignora o encaminhamento pela origem.
net.ipv4.icmp_echo_ignore_all1Não responde a ping.
net.ipv4.ip_forward0Não reencaminha tráfego.

O autoteste verifica que cada chave tem o valor esperado (as que não existem no kernel em uso são omitidas, e isso é indicado).

Módulos bloqueados

Ficheiro: /etc/modprobe.d/redderos-blacklist.conf. Cada módulo é substituído por /bin/false, por isso não pode ser carregado nem à mão.

GrupoMódulos
Protocolos de rede pouco usadosdccp, sctp, rds, tipc, n-hdlc, ax25, netrom, x25, rose, decnet, econet, af_802154, ipx, appletalk, psnap, p8022
Sistemas de ficheiros pouco usadoscramfs, freevxfs, jffs2, hfs, hfsplus, udf
DMA externo e periféricos sem fiosfirewire-core, thunderbolt, bluetooth, btusb

A câmara (uvcvideo) tem uma linha preparada mas comentada: retire o comentário no build para a desativar por completo.

AppArmor

O Debian e o Ubuntu não carregam perfis do AppArmor em sistemas live. O RedderOS anula essa condição (/etc/systemd/system/apparmor.service.d/redderos-live.conf) e carrega os perfis de apparmor-profiles.

Amnésia: systemd e limites

FicheiroEfeito
systemd/journald.conf.d/redderos.confRegistos só na RAM (máximo 32 MB), sem reencaminhar para o syslog.
systemd/coredump.conf.d/redderos.confSem dumps de memória.
systemd/system.conf.d/redderos.confDefaultLimitCORE=0 para tudo o que o systemd arranca.
security/limits.d/redderos.confLimite de dumps a 0 para todos os utilizadores.
systemd/logind.conf.d/redderos.confAo terminar sessão, não fica vivo nenhum processo do utilizador.

Além disso, o build mascara os temporizadores do apt, motd-news, e2scrub e fstrim, e desativa os scripts do sistema live que ativam a swap do disco do computador, os relatórios de falhas (apport) e o pollinate.

Utilizadores e privilégios

  • O root está bloqueado: não é possível iniciar sessão com ele.
  • anon, o utilizador da sessão amnésica, não tem palavra-passe nem sudo. Só a entrada Administrador temporário lhe dá sudo, e apenas durante essa sessão.
  • A única exceção é o redder-wipe: qualquer utilizador o pode executar como root sem palavra-passe e sem argumentos (/etc/sudoers.d/redderos-wipe). Só apaga a RAM e desliga.
  • Os utilizadores de perfil são criados na RAM ao abrir o perfil e apagados ao fechá-lo.
  • umask 077: os ficheiros novos só podem ser lidos pelo seu dono.

Sem administrador, um programa comprometido que seja executado como anon não consegue chegar a root nem modificar a firewall.

Integridade da ISO

O build gera md5sum.txt e sha256sum.txt com a soma de cada ficheiro da imagem, e um .sha256 da ISO completa. A assinatura GPG da ISO está pendente.