Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > sysadmin > bacula > Bacula: cuestiones sobre seguridad

Bacula: cuestiones sobre seguridad

Cortafuegos

Para conectar los diferentes programas entre sí es necesario que se abran puertos en el cortafuegos. Evidente, ¿ no ? Pero hay que tener en cuenta que hasta que las conexiones entre ellos no sean cifradas ó estén aseguradas de otra forma, además de tener abierto un programa al exterior, también es posible interceptar el intercambio de datos entre ellos, con todo lo que significa.

Si los equipos a conectar disponen de una IP fija la primera norma básica es limitar el acceso a esas direcciones en concreto; si se usa Shorewall la regla en el cliente (servidor de archivos) podría ser la siguiente:

ACCEPT  net:IP-DEL-DIRECTOR  fw     tcp     9102

mientras que en el servidor de almacenamiento tendría que ser:

ACCEPT  net:IP-SERVIDOR-ARCHIVOS  fw    tcp 9103

Los puertos que bacula usa están registrados en el IANA y son lo siguientes:

Director de copias bacula-dir 9101
Servidor de archivos bacula-fd 9102
Almacenamiento bacula-sd 9103

Las conexiones efectuadas son las siguientes:

  • La consola conecta con el director en el puerto 9101
  • El director conecta con el servidor de almacenamiento en el puerto 9103
  • El director conecta también con el servidor de archivos en el puerto 9102
  • El servidor de archivos conecta con el servidor de almacenamiento en el puerto 9103

Ya que el el funcionamiento de bacula viene a ser así:

  1. El director es el que origina la copia y se pone en contacto con el servidor de archivos correspondiente. Habla con él y le proporciona los parámetros de la operación:
    1. Selección de archivos
    2. Tipo de copia: completa ó incremental desde una fecha concreta
    3. Servidor de almacenamiento al que enviar los datos
  2. El servidor de archivos abre una conexión con el servidor de almacenamiento y procede a enviarle los datos.
  3. Al finalizar, y con la conexión aún sin cerrar con el director le envía el informe de fin de operación y cualquier otro dato de interés.

Conexiones interrumpidas

En la documentación se advierte de que las conexiones pueden verse interrumpidas por los cortafuegos y/ó enrutadores si el tiempo de inactividad de las conexiones es demasiado alto.

En este caso recomiendan tocar el parámetro Heart Beat Interval tanto en el servidor de archivos como en el de almacenamiento.

Máquinas Windows

También recuerdan que la mayor dificultad suele estar en el cortafuegos de Windows, que puede tener una política muy restrictiva de entrada. Abrir el puerto 9102 para entrada suele arreglar bastante la 9102 para entrada suele arreglar bastante la situación.

Enlaces

Conexiones seguras mediante TLS

Bacula dispone de soporte para cifrar las comunicaciones mediante TLS a partir de la versión 1.37, siendo su configuración relativamente sencilla y bien documentada.

Además de los cambios en la configuración de los diferentes servicios, necesitamos

  • Clave en formato PEM
  • Certificado en formato PEM
  • Certificado tipo CA que haya firmado el anterior.

y asumimos que están en la siguiente localización y bajo estos nombres:

  • Clave: /etc/CA/myserver-key-unsecure.pem
  • Certificado: /etc/CA/myserver-cert.pem
  • CA: /etc/CA/cacert.pem

Configurar el director

Incluímos el siguiente párrafo en el archivo /etc/bacula/bacula-dir.conf

    1 Director {
    2     ...
    3     TLS Enable                  = yes
    4     TLS Require                 = no
    5     TLS Verify Peer             = no
    6     TLS CA Certificate File     = /etc/CA/cacert.pem
    7     TLS Certificate             = /etc/CA/myserver-key-unsecure.pem
    8     TLS Key                     = /etc/CA/myserver-cert.pem
    9     ...
   10 }

Que viene a decir que las conexiones TLS están activas pero que no son obligatorias, así como que tampoco es imprescindible verificar la identidad del interlocutor. Esto es conveniente y necesario porque es posible que existan clientes antiguos sin soporte TLS y no queremos cerrarles la puerta.

Luego indicamos con qué clientes queremos conectar de esta forma incluyendo párrafos similares a esto en el mismo archivo:

    1 Client {
    2     ...
    3     TLS Enable              = yes
    4     TLS Require             = yes
    5     TLS CA Certificate File = /etc/CA/cacert.pem
    6     TLS Certificate         = /etc/CA/myserver-key-unsecure.pem
    7     TLS Key                 = /etc/CA/myserver-cert.pem
    8     ...

Servidor de archivos y almacenamiento

Con una semántica muy similar a la que aplicamos al director, pero añadiéndole como requisito que sólo él puede contactar con nosotros:

    1 Director {
    2     Name                    = myserver-dir
    3     ...
    4     TLS Enable              = yes
    5     TLS Require             = yes
    6     TLS Verify Peer         = yes
    7 
    8     TLS Allowed CN          = "bacula@myserver.com"
    9 
   10     TLS CA Certificate File = /etc/CA/cacert.pem
   11     TLS Certificate         = /etc/CA/myserver-key-unsecure.pem
   12     TLS Key                 = /etc/CA/myserver-cert.pem
   13     ...
   14 }

Idéntica configuración se debe emplear en el servidor de almacenamiento. La claúsula TLS Allowed CN permite inspeccionar el contenido de dicho campo en el certificado para permitir el acceso, mientras que TLS Verify Peer fuerza al servidor precisamente a efectuar dicha comprobación.

Enlaces