Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Instalación y Configuración de BareOS en GNU/Linux

Instalación y Configuración de BareOS en GNU/Linux

Tabla de contenidos

Introducción

BareOS (Backup Archiving Recovery Open Sourced) es una solución de backup en red de código abierto, multiplataforma y de nivel empresarial. Nació como fork de Bacula cuando la comunidad detectó que las mejoras y parches aportados solo se incorporaban a la versión comercial de Bacula.

BareOS se basa en una arquitectura cliente-servidor con los siguientes componentes principales:

  • Director (bareos-dir): orquesta todas las operaciones de backup, restauración y verificación. Es el cerebro del sistema.
  • Storage Daemon (bareos-sd): gestiona los dispositivos de almacenamiento donde se escriben los datos de backup (disco, cinta, cloud).
  • File Daemon (bareos-fd): el agente cliente que se instala en cada máquina a respaldar. Envía los datos al Storage Daemon.
  • Catalog (base de datos): almacena el índice de todos los archivos respaldados, los volúmenes y los jobs. Soporta MySQL/MariaDB y PostgreSQL.
  • Console (bconsole): interfaz de línea de comandos para interactuar con el Director.
  • WebUI: interfaz web para gestión y monitorización.

En esta guía cubriremos la instalación completa del servidor BareOS con MariaDB, la instalación del cliente en GNU/Linux (Debian/Ubuntu y RHEL/CentOS) y en Windows, la configuración de la WebUI, y la ejecución de nuestro primer job de backup.

Requisitos previos

Para seguir esta guía necesitamos:

  • Un servidor GNU/Linux (Debian 12 o RHEL 9 / Rocky Linux 9) para el Director, Storage Daemon y Catalog.
  • Uno o más clientes GNU/Linux o Windows donde instalar el File Daemon.
  • Acceso root o sudo en todos los equipos.
  • Conectividad de red entre el servidor y los clientes.

Los puertos que deben estar abiertos en el firewall:

text
Puerto    Servicio          Dirección
------    ----------------  ---------------------------------
9101/tcp  Director          Clientes → Servidor
9102/tcp  File Daemon       Servidor → Clientes
9103/tcp  Storage Daemon    Clientes → Servidor
80/443    WebUI (Apache)    Navegador → Servidor

Instalación del servidor BareOS

Añadir los repositorios oficiales

BareOS mantiene repositorios oficiales para las principales distribuciones. Es importante utilizar siempre los repositorios oficiales para recibir actualizaciones de seguridad.

En Debian/Ubuntu:

bash
# Importar la clave GPG del repositorio
wget -qO- https://download.bareos.org/current/Debian_12/Release.key | \
  gpg --dearmor -o /usr/share/keyrings/bareos-archive-keyring.gpg

# Añadir el repositorio
echo "deb [signed-by=/usr/share/keyrings/bareos-archive-keyring.gpg] \
  https://download.bareos.org/current/Debian_12/ /" \
  > /etc/apt/sources.list.d/bareos.list

# Actualizar índices
apt update

En RHEL/Rocky/CentOS:

bash
# Añadir el repositorio
wget -O /etc/yum.repos.d/bareos.repo \
  https://download.bareos.org/current/EL_9/bareos.repo

# Verificar que el repositorio se ha añadido correctamente
dnf repolist | grep bareos

Instalar los paquetes del servidor

En el servidor instalamos todos los componentes de BareOS junto con la base de datos y la WebUI.

En Debian/Ubuntu:

bash
apt install -y bareos bareos-database-mysql mariadb-server \
  bareos-webui apache2 libapache2-mod-php php php-cli php-common

En RHEL/Rocky/CentOS:

bash
dnf install -y bareos bareos-database-mysql mariadb-server \
  bareos-webui httpd php php-cli php-common

Configuración de la base de datos

BareOS necesita una base de datos para almacenar su catálogo. Vamos a configurar MariaDB y crear las tablas necesarias.

Primero, iniciamos y securizamos MariaDB:

bash
systemctl enable --now mariadb
mysql_secure_installation

En sistemas Debian, creamos el fichero de credenciales para que los scripts de BareOS puedan conectarse a MariaDB:

ini
# /root/.my.cnf
[client]
host=localhost
user=root
password=TU_PASSWORD_MYSQL

Ejecutamos los scripts de BareOS para crear la base de datos, las tablas y asignar los privilegios:

bash
# Crear la base de datos
/usr/lib/bareos/scripts/create_bareos_database

# Crear las tablas del catálogo
/usr/lib/bareos/scripts/make_bareos_tables

# Asignar privilegios al usuario bareos
/usr/lib/bareos/scripts/grant_bareos_privileges

Inicio de servicios del servidor

Habilitamos e iniciamos los tres demonios principales de BareOS y el servidor web:

bash
# Habilitar e iniciar los servicios de BareOS
systemctl enable --now bareos-dir
systemctl enable --now bareos-sd
systemctl enable --now bareos-fd

# Habilitar e iniciar Apache (Debian) o httpd (RHEL)
systemctl enable --now apache2   # Debian/Ubuntu
# systemctl enable --now httpd   # RHEL/CentOS

Verificamos que todo funciona correctamente conectándonos con bconsole:

bash
bconsole

Connecting to Director localhost:9101
1000 OK: bareos-dir Version: 23.0.4 (01 January 2024)
Enter a period to cancel a command.
*status dir
...

Si la conexión es exitosa, el servidor está correctamente configurado.

Configuración de la WebUI

BareOS WebUI proporciona una interfaz gráfica accesible desde el navegador para gestionar y monitorizar los backups. Necesitamos crear un usuario de consola para la WebUI.

Editamos o creamos el fichero de configuración de la consola de administración:

bash
cat /etc/bareos/bareos-dir.d/console/admin.conf

Console {
  Name = admin
  Password = "tu_password_segura"
  Profile = "webui-admin"
}

Reiniciamos el Director para aplicar los cambios:

bash
systemctl restart bareos-dir

Accedemos a la WebUI desde el navegador en http://IP_SERVIDOR/bareos-webui e introducimos las credenciales configuradas.

Instalación del cliente en GNU/Linux

El File Daemon (bareos-fd) es el agente que se instala en cada máquina que queremos respaldar. Su instalación es sencilla y ligera.

Añadir repositorios en el cliente

En Debian/Ubuntu:

bash
# Importar clave GPG
wget -qO- https://download.bareos.org/current/Debian_12/Release.key | \
  gpg --dearmor -o /usr/share/keyrings/bareos-archive-keyring.gpg

# Añadir repositorio
echo "deb [signed-by=/usr/share/keyrings/bareos-archive-keyring.gpg] \
  https://download.bareos.org/current/Debian_12/ /" \
  > /etc/apt/sources.list.d/bareos.list

apt update

En RHEL/Rocky/CentOS:

bash
wget -O /etc/yum.repos.d/bareos.repo \
  https://download.bareos.org/current/EL_9/bareos.repo

Instalar e iniciar el File Daemon

En Debian/Ubuntu:

bash
apt install -y bareos-client
systemctl enable --now bareos-fd

En RHEL/Rocky/CentOS:

bash
dnf install -y bareos-client
systemctl enable --now bareos-fd

Configurar el File Daemon del cliente

Editamos la configuración del File Daemon en el cliente. El parámetro clave es el Name que debe coincidir con la definición del cliente en el Director:

bash
cat /etc/bareos/bareos-fd.d/client/myself.conf

Client {
  Name = cliente-linux-fd
  Maximum Concurrent Jobs = 20
}

cat /etc/bareos/bareos-fd.d/director/bareos-dir.conf

Director {
  Name = bareos-dir
  Password = "PASSWORD_COMPARTIDA_CON_DIRECTOR"
}

Reiniciamos el File Daemon para aplicar los cambios:

bash
systemctl restart bareos-fd

Instalación del cliente en Windows

BareOS también soporta clientes Windows, lo que permite respaldar servidores y estaciones de trabajo Windows desde el mismo servidor BareOS.

Descarga e instalación

Descargamos el instalador del File Daemon para Windows desde la página oficial de BareOS:

text
https://download.bareos.org/current/windows/

El instalador es un ejecutable .exe estándar. Durante la instalación se nos solicitarán los siguientes datos:

  • Client Name: el nombre del File Daemon (por ejemplo, cliente-windows-fd).
  • Director Name: el nombre de nuestro Director (por ejemplo, bareos-dir).
  • Password: la contraseña que compartirá con el Director para autenticarse.
  • Director Address: la IP o hostname del servidor BareOS.

Alternativamente, podemos instalar de forma silenciosa desde la línea de comandos de PowerShell:

bash
.\bareos-fd-installer.exe /S /CLIENTNAME=cliente-windows-fd ^
  /DIRECTORNAME=bareos-dir /CLIENTPASSWORD=PASSWORD_SEGURA ^
  /DIRECTORADDRESS=192.168.1.100

Configuración del cliente Windows

Los ficheros de configuración se encuentran en C:\ProgramData\Bareos\. La estructura es similar a la de Linux:

text
C:\ProgramData\Bareos\
├── bareos-fd.d\
│   ├── client\
│   │   └── myself.conf
│   └── director\
│       └── bareos-dir.conf
└── ...

Verificamos que el servicio está ejecutándose desde PowerShell:

bash
Get-Service bareos-fd

Status   Name               DisplayName
------   ----               -----------
Running  bareos-fd          Bareos File Daemon

Registrar los clientes en el Director

Cada cliente que queramos respaldar debe estar registrado en el Director. Creamos un fichero de configuración por cada cliente en el servidor.

Para el cliente Linux:

bash
cat /etc/bareos/bareos-dir.d/client/cliente-linux-fd.conf

Client {
  Name = cliente-linux-fd
  Address = 192.168.1.50
  Password = "PASSWORD_COMPARTIDA_CON_DIRECTOR"
  Catalog = MyCatalog
}

Para el cliente Windows:

bash
cat /etc/bareos/bareos-dir.d/client/cliente-windows-fd.conf

Client {
  Name = cliente-windows-fd
  Address = 192.168.1.60
  Password = "PASSWORD_SEGURA"
  Catalog = MyCatalog
}

Recargamos la configuración del Director:

bash
systemctl reload bareos-dir

Verificamos la conexión con los clientes desde bconsole:

bash
bconsole
*status client=cliente-linux-fd
*status client=cliente-windows-fd

Si la respuesta incluye la versión del File Daemon, la conexión es correcta.

Crear volúmenes y etiquetar medios

Antes de ejecutar el primer backup, necesitamos crear y etiquetar un volumen de almacenamiento. Los volúmenes son los contenedores donde BareOS escribirá los datos.

bash
bconsole
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: Full-Vol-001
Defined Pools:
     1: Scratch
     2: Incremental
     3: Full
     4: Differential
Select the Pool (1-4): 3
Connecting to Storage daemon File at bareOS:9103 ...
Sending label command for Volume "Full-Vol-001" Slot 0 ...
3000 OK label. VolBytes=204 Volume="Full-Vol-001" Device="FileStorage" (/var/lib/bareos/storage)
Catalog record for Volume "Full-Vol-001", Slot 0  successfully created.
Requesting to mount FileStorage ...
3906 File device "FileStorage" (/var/lib/bareos/storage) is always mounted.

Repetimos el proceso para crear volúmenes de los pools Incremental y Differential según nuestra estrategia de backup.

Configurar y ejecutar el primer job de backup

BareOS incluye un job por defecto llamado DefaultJob que podemos usar como plantilla. Para crear un job personalizado para nuestro cliente Linux, creamos el siguiente fichero:

bash
cat /etc/bareos/bareos-dir.d/job/backup-cliente-linux.conf

Job {
  Name = "Backup-Cliente-Linux"
  JobDefs = "DefaultJob"
  Client = "cliente-linux-fd"
  Pool = Full
  FileSet = "LinuxAll"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Priority = 10
  Write Bootstrap = "/var/lib/bareos/%c.bsr"
}

Recargamos la configuración y ejecutamos el primer backup manualmente desde bconsole:

bash
systemctl reload bareos-dir

bconsole
*run job=Backup-Cliente-Linux
Using Catalog "MyCatalog"
Run Backup job
JobName:  Backup-Cliente-Linux
Level:    Full
Client:   cliente-linux-fd
...
OK to run? (yes/mod/no): yes
Job queued. JobId=1

Podemos monitorizar el progreso del job con:

bash
*status dir
*list jobs

Restauración de archivos

La restauración es tan importante como el backup. BareOS permite restaurar archivos individuales o directorios completos de forma sencilla.

bash
bconsole
*restore client=cliente-linux-fd
...
Select item (1-12): 5
# Opción 5: Select the most recent backup for a client

# Navegamos por el árbol de archivos
cwd is: /
$ cd /etc
$ mark nginx/
1 file marked.
$ done

# Se nos muestra un resumen del job de restauración
OK to run? (yes/mod/no): yes
Job queued. JobId=2

Por defecto, los archivos se restauran en /tmp/bareos-restores/ en el cliente. Podemos cambiar la ruta de destino modificando la opción Where antes de confirmar el job.

Comandos útiles de bconsole

A continuación, un resumen de los comandos más utilizados en bconsole para la operación diaria:

bash
# Ver el estado general del Director
*status dir

# Ver el estado de un cliente específico
*status client=cliente-linux-fd

# Ver el estado del Storage Daemon
*status storage=File

# Listar todos los jobs ejecutados
*list jobs

# Listar los volúmenes disponibles
*list volumes

# Ejecutar un backup manualmente
*run job=Backup-Cliente-Linux level=Incremental

# Cancelar un job en ejecución
*cancel jobid=123

# Ver los mensajes pendientes
*messages

# Recargar la configuración sin reiniciar
*reload

Consideraciones de seguridad

Para un despliegue seguro de BareOS en producción, ten en cuenta las siguientes recomendaciones:

  • Contraseñas: cambia todas las contraseñas por defecto inmediatamente. Utiliza contraseñas fuertes y únicas para cada componente (Director, File Daemon, Storage Daemon, WebUI).
  • TLS: habilita el cifrado TLS en todas las comunicaciones entre Director, Storage Daemon y File Daemons. BareOS soporta TLS de forma nativa desde la versión 18.
  • Firewall: restringe los puertos 9101, 9102 y 9103 únicamente a las IPs de los servidores y clientes de BareOS.
  • WebUI: configura HTTPS con un certificado válido (Let's Encrypt) y restringe el acceso por IP si es posible.
  • Almacenamiento: asegura los permisos del directorio de almacenamiento (/var/lib/bareos/storage/) para que solo el usuario bareos pueda leer y escribir.
  • Backups offsite: considera configurar un segundo Storage Daemon en una ubicación remota o utilizar el plugin de BareOS para cloud (S3, Azure Blob).

:wq!