Tor actiuCA
Enfortiment — RedderOSMinimitza (torna a l'escriptori)Tanca (torna a l'escriptori)
// docs

Enfortiment

L'enfortiment s'aplica en fitxers de text de l'overlay de la compilació. Per auditar-lo n'hi ha prou de llegir-los o comparar-los amb un diff. Aquesta pàgina en resumeix cadascun.

Línia d'arrencada del nucli

Totes les entrades de GRUB porten aquests paràmetres (els afegeix build.sh a config/grub.cfg):

ParàmetreEfecte
lockdown=confidentialityNi tan sols root no pot llegir la memòria del nucli ni carregar-hi codi sense signar.
init_on_alloc=1La memòria es posa a zero en reservar-la.
init_on_free=1La memòria es posa a zero en alliberar-la: menys dades per recuperar en un atac cold boot.
slab_nomergeNo barreja les memòries cau de l'assignador del nucli, cosa que dificulta explotar desbordaments.
page_alloc.shuffle=1Reparteix de manera aleatòria les pàgines lliures.
randomize_kstack_offset=onDesplaçament aleatori de la pila del nucli a cada crida al sistema.
pti=onAïllament de les taules de pàgines del nucli (Meltdown).
mitigations=auto,nosmtMitigacions de CPU actives i SMT (hyper-threading) desactivat si cal.
vsyscall=noneTreu l'antiga pàgina vsyscall, d'adreça fixa.
debugfs=offSense debugfs.
apparmor=1 security=apparmorActiva AppArmor com a mòdul de seguretat.
ipv6.disable=1IPv6 desactivat completament.

sysctl

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

Nucli

ClauValorEfecte
kernel.kptr_restrict2Amaga les adreces del nucli, també a root.
kernel.dmesg_restrict1Només root llegeix el registre del nucli.
kernel.printk3 3 3 3Només errors greus a la consola.
kernel.unprivileged_bpf_disabled1BPF només per a root.
net.core.bpf_jit_harden2Enforteix el compilador JIT de BPF.
kernel.kexec_load_disabled1No es pot carregar un altre nucli en calent.
kernel.yama.ptrace_scope2Només root pot depurar altres processos.
kernel.perf_event_paranoid3Sense perf per als usuaris normals.
kernel.sysrq0Tecles màgiques SysRq desactivades.
kernel.core_pattern|/bin/falseCap bolcat de memòria no s'arriba a escriure.
kernel.unprivileged_userns_clone0Sense espais de noms d'usuari per als usuaris normals.
dev.tty.ldisc_autoload0No carrega disciplines de línia sota demanda.
vm.unprivileged_userfaultfd0userfaultfd només per a root.
vm.swappiness0No utilitzar swap (a més, no n'hi ha cap).

Sistema de fitxers

ClauValorEfecte
fs.protected_symlinks1Protegeix contra paranys amb enllaços simbòlics a /tmp.
fs.protected_hardlinks1El mateix amb enllaços durs.
fs.protected_fifos2El mateix amb FIFO.
fs.protected_regular2El mateix amb fitxers normals.
fs.suid_dumpable0Els programes setuid no generen bolcats.

Xarxa

ClauValorEfecte
net.ipv4.tcp_syncookies1Resisteix les inundacions SYN.
net.ipv4.tcp_rfc13371Protecció TIME-WAIT (RFC 1337).
net.ipv4.tcp_timestamps0Sense marques de temps TCP, que delaten el rellotge.
net.ipv4.conf.*.rp_filter1Descarta paquets amb origen falsificat.
net.ipv4.conf.*.accept_redirects0Ignora les redireccions ICMP.
net.ipv4.conf.all.secure_redirects0El mateix, també les «segures».
net.ipv4.conf.all.send_redirects0No envia redireccions.
net.ipv4.conf.all.accept_source_route0Ignora l'encaminament d'origen.
net.ipv4.icmp_echo_ignore_all1No respon a ping.
net.ipv4.ip_forward0No reenvia trànsit.

L'autotest comprova que cada clau té el valor esperat (les que no existeixen al nucli en ús s'ometen i s'indica).

Mòduls bloquejats

Fitxer: /etc/modprobe.d/redderos-blacklist.conf. Cada mòdul se substitueix per /bin/false, de manera que no es pot carregar ni a mà.

GrupMòduls
Protocols de xarxa poc utilitzatsdccp, sctp, rds, tipc, n-hdlc, ax25, netrom, x25, rose, decnet, econet, af_802154, ipx, appletalk, psnap, p8022
Sistemes de fitxers poc utilitzatscramfs, freevxfs, jffs2, hfs, hfsplus, udf
DMA extern i perifèrics sense filfirewire-core, thunderbolt, bluetooth, btusb

La càmera (uvcvideo) té una línia preparada però comentada: descomenta-la a la compilació per desactivar-la completament.

AppArmor

Debian i Ubuntu no carreguen perfils d'AppArmor en sistemes live. RedderOS anul·la aquesta condició (/etc/systemd/system/apparmor.service.d/redderos-live.conf) i carrega els perfils d'apparmor-profiles.

Amnèsia: systemd i límits

FitxerEfecte
systemd/journald.conf.d/redderos.confRegistres només a la RAM (màxim 32 MB), sense reenviar a syslog.
systemd/coredump.conf.d/redderos.confSense bolcats de memòria.
systemd/system.conf.d/redderos.confDefaultLimitCORE=0 per a tot el que arrenca systemd.
security/limits.d/redderos.confLímit de bolcats a 0 per a tots els usuaris.
systemd/logind.conf.d/redderos.confEn tancar la sessió no queda viu cap procés de l'usuari.

A més, la compilació emmascara els temporitzadors d'apt, motd-news, e2scrub i fstrim, i desactiva els scripts del sistema live que activen la swap del disc de l'ordinador, els informes d'errors (apport) i pollinate.

Usuaris i privilegis

  • root està bloquejat: no s'hi pot iniciar la sessió.
  • anon, l'usuari de la sessió amnèsica, no té contrasenya ni sudo. Només l'entrada Administrador temporal li dona sudo, i únicament durant aquella sessió.
  • L'única excepció és redder-wipe: qualsevol usuari el pot executar com a root sense contrasenya i sense arguments (/etc/sudoers.d/redderos-wipe). Només esborra la RAM i apaga.
  • Els usuaris de perfil es creen a la RAM en obrir el perfil i s'esborren en tancar-lo.
  • umask 077: els fitxers nous només els pot llegir el propietari.

Sense administrador, un programa compromès que s'executi com a anon no pot arribar a root ni modificar el tallafoc.

Integritat de la ISO

La compilació genera md5sum.txt i sha256sum.txt amb la suma de cada fitxer de la imatge, i un .sha256 de la ISO completa. La signatura GPG de la ISO està pendent.