boxbackup
boxbackup es un mecanismo de copias de seguridad en red, automático y cifrado, con un buen número de características interestantes.
Pros
- Emplea arquitectura cliente-servidor.
- El cliente puede funcionar contínuamente en segundo plano, sin intervención del usuario.
- Los datos se guardan en un sistema de archivos en el servidor, completamente cifrados.
- Las copias son incrementales, a semejanza de rsync.
- Se conservan versiones anteriores de los archivos.
- Uso opcional de una versión RAID en modo usuario.
- Conexión seguras mediante TLS y cifrado con AES.
Contras
- Configuración inicial delicada y algo pesada dado que todo va cifrado.
- Dependencia extrema de un juego de claves; si se pierden, los datos también.
- La consulta a los datos se realiza mediante un programa, no con un acceso directo al sistema de archivos, incluso desde el servidor donde se guardan.
Instalación y puesta en marcha
En Debian se dispone de dos paquetes: el servidor boxbackup-server y el cliente boxbackup-cliente.
Configurando el servidor
Instalamos la versión servidor en una máquina funcionado bajo Debian Etch de la forma habitual en Debian, y durante dicha instalación tenemos la opción de crear una configuración contestando a unas preguntas.
La primera cuestión es dónde vamos a almacenar los datos, si en un mecanismo
RAID ó en un único directorio, así que si elegimos la primera debemos
indicar el nombre de tres directorios, en tres particiones diferentes del
disco, ó una única ruta que no es necesario que exista de antemano. En nuestro
caso seleccionamos /srv/boxbackup
.
Luego indicamos el tamaño del bloque empleado para almacenar las copias, incluso si no hemos seleccionado RAID. 4096 es el valor predeterminado.
Y por último contestamos sí a la pregunta sobre crear o no una autoridad certificadora, puesto que queremos tener mayor control sobre quién puede conectar ó no.
El programa de instalación crea entonces un usuario y el directorio indicado, junto con una clave y un certificado inicial para el servidor.
Reconfigurando
El paquete Debian incluye el programa bbstored-config
con el que es
posible reconfigurar el servidor; en realidad es lo mismo que emplea el
paquete pero sin las preguntas.
Para usarlo debemos indicarle el directorio de trabajo, el nombre del servidor y el usuario bajo el que van a estar los archivos.
# bbstored-config /etc/boxbackup taquiones.net bbstored
Writing configuration file /etc/boxbackup/bbstored.conf
===================================================================
Checking permissions on /srv/boxbackup/backup
Checking permissions on /srv/boxbackup/backup
Checking permissions on /srv/boxbackup/backup
Setup bbstored config utility.
Configuration:
Writing configuration file: /etc/boxbackup/bbstored.conf
Writing empty accounts file: /etc/boxbackup/bbstored/accounts.txt
Server hostname: taquiones.net
RaidFile config: /etc/boxbackup/raidfile.conf
Creating blank accounts file
Generating private key...
...
Writing configuration file /etc/boxbackup/bbstored.conf
===================================================================
bbstored basic configuration complete.
...
#
y proporciona un resumen de los pasos a seguir desde aquí, y que consisten en:
- Firmar la petición del certificado recién creado para el servidor.
- Instalar el nuevo certificado
- Ajustar el archivo de configuración
/etc/boxbackup/bbstored.conf
. - Crear las cuentas
- Poner en marcha el servicio
Cuentas de acceso
Creando la infraestructura
Dado que el acceso al servidor se lleva a cabo mediante conexiones seguras, necesitamos crear una infraestructura para permitirlo.
En la documentación oficial sugieren que este proceso, la creación y el mantenimiento de una autoridad de certificación (CA), se lleve a cabo en una máquina aislada y se transfieran los certificados tanto al servidor como a los clientes por otros medios, incluyendo copias en soporte físico. Es una buena medida desde el punto de vista de la seguridad, pero yo no voy a describirla así en estas notas.
Comenzamos creando la autoridad certificadora propia con la siguiente orden:
# cd /etc/boxbackup
# bbstored-certs ca init
Generating RSA private key, 2048 bit long modulus
.+++
......................+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
...
Signature ok
subject=/CN=Backup system server root
Getting Private key
#
la cual crea el directorio /etc/boxbackup/ca
e inicializa las
correspondientes claves.
Después tenemos que firmar la clave del servidor y para ello empleamos el
programa bbstored-certs
de nuevo, proporcionándole el directorio donde se
reside la autoridad de certificación (ca) y el archivo con la petición
generado en la instalación:
# cd /etc/boxbackup
# bbstored-certs ca sign-server bbstored/taquiones.net-csr.pem
This certificate is for backup server
taquiones.net
Signing the wrong certificate compromises the security of your backup system.
Would you like to sign this certificate? (type 'yes' to confirm)
yes
Signature ok
subject=/CN=taquiones.net
Getting CA Private Key
Certificate signed.
Install the files
ca/servers/taquiones.net-cert.pem
ca/roots/clientCA.pem
on the server.
#
Tal y como nos indica, copiamos los archivos en el directorio de trabajo de
boxbackup /etc/boxbackup/bbstored
:
taquiones.net-cert.pem
clientCA.pem
Creando cuentas cliente
Para crear una cuenta cliente necesitamos proporcionar varios datos:
- Número de cuenta que identifica al cliente; un número mayor que cero en 31 bits, y que puede expresarse en hexadecimal. Puede ir desde 1 a 75AB23C.
- El volumen RAID a emplear, que puede ser cero si no se ha añadido ningún volumen nuevo a la configuración.
- El límite blando es la cifra de almacenamiento máximo a la que el cliente se someterá voluntariamente, y que no intentará sobrepasar.
- El límite duro es aquél que el cliente no podrá sobrepasar y que provocará un error fatal en el proceso de copia.
La orden a emplear es la siguiente:
# bbstoreaccounts create 1 0 2048M 2252M
NOTICE: Account 0x00000001 created.
#
y le indicamos que cree el cliente número 1, empleando el volumen 0 de almacenamiento y con 2Gb de límite blando y un 10% más de límite duro.
Ahora falta el proceso de configuración en el cliente:
- Se configura el cliente y se obtiene una petición de certificación, por
ejemplo
/etc/boxbackup/bbackupd/1-csr.pem
. - Se envía al servidor.
En el servidor se firma el certificado:
# bbstored-certs ca sign 1-csr.pem ... Send the files
to the client.ca/clients/1-cert.pem ca/roots/serverCA.pem
Se envían al cliente los dos archivos, el certificado de cliente
1-cert.pem
y el certificado raíz del servidorserverCA.pem
.