Montando un pollo con btrfs

Porque básicamente estoy más perdido que un pulpo en un garaje. Y hablo de la seguridad de sistemas, no de los sistemas de ficheros.

Actualización: añadida información sobre snapshots al final de la entrada.

Hace tiempo ya que me vengo temiendo una infección por ransomware o algo similar que nos destruya las máquinas Windows que tenemos que soportar y que, de paso, se lleve por delante la cuidadosa colección de archivos y carpetas que utilizan mis homínidos para su trabajo. No, en serio, guardan archivos del año 1996 y cuidan los de las últimas tres semanas a lo sumo. Pero ahí están. Si les da la ventolera y los buscan y no están. ¿ Quién se lleva toda la atención apocalíptica ? Exacto.

Las copias de seguridad están a salvo porque no hay ninguna en línea, aunque sospecho que al menos dos de ellos tienen un USB conectado permanentemente y poco puedo hacer con ello porque a esos niveles pasan bastante de mí.

Lo que más me paraliza del asunto del secuestro de archivos es que no tengo manera de saber desde cuándo tenemos uno activo en los sistemas y, por tanto, desde cuándo son válidos los archivos. Dos meses o dos semanas cifrando archivos puede ser suficiente para no recuperarnos ya que estarán guardados con las copias aunque no tengan acceso a ellas. Demasiado por pensar con demasiadas incógnitas.

Sí, empecé a pergeñar un plan que incluía programas para comprobar que los archivos seguían siendo accesibles según tipo y lo mismo funciona. Es decir, asumiendo que el cifrado afecte a todo el archivo y no sólo a su parte útil de una hoja de cálculo o una imagen, por ejemplo, debería ser posible detectarlo con alguna herramienta de terminal que nos diga si eso sigue siendo reconocible como hoja de cálculo o como imagen, y si eso ocurre dar el aviso y parar el sistema. No sé, he de probarlo.

Visto lo anterior me he propuesto tener un servidor que se dedique a dar acceso local y remoto a las colecciones de archivos (documentos e imágenes) con las mejores medidas de seguridad que pueda instalar y que les permitan seguir trabajando.

El esquema que me he planteado es el siguiente:

La parte básica son las instantáneas de archivos y lo intento resolver empleando el sistema de archivos btrfs en un disco aparte (dos terabytes montados en /srv) y con varios subvolúmenes creados sobre él:

  1. /srv/docs para documentos
  2. /srv/images para imágenes
  3. /srv/videos para imágenes en acción ;-)

Después he buscado la manera más cómoda de automatizar la toma de instantáneas de contenido y he visto un script creado por un tal Marc que he parametrizado para mí y lo he instalado en el sistema junto con una planificación de trabajos. Y sí, funciona, y muy rápido, pero como aún no tengo digerido el mecanismo subyacente pues me fío de él y lo dejo para estudiar más adelante.

Me queda el acceso vía SMB/CIFS que ya tengo implementado en otra máquina y que no será muy complicado de traer, el de NFS que lo mismo, y queda el acceso DAV que será la parte que más se pueda complicar.

Ojo, y todo ésto haciéndolo sobre el mismo conjunto de archivos. En teoría si aceptan bloqueos a nivel de archivo debería funcionar pero tengo muchas dudas sobre DAV. Sé que NFS y Samba emplean bloqueo a nivel de sistema y según dicen no suele ser problemático usarlos sobre el mismo recurso. Pero DAV sí tiene una gestión de bloqueos independientes y ya no estoy tan seguro.

Creación y mantenimiento de instantáneas

He creado una planificación de trabajos para el usuario root que lanzan el script del que hablo más arriba para crear y mantener un número de instantáneas de los sistemas de archivos cada hora, día y semana.

GREPOUT="(Create a snapshot of|Will delete the oldest|Delete subvolume|Making snapshot of )"
BTRFS_ROOT=/srv
BTRFS_SNAP=/usr/local/sbin/btrfs-snaps
# 
# m h  dom mon dow   command
0 * * * * cd $BTRFS_ROOT && $BTRFS_SNAP hourly 3 | grep -Ev "$GREPOUT"
1 0 * * * cd $BTRFS_ROOT && $BTRFS_SNAP daily  4 | grep -Ev "$GREPOUT"
2 0 * * 0 cd $BTRFS_ROOT && $BTRFS_SNAP weekly 4 | grep -Ev "$GREPOUT"

Estoy siguiendo las indicaciones del autor y he hecho algunas pruebas y funciona. Otra cosa que me queda pendiente, como siempre, es probar a recuperar alguna de ellas. Como no me da la vida de momento lo dejo así.