¿Qué sistema de archivos fácil de administrar elegir en Linux para servidores domésticos?

¿Qué sistema de archivos fácil de administrar elegir en Linux para servidores domésticos?

Tengo un servidor doméstico que se ejecuta en un HP Proliant Microserver Gen7 con 10 GB de memoria ECC y que ejecuta Debian 8 (jessie). En este momento tengo un pequeño disco de sistema (copia de seguridad usando rsnapshot) y 2 discos de almacenamiento de 3TB configurados como Raid 1 usando mdadm, encima tengo grupos LVM para diferentes propósitos, uno de ellos, además, está cifrado con dm-crypt/luks mantener datos privados.

Estoy planeando comprar dos discos duros adicionales del mismo tamaño para el grupo de almacenamiento y probablemente configurar el servidor desde cero, definitivamente usando Debian nuevamente, pero probablemente esta vez bajo la virtualización de xenserver. Entonces, el grupo de almacenamiento sería 4x 3 TB, con Raid1 dejando 6 TB utilizables, con Raid5 (o raidz1) 9 TB.

Si bien la combinación de mdadm/lvm/dm-crypt funciona bien, la encuentro increíblemente compleja, especialmente para planificar una estrategia sencilla de recuperación ante desastres. Necesito investigar para cada una de las capas cuál es el mejor proceso de copia de seguridad y restauración de metadatos, etc.

En un mundo perfecto, convertiría todo el almacenamiento en un grupo raidz1 cifrado, PERO el cifrado aún no llegó a Zfs en Linux y, según mi investigación, no está del todo claro CUÁNDO se puede esperar que se implemente.

Btrfs tiene un poco la misma situación: al menos parece que la producción es estable, pero desgraciadamente, el cifrado también llegará en un futuro imprevisible.

Entonces, de los sistemas de archivos que preferiría usar, ambos no admiten de forma nativa el cifrado en Linux (todavía). Bueno, hay un montón de instrucciones y tutoriales sobre cómo usar LVM cifrados con LUKS junto con ZFS o BtrFS. Existe la posibilidad de usar LVM sobre ZFS o ZFS sobre LVM; para mí, eso suena como un desastre horrible.

No me gusta en absoluto el concepto de EncFS, así que esa tampoco es una opción.

Con suerte, hay algunas opciones de las que no he oído hablar, por eso mi pregunta aquí: ¿Qué más hay para lograr esto? Un sistema de archivos "fácil (como en extensible, etc. como zfs, corrección de errores) para elegir en Linux para servidor doméstico, que ¿Se puede cifrar completamente o en partes?

ACTUALIZACIÓN de diciembre de 2017: ZFS en Linux con cifrado próximamente: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/

Respuesta1

mdadm / lvm / dm-crypt es probablemente su mejor opción - y no es tan complejo en absoluto - simplemente maneja cada capa apropiadamente - o, dependiendo de sus necesidades, mdadm /dm-crypt/lvm (si desea que todos los LV compartir un solo dispositivo con 1 frase de contraseña)

Tienes razón al no usar encfs.es inseguro.

Respuesta2

Si elige la configuración ZFS, le sugeriría:

  • no use LVM, cree ZVOL en la parte superior del grupo

  • para SO: partición GPT para grupo ZFS no cifrado con espejo (o raidz)

  • para datos privados: use LUKS en la partición GPT, luego, encima, cree un espejo de grupo ZFS (o raidz)

después del arranque, inicie sesión a través de ssh, ingrese la contraseña para las particiones cifradas e importe el grupo que está encima de LUKS, luego inicie las máquinas virtuales (es mejor escribir un script de shell)

entonces el esquema sugerido esGPT/LUKS/ZFS/datos o ZVOL para VM

No olvides crear una partición BIOS (tamaño 1M) si no usas el arranque UEFI. Tampoco olvides crear una partición para GRUB, como 150M.

para io aleatorio intenso, sugiero deshabilitar la captación previa de ZFS (echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable)

Respuesta3

Este es un consejo para todos los que quieran cifrar algunos datos, siempre cifre el 100% de todo el almacenamiento posible que esté conectado a la computadora, sin importar si es la partición Grub, la partición del sistema, la partición de inicio, la partición de datos, el intercambio, etc. SIEMPRE CIFRAR TODO.

¿Por qué? Porque usted no controla dónde guardan los datos las aplicaciones/sistema.

Secuencia de eventos de muestra de Disarter:

  1. Arranque normal
  2. Usa una aplicación
  3. Abrir un documento 'privado'
  4. Fallo del sistema (software o hardware)
  5. El siguiente arranque no funciona
  6. Un dispositivo termina su vida útil (no vuelve a funcionar)

No puedes borrar lo que hay en dicho dispositivo (no funciona), no puedes leerlo, entonces, ¿qué se guardó allí? ¿Quizás algo "privado"? Ni siquiera puedes saber qué ni dónde.

Pero a otra persona (tal vez con algunos millones de dinero en el bolsillo) le importó, así que no puedes tirar ese dispositivo a la basura, no hasta que confirmes que los datos 'privados' no están ahí... pero no puedes saberlo a menos que des el dispositivo a una empresa, pero nuevamente lo 'privado' está en riesgo, tal vez lo 'copian' (mala persona trabajando allí, etc.).

Pregúntele esto: ¿Conoce cada línea fuente de todo el código que usa (código de arranque, código de sistema, código de aplicaciones, etc.), código fuente que compila usted mismo... y nunca usa ningún tipo de 'binario'? . por lo que debes haber compilado con lápiz y papel el compilador.

De lo contrario, utilizas un código que no sabes lo que hace.

Nota al margen: si necesita utilizar datos "privados", nunca vuelva a conectar esa computadora a Internet... tal vez alguna parte de la aplicación que utilizó guardó algunos datos y en un futuro lejano los envió a servidores de Internet.

Ejemplo extremo: usas una aplicación de escritura para leer un archivo TXT, tiene un código oculto para guardarlo escondido en algún lugar... luego, después de algunos años de actualizaciones, esa aplicación (u otra) tiene un código oculto para leer esos datos guardados ocultos y lo envió a un servidor de Internet o a una computadora de terceros, etc.

¿Los casos son extremos? Los aprendo de la manera más difícil... en mi Linux introduzco un troyano (dentro de una aplicación que quiero usar) aparentemente no hace nada (no tiene conexión de socket, etc.), pero estaba registrando algún tipo de 'escritura' en el disco y haciendo una doble escritura... después de casi dos semanas, otro toyan tomó esa información e intentó enviarla a una IP... Dios mío, tenía otra computadora en el 'medio' de mi conexión a Internet (sí, por supuesto que lo estoy y Estaba completamente paranoico, eso me salvó) para 'descubrir' esas conexiones y 'bloquearlas'... sin mencionar que solo uso 'Linux' ya que con Windows eso no puede estar bajo control. Dichos troyanos estaban allí sin conocimiento del autor de la aplicación, se inyectaban cuando la aplicación se almacenaba en el repositorio. Espero entender, prefiero no decir qué aplicación fue ya que ha sido 'reparada'... ¡quién sabe desde cuándo!

¿Crees que solo estoy pensando en troyanos, cosas ocultas, etc., para nada? Recuerda intercambiar, archivos temporales, etc. Algunas aplicaciones guardan el documento que estás usando/creando para ayudarte a no perder lo que habías hecho. ¿Dónde diablos guardan esos datos? No es necesario en su partición cifrada, tal vez en SWAP, carpeta temporal o en general donde quería el autor de la aplicación, por lo que no siempre puede saber dónde está guardada... nuevamente cifre todo.

Oh, sí, grub.cfg puede residir dentro de un RAID0, LUKS sobre LUKS... sobre LUKS, etc. Sólo necesita una partición muy pequeña para la Etapa 1.5 o 2 de 8MiB o menos sin formato (volcado masivo) para permitir que Grub2 arranque... busque la partición BIOS GRUB en Internet.

Lo siento, todavía no probé ZFS y no estoy seguro de si los archivos Grub (grub.cfg, etc.) pueden residir dentro de un ZFS... pero probé tenerlos encima: Ext4 sobre LVM sobre LUKS sobre LVM sobre LUKS... y así sucesivamente. algunos niveles... sobre LUKS sobre un GPT real (también en un MBR) sin partición EFI y arranca bien... sólo es necesario agregar las extensiones 'crypto' y 'lvm', al instalar grub2... prefiero escribir mi propio grub.cfg, así que nunca uso nada más que grub2-install relacionado con grub2 (nuevamente estoy paranoico).

Siempre uso como gestor de arranque principal mi propio grub.cfg que llama a otros gestores de arranque, de esa manera dejo que el sistema administre su propio gestor de arranque sin tocar el principal que edito manualmente con un editor de texto.

Lo siento, soy un paranoico total.

¿Qué debes pensar? Si hay algún "lugar" donde se puedan escribir/leer datos no cifrados, cualquier tipo de datos "privados" es un error total, en algún momento se puede escribir en esa parte no cifrada. Para estar seguro, nunca tenga ninguna parte que no esté cifrada.

PD: Si usa la partición EFI, tenga en cuenta que se puede escribir cualquier código en ella porque no tiene ninguna protección y es una partición FAT32 no cifrable.

PPD: ¿Dónde se pueden almacenar los datos en un FAT32? En cualquier lugar, también en el espacio libre. ¿Y en Ext4? Exactamente lo mismo... siempre cifra todo el almacenamiento.

información relacionada