Tor activoES
Endurecimiento — RedderOSMinimizar (volver al escritorio)Cerrar (volver al escritorio)
// docs

Endurecimiento

El endurecimiento se aplica en ficheros de texto del overlay del build. Para auditarlo basta con leerlos o compararlos con un diff. Esta página resume cada uno.

Línea de arranque del kernel

Todas las entradas de GRUB llevan estos parámetros (los añade build.sh a config/grub.cfg):

ParámetroEfecto
lockdown=confidentialityNi siquiera root puede leer la memoria del kernel ni cargar código sin firmar en él.
init_on_alloc=1La memoria se pone a cero al reservarla.
init_on_free=1La memoria se pone a cero al liberarla: menos datos que recuperar en un ataque cold boot.
slab_nomergeNo mezcla cachés del asignador del kernel, lo que dificulta explotar desbordamientos.
page_alloc.shuffle=1Reparte de forma aleatoria las páginas libres.
randomize_kstack_offset=onDesplazamiento aleatorio de la pila del kernel en cada llamada al sistema.
pti=onAislamiento de las tablas de páginas del kernel (Meltdown).
mitigations=auto,nosmtMitigaciones de CPU activas y SMT (hyper-threading) desactivado si es necesario.
vsyscall=noneQuita la antigua página vsyscall, de dirección fija.
debugfs=offSin debugfs.
apparmor=1 security=apparmorActiva AppArmor como módulo de seguridad.
ipv6.disable=1IPv6 desactivado por completo.

sysctl

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

Kernel

ClaveValorEfecto
kernel.kptr_restrict2Oculta las direcciones del kernel, también a root.
kernel.dmesg_restrict1Solo root lee el log del kernel.
kernel.printk3 3 3 3Solo errores graves en la consola.
kernel.unprivileged_bpf_disabled1BPF solo para root.
net.core.bpf_jit_harden2Endurece el compilador JIT de BPF.
kernel.kexec_load_disabled1No se puede cargar otro kernel en caliente.
kernel.yama.ptrace_scope2Solo root puede depurar otros procesos.
kernel.perf_event_paranoid3Sin perf para usuarios normales.
kernel.sysrq0Teclas mágicas SysRq desactivadas.
kernel.core_pattern|/bin/falseNingún volcado de memoria llega a escribirse.
kernel.unprivileged_userns_clone0Sin espacios de nombres de usuario para usuarios normales.
dev.tty.ldisc_autoload0No carga disciplinas de línea bajo demanda.
vm.unprivileged_userfaultfd0userfaultfd solo para root.
vm.swappiness0No usar swap (además, no hay ninguna).

Sistema de ficheros

ClaveValorEfecto
fs.protected_symlinks1Protege contra trampas con enlaces simbólicos en /tmp.
fs.protected_hardlinks1Ídem con enlaces duros.
fs.protected_fifos2Ídem con FIFOs.
fs.protected_regular2Ídem con ficheros normales.
fs.suid_dumpable0Los programas setuid no generan volcados.

Red

ClaveValorEfecto
net.ipv4.tcp_syncookies1Resiste inundaciones SYN.
net.ipv4.tcp_rfc13371Protección TIME-WAIT (RFC 1337).
net.ipv4.tcp_timestamps0Sin marcas de tiempo TCP, que delatan el reloj.
net.ipv4.conf.*.rp_filter1Descarta paquetes con origen falsificado.
net.ipv4.conf.*.accept_redirects0Ignora redirecciones ICMP.
net.ipv4.conf.all.secure_redirects0Ídem, también las «seguras».
net.ipv4.conf.all.send_redirects0No envía redirecciones.
net.ipv4.conf.all.accept_source_route0Ignora el enrutamiento de origen.
net.ipv4.icmp_echo_ignore_all1No responde a ping.
net.ipv4.ip_forward0No reenvía tráfico.

El autotest comprueba que cada clave tiene el valor esperado (las que no existen en el kernel en uso se omiten y se indica).

Módulos bloqueados

Fichero: /etc/modprobe.d/redderos-blacklist.conf. Cada módulo se sustituye por /bin/false, así que no se puede cargar ni a mano.

GrupoMódulos
Protocolos de red poco usadosdccp, sctp, rds, tipc, n-hdlc, ax25, netrom, x25, rose, decnet, econet, af_802154, ipx, appletalk, psnap, p8022
Sistemas de ficheros poco usadoscramfs, freevxfs, jffs2, hfs, hfsplus, udf
DMA externo y periféricos inalámbricosfirewire-core, thunderbolt, bluetooth, btusb

La cámara (uvcvideo) tiene una línea preparada pero comentada: descoméntala en el build para desactivarla por completo.

AppArmor

Debian y Ubuntu no cargan perfiles de AppArmor en sistemas live. RedderOS anula esa condición (/etc/systemd/system/apparmor.service.d/redderos-live.conf) y carga los perfiles de apparmor-profiles.

Amnesia: systemd y límites

FicheroEfecto
systemd/journald.conf.d/redderos.confLogs solo en la RAM (máximo 32 MB), sin reenviar a syslog.
systemd/coredump.conf.d/redderos.confSin volcados de memoria.
systemd/system.conf.d/redderos.confDefaultLimitCORE=0 para todo lo que arranca systemd.
security/limits.d/redderos.confLímite de volcados a 0 para todos los usuarios.
systemd/logind.conf.d/redderos.confAl cerrar sesión no queda vivo ningún proceso del usuario.

Además, el build enmascara los temporizadores de apt, motd-news, e2scrub y fstrim, y desactiva los scripts del sistema live que activan la swap del disco del equipo, los informes de fallos (apport) y pollinate.

Usuarios y privilegios

  • root está bloqueado: no se puede iniciar sesión con él.
  • anon, el usuario de la sesión amnésica, no tiene contraseña ni sudo. Solo la entrada Administrador temporal le da sudo, y únicamente durante esa sesión.
  • La única excepción es redder-wipe: cualquier usuario puede ejecutarlo como root sin contraseña y sin argumentos (/etc/sudoers.d/redderos-wipe). Solo borra la RAM y apaga.
  • Los usuarios de perfil se crean en la RAM al abrir el perfil y se borran al cerrarlo.
  • umask 077: los ficheros nuevos solo los puede leer su dueño.

Sin administrador, un programa comprometido que se ejecute como anon no puede llegar a root ni modificar el cortafuegos.

Integridad de la ISO

El build genera md5sum.txt y sha256sum.txt con la suma de cada fichero de la imagen, y un .sha256 de la ISO completa. La firma GPG de la ISO está pendiente.