Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Cómo instalar y configurar Box Backup en linux

 le preguntamos a la inteligencia artificial gemini de Google que nos explique cómo instalar y configurar Box Backup en linux

Explicanos detalladamente cómo instalar y configurar Box Backup en linux

Box Backup es un sistema de copia de seguridad de código abierto conocido por su fuerte encriptación del lado del cliente, de-duplicación de datos y su capacidad de realizar copias de seguridad continuas (casi en tiempo real). Está diseñado para respaldar grandes cantidades de datos a través de la red de manera eficiente y segura.

A diferencia de otras soluciones, Box Backup no solo comprime y encripta, sino que también identifica y almacena solo los bloques de datos únicos, lo que ahorra un espacio considerable en el almacenamiento remoto, especialmente útil para respaldar múltiples máquinas con archivos similares o para historiales de versiones extensos.

Componentes Principales de Box Backup

bbstored (Storage Daemon / Servidor): Se ejecuta en el servidor de respaldo. Es el encargado de almacenar los datos encriptados y de-duplicados que recibe de los clientes. También gestiona la base de datos de los bloques de datos.

bbstore (Utilidades de Almacenamiento): Herramientas de línea de comandos para administrar el bbstored (ej., verificar la integridad de los datos, ver estadísticas).

bbclientd (Client Daemon / Cliente): Se ejecuta en la máquina cliente que se desea respaldar. Monitoriza los archivos en busca de cambios, encripta, de-duplica y envía los datos al bbstored.

bbclient (Utilidades de Cliente): Herramientas de línea de comandos para interactuar con bbclientd (ej., forzar un respaldo, restaurar archivos).

Archivos de Configuración: bbstored.conf, bbclientd.conf, y bbkeys.conf (para las claves criptográficas).

Arquitectura Típica para esta Guía

Servidor Box Backup: Una máquina Linux que albergará el bbstored.

Cliente Box Backup: Una o más máquinas Linux que albergarán el bbclientd.

Requisitos Previos

Dos Máquinas Linux: (o VMs) una para el servidor y otra para el cliente.

Acceso Root/Sudo: En ambas máquinas.

Conectividad de Red:
Asegúrate de que el servidor y el cliente puedan comunicarse en el puerto por defecto de Box Backup (4747/TCP).

Sincronización de Tiempo (NTP):
Es CRUCIAL que la hora sea consistente entre el servidor y el cliente. Las diferencias de tiempo pueden causar fallos de autenticación y problemas de integridad.

Espacio en Disco:

Servidor: Mucho espacio libre en el directorio de almacenamiento (StoragePath) para los datos de respaldo.

Cliente: Espacio para la caché (BackupCachePath), que puede ser significativa dependiendo del tamaño de los datos y los cambios.

Paso 1: Instalación de Box Backup

Box Backup puede instalarse desde los repositorios de tu distribución o compilarse desde el código fuente si necesitas una versión más reciente o funcionalidades específicas (como FUSE para montajes virtuales). Para la mayoría de los usuarios, la instalación desde paquetes es más sencilla.

Actualiza tu sistema de paquetes:

Para Ubuntu/Debian y derivados (Linux Mint, Pop!_OS):

Bash

sudo apt update

sudo apt upgrade -y


Para Fedora/CentOS/RHEL y derivados:

Bash


sudo dnf update -y

Instala los paquetes de Box Backup:

Para Ubuntu/Debian y derivados:

Bash


sudo apt install boxbackup -y

Para Fedora/CentOS/RHEL y derivados:

Bash


sudo dnf install boxbackup -y

La instalación creará un usuario y grupo boxbackup que se utilizarán para ejecutar los demonios.

Paso 2: Configuración del Servidor Box Backup (bbstored)

Todos los comandos relacionados con el servidor se ejecutarán en la máquina del servidor de respaldo.

A. Preparar Directorios y Generar Claves del Servidor

Crear el directorio de almacenamiento de datos

Bash


sudo mkdir -p /var/lib/boxbackup/store

sudo chown boxbackup:boxbackup /var/lib/boxbackup/store

sudo chmod 700 /var/lib/boxbackup/store


Generar las claves criptográficas del servidor

Este paso crea un par de claves RSA para el servidor y el archivo bbkeys.conf que las referencia.

Bash

sudo -u boxbackup bbstored --generate-keys --config-file=/etc/boxbackup/bbstored.conf

Te pedirá que introduzcas una contraseña de encriptación para la clave privada del servidor. ¡Guarda esta contraseña de forma segura! La necesitarás cada vez que el bbstored se inicie.

Verifica que se hayan creado los archivos en /etc/boxbackup/: bbkeys.conf, bbstored.pem (clave privada encriptada), bbstored.pub (clave pública).

¡Seguridad de las Claves!: Las claves privadas (.pem) son extremadamente sensibles. Asegúrate de que sus permisos sean solo de lectura para el usuario boxbackup y nadie más. Si los permisos no son 400 o 600, corrígelos:

Bash

sudo chmod 400 /etc/boxbackup/bbstored.pem

B. Configurar bbstored.conf

Edita el archivo de configuración principal del servidor:

Bash


sudo nano /etc/boxbackup/bbstored.conf

Asegúrate de que las siguientes secciones y directivas estén configuradas correctamente:

Ini, TOML

# Ubicación del archivo de claves para el servidor

ServerKeysFile = /etc/boxbackup/bbkeys.conf
 

# Directorio donde se almacenarán los datos de respaldo. ¡CRÍTICO!

StoragePath = /var/lib/boxbackup/store
 

# Directorio donde se guardarán los certificados públicos de los clientes firmados por el servidor.

# Esto es para que bbstored sepa qué clientes están autorizados.

# Se recomienda crear este directorio:

# sudo mkdir -p /var/lib/boxbackup/clients_signed_keys

# sudo chown boxbackup:boxbackup /var/lib/boxbackup/clients_signed_keys

ClientPath = /var/lib/boxbackup/clients_signed_keys


# Archivo de log del servidor

LogFile = /var/log/boxbackup/bbstored.log

LogLevel = 2 # Nivel de detalle del log (0=errores, 5=muy detallado)


# Dirección y puerto de escucha del servidor

ListenAddress = 0.0.0.0 # Escuchar en todas las interfaces. Si prefieres una IP específica, úsala.

ListenPort = 4747


# Máximo número de clientes conectados simultáneamente. Ajusta según tus necesidades.

MaxClients = 10


# Tamaño máximo del almacenamiento (opcional, útil para evitar llenar un disco)

# MaxStoreSize = 100G # Ejemplo: 100 Gigabytes


# Configuración de retención predeterminada para los clientes si no tienen una política específica

# RetentionPeriod = 365d # Ejemplo: retener datos por 365 días


# Para cada cliente autorizado, necesitas una sección AccessClient.

# ¡Esto se añadirá DESPUÉS de que el cliente genere sus claves y las envíe al servidor para firmar!

# Por ahora, puedes dejarlo vacío o añadir una plantilla comentada.

# Por ejemplo, para un cliente llamado 'myclient':

# AccessClient {

# Name = myclient

# User = 1001 # Opcional: mapea al UID interno de Box Backup para ese cliente

# }

Guarda y sal del archivo.

C. Configurar el Firewall del Servidor

Abre el puerto 4747/TCP para permitir las conexiones entrantes de los clientes.

UFW (Ubuntu/Debian):

Bash


sudo ufw allow 4747/tcp comment "Box Backup Server"

sudo ufw reload


Firewalld (CentOS/RHEL/Fedora):

Bash


sudo firewall-cmd --permanent --add-port=4747/tcp

sudo firewall-cmd --reload


Paso 3: Configuración del Cliente Box Backup (bbclientd)

Todos los comandos relacionados con el cliente se ejecutarán en la máquina cliente de respaldo.

A. Preparar Directorios y Generar Claves del Cliente

Crear el directorio de caché del cliente:

Bash


sudo mkdir -p /var/lib/boxbackup/client_cache

sudo chown boxbackup:boxbackup /var/lib/boxbackup/client_cache

sudo chmod 700 /var/lib/boxbackup/client_cache


Generar las claves criptográficas del cliente:

Este paso crea un par de claves RSA para el cliente y el archivo bbkeys.conf que las referencia.

Bash

sudo -u boxbackup bbclientd --generate-keys --config-file=/etc/boxbackup/bbclientd.conf

Te pedirá una contraseña para la clave privada del cliente. ¡Guarda esta contraseña!

Verifica que se hayan creado los archivos en /etc/boxbackup/: bbkeys.conf, bbclientd.pem (clave privada encriptada), bbclientd.pub (clave pública).

¡Seguridad de las Claves!:

Bash


sudo chmod 400 /etc/boxbackup/bbclientd.pem

B. Configurar bbclientd.conf

Edita el archivo de configuración principal del cliente:

Bash

sudo nano /etc/boxbackup/bbclientd.conf

Asegúrate de que las siguientes secciones y directivas estén configuradas correctamente:

Ini, TOML

# Ubicación del archivo de claves para el cliente

ClientKeysFile = /etc/boxbackup/bbkeys.conf


# Nombre único para este cliente. ¡Debe coincidir EXACTAMENTE con el nombre

# que usarás al firmar la clave del cliente en el servidor!

ClientName = myclient.example.com # EJEMPLO: "myclient" o "servidorweb1"



# Directorio de caché local del cliente. Aquí se almacenan los bloques de datos

# antes de ser enviados y las listas de bloques para la de-duplicación.

BackupCachePath = /var/lib/boxbackup/client_cache



# Dirección y puerto del servidor Box Backup

ServerAddress = <IP_DEL_SERVIDOR_BBSTORED> # Ejemplo: 192.168.1.100

ServerPort = 4747

# Archivo de log del cliente

LogFile = /var/log/boxbackup/bbclientd.log

LogLevel = 2 # Nivel de detalle del log



# Intervalo de tiempo en segundos para comprobar cambios y enviar datos.

# SnapshotInterval = 60s # Cada 60 segundos

SnapshotInterval = 5m # Cada 5 minutos (más común)



# Configuración del contenido a respaldar

# Puedes tener múltiples secciones BackupContent para diferentes conjuntos de datos.

BackupContent {

Name = HomeAndConfig # Nombre descriptivo para este conjunto

# Directorio(s) a respaldar

Dir = /home/tu_usuario # Respalda el directorio personal

Dir = /etc # Respalda la configuración del sistema



# Opciones para FileVersioning y DeletedFileRetention:

# 'Versions': Número de versiones antiguas a mantener. (0=solo la última, -1=todas)

# 'Retention': Tiempo para retener archivos eliminados antes de purgar los bloques.

# Estas se aplican a este conjunto de respaldo.

FileVersioning = 10 # Mantener las últimas 10 versiones de un archivo modificado

DeletedFileRetention = 30d # Mantener archivos eliminados por 30 días



# Listas de inclusión/exclusión (patrones tipo rsync)

Include = ** # Incluye todo por defecto, luego excluye lo no deseado

Exclude = *.tmp # Excluye archivos temporales

Exclude = *.bak # Excluye archivos .bak

Exclude = /var/tmp/** # Directorios temporales del sistema

Exclude = /tmp/**

Exclude = /proc/** # Directorios virtuales del kernel

Exclude = /sys/**

Exclude = /dev/**

Exclude = /mnt/** # Generalmente no quieres respaldar puntos de montaje

Exclude = /media/**

Exclude = /lost+found/**

Exclude = **/.cache/** # Cachés de usuario

Exclude = **/Trash/** # Papeleras de reciclaje



# Excluir sistemas de archivos específicos (montajes temporales, etc.)

# Puedes encontrar los tipos de sistemas de archivos con 'mount' o '/etc/fstab'

ExcludeFilesystem = tmpfs

ExcludeFilesystem = devtmpfs

ExcludeFilesystem = devpts

ExcludeFilesystem = cgroup

ExcludeFilesystem = fuse.gvfsd-fuse

ExcludeFilesystem = nfs # Si hay montajes NFS que no quieres respaldar

ExcludeFilesystem = cifs # Si hay montajes SMB/CIFS que no quieres respaldar



# Si quieres que siga o no los enlaces simbólicos

FollowSymlinks = no



# Opcional: Forzar un propietario y grupo para los archivos en el servidor Box Backup

# Owner = 0 # root

# Group = 0 # root

}

Guarda y sal del archivo.

C. Configurar el Firewall del Cliente

Los clientes de Box Backup inician la conexión al servidor. Generalmente, no necesitas abrir puertos entrantes en el cliente, pero el cliente debe tener permitido realizar conexiones salientes al puerto 4747/TCP del servidor.

Paso 4: Intercambio y Firma de Claves entre Servidor y Cliente

Este es el paso más crítico para la autenticación y seguridad de Box Backup.

Copiar la clave pública del cliente al servidor

Desde la máquina cliente, copia el archivo bbclientd.pub a una ubicación temporal en el servidor (ej., /tmp).

Bash

scp /etc/boxbackup/bbclientd.pub tu_usuario@(IP_DEL_SERVIDOR>:/tmp/

Firmar la clave pública del cliente en el servidor:

Desde la máquina servidor, usa el comando bbstored --sign-client-key para firmar la clave pública del cliente con la clave privada del servidor. Esto autoriza al cliente a conectarse.

Bash

sudo -u boxbackup bbstored --sign-client-key \

--config-file=/etc/boxbackup/bbstored.conf \

--client-key-file=/tmp/bbclientd.pub \

--client-name=myclient.example.com # ¡Debe coincidir con ClientName en bbclientd.conf!


Este comando te pedirá la contraseña de la clave privada del servidor que definiste en el Paso 2.

Creará dos archivos en el ClientPath del servidor (/var/lib/boxbackup/clients_signed_keys):

myclient.example.com.pub: La clave pública firmada del cliente.

myclient.example.com.conf:
Un archivo de configuración que el servidor usará para este cliente (contiene la directiva AccessClient).

Mover el archivo de configuración del cliente en el servidor:

El archivo myclient.example.com.conf debe ser incluido por el bbstored.conf principal para que el servidor reconozca al cliente.

Puedes hacer una de dos cosas:

Añadirlo directamente a bbstored.conf: Abre bbstored.conf y añade al final:

Ini, TOML

# Incluir configuraciones de clientes firmados

@include /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf

Moverlo al directorio /etc/boxbackup/bbstored.d/: Si tu instalación crea un directorio bbstored.d para includes automáticos, simplemente mueve el archivo allí.

Bash

sudo mv /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf /etc/boxbackup/bbstored.d/

¡Asegúrate de que bbstored.conf tenga una directiva @include para el directorio donde resides estos archivos de cliente, o para cada archivo de cliente individualmente!

Copiar la clave pública firmada de vuelta al cliente:

Desde la máquina servidor, copia el archivo myclient.example.com.pub (la clave firmada) de vuelta a la máquina cliente, sobrescribiendo la clave pública original del cliente.

Bash

scp /var/lib/boxbackup/clients_signed_keys/myclient.example.com.pub tu_usuario@<IP_DEL_CLIENTE>:/etc/boxbackup/bbclientd.pub

¡Muy Importante!: Es bbclientd.pub en el cliente. La clave pública del cliente (/etc/boxbackup/bbclientd.pub) DEBE ser la clave firmada por el servidor para que la autenticación funcione.

Paso 5: Iniciar Servicios y Primera Copia de Seguridad

A. Iniciar Servicios

En el Servidor Box Backup:


Bash

sudo systemctl enable bbstored

sudo systemctl start bbstored


¡Atención! Te pedirá la contraseña de la clave privada del servidor. Introduce la que definiste en el Paso 2.

Verifica el estado: sudo systemctl status bbstored

Consulta el log: sudo tail -f /var/log/boxbackup/bbstored.log

En el Cliente Box Backup:

Bash


sudo systemctl enable bbclientd

sudo systemctl start bbclientd


¡Atención! Te pedirá la contraseña de la clave privada del cliente. Introduce la que definiste en el Paso 3.

Verifica el estado: sudo systemctl status bbclientd

Consulta el log: sudo tail -f /var/log/boxbackup/bbclientd.log

B. Verificar la Conexión y Primera Sincronización

En el log del cliente (bbclientd.log): Deberías ver mensajes como "Connected to server", "Performing initial scan", "Sending new blocks".

En el log del servidor (bbstored.log): Deberías ver "Client connected", "Receiving data from client".

Para forzar un respaldo (si no quieres esperar el SnapshotInterval):

En el cliente, ejecuta como el usuario boxbackup (el daemon ya está corriendo con este usuario):

Bash


sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --force-backup

Paso 6: Realizar una Restauración

La restauración se realiza desde la máquina cliente utilizando el comando bbclient.

Listar Archivos Disponibles:

Puedes listar los archivos y sus versiones disponibles para restaurar:

Bash

sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --list-files "/path/to/original/file_or_directory"

Esto mostrará las versiones disponibles con sus marcas de tiempo.

Restaurar un Archivo o Directorio:

Bash


sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \

--restore "/path/to/original/file_or_directory" \

"/path/to/restore/destination"


Ejemplo: Restaurar /home/usuario/documento.txt a /tmp/restored_doc.txt

Bash

sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \

--restore "/home/usuario/documento.txt" "/tmp/restored_doc.txt"


Restaurar una versión específica:

Bash


sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \

--restore "/home/usuario/documento.txt" "/tmp/restored_doc_old.txt" \

--version "2024-06-27 10:00:00" # Usa la marca de tiempo de 'list-files'


Restaurar un archivo eliminado:

Bash


sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \

--restore "/home/usuario/deleted_file.txt" "/tmp/restored_deleted_file.txt" \

--deleted # Indica que es un archivo que fue eliminado


¡Verifica la Restauración! Siempre prueba la restauración de algunos archivos al azar para asegurarte de que tu sistema de respaldo funciona correctamente.

Paso 7: Monitoreo y Solución de Problemas Detallada

Los problemas en Box Backup suelen estar relacionados con la configuración, las claves/permisos y la red.

Logs, Logs, Logs:

Servidor: sudo tail -f /var/log/boxbackup/bbstored.log

Cliente: sudo tail -f /var/log/boxbackup/bbclientd.log

Busca ERROR, WARNING, authentication failed, connection refused, permission denied, disk full.

Verificación de Estado de los Daemons:

sudo systemctl status bbstored (servidor)

sudo systemctl status bbclientd (cliente)


Si no están activos, sudo journalctl -u <daemon_name> -f para ver el log de arranque.

Contraseñas de Claves:


Si el daemon no arranca, una causa común es una contraseña incorrecta para la clave privada (servidor o cliente). Asegúrate de haberla introducido correctamente al iniciar el servicio.

Box Backup no almacena las contraseñas de las claves en texto plano; las pide al iniciar el daemon. Si el sistema se reinicia, tendrás que introducirlas de nuevo a menos que uses un mecanismo de desbloqueo automático (lo cual puede comprometer la seguridad si no se gestiona con cuidado).

Permisos de Archivos y Directorios:

Claves privadas: Los archivos .pem (claves privadas) deben tener permisos 400 o 600 (solo lectura para el propietario). Si son demasiado permisivos, el daemon se negará a cargarlos.

Bash


sudo chmod 400 /etc/boxbackup/bbstored.pem

sudo chmod 400 /etc/boxbackup/bbclientd.pem


Directorios de almacenamiento/caché: Asegúrate de que los directorios StoragePath (servidor) y BackupCachePath (cliente) sean propiedad del usuario boxbackup y tengan permisos de escritura.

Bash

sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/store

sudo chmod 700 /var/lib/boxbackup/store # O 750

sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/client_cache

sudo chmod 700 /var/lib/boxbackup/client_cache


Archivos de origen: El usuario boxbackup en el cliente necesita permisos de lectura para los archivos y directorios definidos en BackupContent. Si se deniegan permisos, esos archivos se omitirán del respaldo.

Problemas de Red y Firewall:

telnet <IP_SERVIDOR> 4747 (desde el cliente): Prueba si el cliente puede llegar al puerto del servidor. Si falla, es un problema de firewall o de red.

Verifica las reglas del firewall en ambas máquinas.

Asegúrate de que la ServerAddress en bbclientd.conf sea correcta.

Sincronización de Tiempo (NTP):

Las grandes diferencias de tiempo entre el cliente y el servidor pueden causar fallos de autenticación o hacer que los datos de respaldo sean rechazados.

Instala y configura NTP o systemd-timesyncd en ambas máquinas:

Bash


sudo apt install ntp # o systemd-timesyncd

sudo systemctl status ntp # o systemctl status systemd-timesyncd

timedatectl


Errores de bbclientd.conf / bbstored.conf:

ClientName y firma de clave: El ClientName en bbclientd.conf debe coincidir exactamente con el --client-name usado al firmar la clave en el servidor. Si no coinciden, la autenticación fallará.

Rutas incorrectas:
Doble verificación de todas las rutas en los archivos de configuración (ClientKeysFile, ServerKeysFile, StoragePath, BackupCachePath, LogFile).

@include faltantes: Si el servidor no está reconociendo la configuración de un cliente, asegúrate de que el archivo .conf del cliente firmado esté incluido en bbstored.conf (ya sea directamente o a través de un directorio de inclusión).

Espacio en Disco:

df -h en el servidor (para StoragePath) y en el cliente (para BackupCachePath). Si cualquiera está lleno, el respaldo fallará.

SELinux / AppArmor:

Estos módulos de seguridad pueden bloquear operaciones de Box Backup sin dar errores claros en los logs de Box Backup.

Diagnóstico:

SELinux: sudo auditctl -a never,dontaudit -S setxattr -S fsetxattr -S lsetxattr (o revisar /var/log/audit/audit.log y buscar denegaciones).

AppArmor: sudo grep "DENIED" /var/log/syslog | grep -i boxbackup.

Solución temporal:

SELinux: sudo setenforce 0 (modo permisivo). Prueba el respaldo. Si funciona, la política es el problema. Luego, sudo setenforce 1 y crea/carga una política SELinux para Box Backup.

AppArmor: sudo systemctl stop apparmor. Si funciona, edita los perfiles de AppArmor para Box Backup.

Aumentar la Verbosidad de los Daemons (para depuración intensiva):

Puedes añadir una opción -v o -vv al comando de inicio de bbstored o bbclientd si los ejecutas manualmente, o ajustar LogLevel en los archivos de configuración a un valor más alto (ej., LogLevel = 5). ¡Recuerda bajarlo después de depurar para evitar logs excesivamente grandes!

Box Backup es una solución potente y segura, pero su configuración inicial requiere atención al detalle, especialmente en la gestión de claves y permisos. Una vez configurado correctamente, es muy confiable. ¡No olvides probar tus restauraciones regularmente!

Ads by CJ - Linux Foundation

Share This