Tor activoGL
Endurecemento — RedderOSMinimizar (volver ao escritorio)Pechar (volver ao escritorio)
// docs

Endurecemento

O endurecemento aplícase en ficheiros de texto do overlay da build. Para auditalo abonda con lelos ou comparalos cun diff. Esta páxina resume cada un.

Liña de arranque do kernel

Todas as entradas de GRUB levan estes parámetros (engádeos build.sh a config/grub.cfg):

ParámetroEfecto
lockdown=confidentialityNin sequera root pode ler a memoria do kernel nin cargar nel código sen asinar.
init_on_alloc=1A memoria ponse a cero ao reservala.
init_on_free=1A memoria ponse a cero ao liberala: menos datos que recuperar nun ataque cold boot.
slab_nomergeNon mestura cachés do asignador do kernel, o que dificulta explotar desbordamentos.
page_alloc.shuffle=1Reparte de forma aleatoria as páxinas libres.
randomize_kstack_offset=onDesprazamento aleatorio da pila do kernel en cada chamada ao sistema.
pti=onIllamento das táboas de páxinas do kernel (Meltdown).
mitigations=auto,nosmtMitigacións de CPU activas e SMT (hyper-threading) desactivado se é necesario.
vsyscall=noneQuita a antiga páxina vsyscall, de enderezo fixo.
debugfs=offSen debugfs.
apparmor=1 security=apparmorActiva AppArmor como módulo de seguranza.
ipv6.disable=1IPv6 desactivado por completo.

sysctl

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

Kernel

ClaveValorEfecto
kernel.kptr_restrict2Oculta os enderezos do kernel, tamén a root.
kernel.dmesg_restrict1Só root le o rexistro do kernel.
kernel.printk3 3 3 3Só erros graves na consola.
kernel.unprivileged_bpf_disabled1BPF só para root.
net.core.bpf_jit_harden2Endurece o compilador JIT de BPF.
kernel.kexec_load_disabled1Non se pode cargar outro kernel en quente.
kernel.yama.ptrace_scope2Só root pode depurar outros procesos.
kernel.perf_event_paranoid3Sen perf para usuarios normais.
kernel.sysrq0Teclas máxicas SysRq desactivadas.
kernel.core_pattern|/bin/falseNingún volcado de memoria chega a escribirse.
kernel.unprivileged_userns_clone0Sen espazos de nomes de usuario para usuarios normais.
dev.tty.ldisc_autoload0Non carga disciplinas de liña baixo demanda.
vm.unprivileged_userfaultfd0userfaultfd só para root.
vm.swappiness0Non usar swap (ademais, non hai ningunha).

Sistema de ficheiros

ClaveValorEfecto
fs.protected_symlinks1Protexe contra trampas con ligazóns simbólicas en /tmp.
fs.protected_hardlinks1O mesmo coas ligazóns duras.
fs.protected_fifos2O mesmo cos FIFO.
fs.protected_regular2O mesmo cos ficheiros normais.
fs.suid_dumpable0Os programas setuid non xeran volcados.

Rede

ClaveValorEfecto
net.ipv4.tcp_syncookies1Resiste as inundacións SYN.
net.ipv4.tcp_rfc13371Protección TIME-WAIT (RFC 1337).
net.ipv4.tcp_timestamps0Sen marcas de tempo TCP, que delatan o reloxo.
net.ipv4.conf.*.rp_filter1Descarta paquetes con orixe falsificada.
net.ipv4.conf.*.accept_redirects0Ignora as redireccións ICMP.
net.ipv4.conf.all.secure_redirects0O mesmo, tamén as «seguras».
net.ipv4.conf.all.send_redirects0Non envía redireccións.
net.ipv4.conf.all.accept_source_route0Ignora o encamiñamento de orixe.
net.ipv4.icmp_echo_ignore_all1Non responde a ping.
net.ipv4.ip_forward0Non reenvía tráfico.

O autotest comproba que cada clave ten o valor esperado (as que non existen no kernel en uso omítense e indícase).

Módulos bloqueados

Ficheiro: /etc/modprobe.d/redderos-blacklist.conf. Cada módulo substitúese por /bin/false, así que non se pode cargar nin a man.

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 sen fíosfirewire-core, thunderbolt, bluetooth, btusb

A cámara (uvcvideo) ten unha liña preparada pero comentada: descoméntaa na build para desactivala por completo.

AppArmor

Debian e Ubuntu non cargan perfís de AppArmor en sistemas live. RedderOS anula esa condición (/etc/systemd/system/apparmor.service.d/redderos-live.conf) e carga os perfís de apparmor-profiles.

Amnesia: systemd e límites

FicheiroEfecto
systemd/journald.conf.d/redderos.confRexistros só na RAM (máximo 32 MB), sen reenvialos a syslog.
systemd/coredump.conf.d/redderos.confSen volcados de memoria.
systemd/system.conf.d/redderos.confDefaultLimitCORE=0 para todo o que arrinca systemd.
security/limits.d/redderos.confLímite de volcados a 0 para todos os usuarios.
systemd/logind.conf.d/redderos.confAo pechar sesión non queda vivo ningún proceso do usuario.

Ademais, a build enmascara os temporizadores de apt, motd-news, e2scrub e fstrim, e desactiva os scripts do sistema live que activan a swap do disco do equipo, os informes de erros (apport) e pollinate.

Usuarios e privilexios

  • root está bloqueado: non se pode iniciar sesión con el.
  • anon, o usuario da sesión amnésica, non ten contrasinal nin sudo. Só a entrada Administrador temporal lle dá sudo, e unicamente durante esa sesión.
  • A única excepción é redder-wipe: calquera usuario pode executalo como root sen contrasinal e sen argumentos (/etc/sudoers.d/redderos-wipe). Só borra a RAM e apaga.
  • Os usuarios de perfil créanse na RAM ao abrir o perfil e bórranse ao pechalo.
  • umask 077: os ficheiros novos só os pode ler o seu propietario.

Sen administrador, un programa comprometido que se execute como anon non pode chegar a root nin modificar a devasa.

Integridade da ISO

A build xera md5sum.txt e sha256sum.txt coa suma de cada ficheiro da imaxe, e un .sha256 da ISO completa. A sinatura GPG da ISO está pendente.