💾 Archived View for moribundo.flounder.online › blog › obsd › 003_particionado_cifrado.gmi captured on 2024-05-10 at 11:22:32. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-03-20)
-=-=-=-=-=-=-
Cuando instalas OpenBSD, te sugiere un esquema de particionado que puedes aceptar, editar o personalizar. Es el siguiente:
a: / b: swap c: *unset* d: /tmp e: /var f: /usr g: /usr/X11R6 h: /usr/local i: /usr/src j: /usr/obj k: /home
NOTA: Vaya, algo diferente a GNU/Linux, las particiones se llaman a:, b:, c:, d:, e: ... y si nos fijamos, la partición c: no se puede usar, es el disco entero al que iremos quitando espacio para crear las otras.
¿Por qué este esquema tan particionado? quizá debemos saber primero qué es la mitigación de memoria W^X.
Es una política de protección de memoria en la que cada página es o escribible o ejecutable, pero no ambas a la vez. Esto soluciona algunos ataques de desbordamiento de buffers, incluyendo los más comunes ataques basados en la pila, asegurando que la pila no es ejecutable y que ningún código inyectado se ejecutará, en lugar de eso el programa terminará. Para que funcione, ciertos directorios deben ir en particiones diferentes.
Los desarrolladores de software upstream deben entender que las violaciones de W^X son una una práctica tremendamente arriesgada y ese estilo de programación debe ser desterrado.
Pero ya está bien de tanta teoría.
Voy a poner el ejemplo de mi disco en el que voy a instalar OpenBSD. Es un disco con una partición FAT32 usada para almacenaje y que quiero mantener. En el resto del disco hay actualmente una partición GNU/Linux montada en / otra para swap y otra para /home. La idea es que quede así:
1. Partición cifrada a:
2. La partición que ya tengo en FAT32
El esquema difiere mucho del que nos sugiere OpenBSD en la instalación, pero para un equipo doméstico no es necesario hacer tanta partición. ¿Por qué he respetado /usr/local?
Programas como chrome o libreoffice están programados para violar W^X por lo que hay que montar la partición con wxallowed en /etc/fstab. La documentación dice que de esta forma permite que el sistema base sea más seguro frente a violaciones W^X siempre que /usr/local sea un sistema de archivos separado.
Cuando inicias desde el CD/USB de instalación, después de las lineas azules de autodetección, hace la primera pregunta: "Instalar, Actualizar, Autoinstalar o Shell", así que me quedo con la última opción.
Para saber cómo llama OpenBSD al disco duro podemos llamar a dmesg o a sysctl:
sysctl hw.disknames hw.disknames=wd0:bfb4775bb8397569,cd0:
Ahí aparece wd0, que es mi disco (el tuyo puede llamarse de otra forma). Lo detecta pero no está en uso, así que lo activamos:
cd /dev && sh MAKEDEV wd0
Y para poderlo iniciar, cargo el MBR en los 64 primeros bytes:
fdisk -iy wd0
WARNING !!! Si tu disco fuese EFI, el comando cambia:
fdisk -iy -g -b 960 wd0
Con disklabel crearé una partición que contrendrá todo el espacio OpenBSD, donde irán las subparticiones que el sistema llama "clasificaciones" o disklabels (swap, /, /usr/local, /var, etc).
disklabel -E wd0
Me devuelve una linea de comandos wd0> Lo que haré primero es borrar las particiones a: b: y d: de Archlinux con "d"elete, después escribo los cambios con "w"rite y salgo con "q"uit.
Y ahora creo una sola partición que abarque todo el espacio antes de la partición existente FAT32 reconocida por disklabel como "unknown" (a veces puede salir como MSDOS).
Vuelvo a estar en la shell y ahora voy a por el cifrado.
Como has visto, no he elegido la opción por defecto en el tipo de archivos, si no que le he puesto RAID. Esto es porque se utiliza el sistema softraid para uso con LVM, RAID y crypto.
Sigo en la shell, así que usaré bio para el cifrado:
bioctl -c C -l wd0a softraid0
Nos pide una contraseña y su verificación.
WARNING !!! El teclado está en inglés, así que si tienes pensado poner símbolos, buscalos antes de hacer nada, ya que la contraseña resultante no será la misma si un día se traduce el keyboard en el arranque.
Finaliza con un mensaje importante: "crypto volume attach as sd0"
Esto me dice que en el disco wd0, partición a:, va a existir un "subdisco" llamado sd0. Por decirlo de alguna manera, wd0a es un contenedor de sd0.
Ya tengo el disco cifrado mediante AES en modo XTS.
Como pasaba al principio con wd0, sd0 está creado pero no activado, así que lo activo:
cd /dev && sh MAKEDEV sd0
IMPORTANTE !!! La documentación dice que hay que sobreescribir con ceros el primer megabyte, pero no dice el motivo (supongo que para asegurarse de que no haya nada en el primer Mb de la partición que nos fastidie el invento), así que haré caso, y una vez hecho, ya se puede salir con "exit" para seguir con la instalación inicial:
dd if=/dev/zero of=/dev/rsd0c bs=1m count=1 exit
NOTA: Si te fijas, al trabajar en profundidad con ciertos comandos, hay que usar el modo I/O RAW, por lo que a sd0 solo hay que ponerle una r delante y una c detrás. Si tu disco fuese wd2, el modo RAW sería rwd2c
TIP: Si llega un momento en que quieres cambiar la contraseña:
bioctl -P sd2 Old passphrase: New passphrase: Re-type passphrase:
¡¡ Vaya, tanto rollo para acabar donde empezamos !!
Bueno, este rollo es necesario. Volvemos a estar ante la pregunta "Instalar, Actualizar, Autoinstalar o Shell", así que seguiré con la instalación pulsando "I", e iré respondiendo las preguntas que me hace (idioma de teclado, nombre de máquina, IPv4, IPv6, contraseña...).
Justo después de crear un usuario, me pregunta lo siguiente: "Wich disk is the root disk: wd0, sd0...[wd0]"
WARNING !!! Ya no es wd0, DEBES DECIRLE QUE USE sd0
Empezaré las clasificaciones (labels) de la partición.
1. Me pregunta lo siguiente: "Use (W)hole disk MBR, whole disk (
(G)pt or (E)dit? [whole]. Por defecto viene [whole], que significa usar todo el espacio del disco sd0 que indicamos en la anterior pregunta (no wd0, por lo que ya no hay riesgo de borrar ninguna otra partición que tengas), pulso intro.
2. Ahora me pregunta si dejamos el esquema que nos recomienda o no. Las opciones son "Auto layout", "Edit layout" o "Custom layout". Dijimos que haríamos nuestro propio esquema, así que elijo la última opción.
¡¡ Vaya, qué sorpresa, otra vez en disklabel !!. Si, ahora toca hacer las clasificaciones y definir los puntos de montaje (fíjate que ahora disklabel utiliza sd0).
Continua la instalación y ahora me pregunta: "Wich disk do you whish to initialice (or ´done´) [done]" y como no quiero configurar otro disco, le digo que ya está [done].
Verás que aparece la configuración de fstab y ya nos pregunta por el resto de la instalación. Tranquilo/a/e, ya no preguntará más por nada que tenga que ver con discos.
NOTA: Ahora indicará que el directorio no contiene una firma. Le digo "yes" a continuar ya se supone que la imagen la bajé del sitio oficial e hice la verificación hash (esto es importante tomarlo como costumbre).
Una vez instalado todo ya podré reiniciar sin el CD y disfrutar de OpenBSD
Recomiendo leer la entrada "Qué hacer después de instalar OpenBSD"
Tags #openbsd