Voy a exponer como se debe configurar bacula para que utilice conexiones TLS entre sus demonios, para que los datos no viajen sin cifrar por internet, ya que esto supondría una amenaza de seguridad en caso de que alguien estuviese espiando nuestras redes usando algún tipo de sniffer.
Configurar bacula con TLS es un proceso tedioso, ya que hay que cifrar todas las conexiones posibles, y crear certificados de seguridad para todas las máquinas.
Se establecen conexiones entre estos elementos de bacula:
Todas estas conexiones deben ser cifradas mediante TLS.
Para generar un fichero con las clave RSA utilizamos openssl:
openssl genrsa -des3 -out dominio.net.key 1024
Se os pedirá una contraseña para cifrar este archivo, usad una que podais recordad dentro de un momento, no es difícil.
El siguiente paso es crear una solicitud de certificado X.509 Certificate Signing Request (CSR) Management. Este certificado incluye información personal así como nuestra clave pública, un periodo de validez, una url de revocación del certificado y la firma digital de la entidad certificadora. Generalmente estas entidades suelen cobrar por estos servicios, siendo VeriSign la más utilizada. No obstante, nosotros vamos a utilizar una entidad certificadora gratuita llamada CAcert.org.
¿Sabíais que Mark Shuttleworth fundador de Canonical, la empresa que está detrás de Ubuntu debe su fortuna a la venta de su empresa Thawte por 575 millones de dólares a VeriSign en 1999?
Curiosidades aparte, generemos la petición de certificado con el siguiente comando:
Importante: Debemos rellenar correctamente los campos, sobre todo Common Name que debe contener el fqdn de nuestro servidor que será en este caso dominio.net. El campo "A challenge password []" lo dejamos en blanco.
openssl req -new -key dominio.net.key -out dominio.net.csr
Ahora creamos un nuevo certificado de servidor en cacert.org, copiamos el contenido del archivo dominio.net.csr en el cuadro de texto, y nos devuelve un texto que debe ser copiado a un archivo llamado por ejemplo: dominio.net.cert.
También debemos obtener el siguiente archivo: http://www.cacert.org/certs/root.crt y copiarlo en la misma carpeta donde están los otros bajo el nombre cacert.pem.
Vamos a eliminar que cifra el archivo con la clave pública ya que bacula no lo soporta.
openssl rsa -in dominio.net.key -out dominio.net.nopass.key
mv dominio.net.nopass.key dominio.net.key
Ahora vamos a la carpeta /etc/bacula, y creamos un directorio para meter estos certificados, les cambiamos el propietario y ajustamos los permisos.
mkdir /etc/bacula/certificates
cd /etc/bacula/certificates
- Copiamos aquí todos los archivos mencionados con anterioridad -
chown bacula:bacula *
chmod 640 *
Debemos crear un certificado para cada máquina en la que tengamos a un demonio de bacula ejecutandose.
Lo primero que haremos es configurar la consola y el director para que mantengan una comunicación mediante TLS.
/etc/bacula/bconsole.conf
Director {
Name = director1-dir
...
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/certificates/cacert.pem
TLS Certificate = /etc/bacula/certificates/dominio.net.cert
TLS Key = /etc/bacula/certificates/dominio.net.key
/etc/bacula/bacula.dir.conf
Director {
...
TLS Verify Peer = yes
TLS Allowed CN = "dominio.net"
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/certificates/cacert.pem
TLS Certificate = /etc/bacula/certificates/dominio.net.cert
TLS Key = /etc/bacula/certificates/dominio.net.key
}
Ejecutamos bconsole y comprobamos que todo funciona correctamente.
Debemos introducir el siguiente código.
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/certificates/cacert.pem
TLS Certificate = /etc/bacula/certificates/dominio.net.cert
TLS Key = /etc/bacula/certificates/dominio.net.key
}
En la configuración de los demonios mencionados anteriormente para que todos se comuniquen correctamente.
Eso es todo de momento sobre bacula,
Copias de seguridad - Backup local y remoto