Bacula TLS (Transport Layer Security) é um modo de criptografia nativo para prover transporte seguro das informações, similar ao stunnel ou ssh. Nesta opção, os dados gravados no Storage Daemon não são criptgrafados mas, sim, a comunicação.
Recursos:
* Negociação Client/Server TLS
* Conexões TLSv1 com validação via certificado para Servidor e Cliente
A configuração incial do bacula deverá conter as opções de uso do OpenSSL, se indicado pelo ./configure, atrav[es da opção: –with-openssl
TLS Configuration Directives
Configurações adicionais foram adicionadas a todos os daemons (Director, File daemon, and Storage daemon) como nas consoles de administração. São elas?
TLS Enable =
Permite o suporte a TLS (yes/no)TLS Require =
Requer que o Bacula utilize sempre conexões TLS.TLS Certificate =
Caminho completo do arquivo do certificado TLS PEM. Pode ser utilizado tanto o certificado de um cliente quanto de um servidor. PEM se refere a como os certificados são cifrados.TLS Key =
Caminho completo da chave prifada de um PEM TLS cifrado.TLS Verify Peer =
Verifica a configuração de um certificado dos pares.TLS Allowed CN =
Atributo “Common name” dos certificados dos pares válidos.TLS CA Certificate File =
Caminho para um certificado CA PEM TLS. Múltiplos certificados sào permitidos neste arquivo. Aa opção CA Certificate File ou a TLS CA Certificate Dir são necessárias no contexto do servidor se o TLS Verify Peer (acima) tiver sido especificada. No contexto do cliente é sempre necessário.TLS CA Certificate Dir =
Parecido com o anterior.TLS DH File =
Caminho para o arquivo de parâmetros PEM Diffie-Hellman. Se especificado, será utilizada para o chaveamento, adicionando um maior n[ivel de seguran;a, pos a chave utilizada para criptografia/decriptografia serão computadas em ambos, thus is never passed over the network if Diffie-Hellman key exchange is used. Essa opção só é válida no bacula-dir.conf.
Configurar o OpenSSL:
Altere as diretivas antes de gerar os certificados:
vi /etc/ssl/openssl.cnf
*No caso do CentOS: /etc/pki/tls/openssl.cnf
Descomentar a linha:
nsCertType = server
Criar um certificado auto-assinado
Você pode criar um certificado auto-assinado para o uso do Bacula TLS, mas que não permitirá a validação do certificado. O arquivo .pem conterá ambos o certificado e a chave válida por 10 anos, pode ser feito através do seguinte comando:
openssl req -new -x509 -nodes -out bacula.pem -keyout bacula.pem -days 3650
Importante! Durante a criação do certificados insira no campo Complete Name o FQDN ou hostname de sua máquina (endereçamento de rede). Este exato nome será colocado na opção TLS Allowed CN dos daemons do Bacula para autorização do certificado. Este mesmo endereço deverá ser utilizado para conexão dos daemons do Bacula.
Podem ser utilizados, ainda, um certificado de uma autoridade certificadora (CA ou Certificate Authority signed certificate). Você pode utilizar o programa gráfico TinyCA, permitindo que você mesmo abra uma autoridade certificadora —> http://tinyca.sm-zone.net/.
Configurar o Bacula para uso de TLS:
O exemplo abaixo mostra a conexão entre Director e Storage. A técnica é a mesma entre Director e Cliente; bconsole para o Director.
bconsole.conf
Director {
Name = backup1-dir
address = 192.168.0.50
...
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
TLS key = /etc/bacula/scripts/bacula.pem
}
bacula-dir.conf
Director { # define myself
Name = backup1-dir
...
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
TLS Allowed CN = "192.168.0.50" # Or name
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a server certificate, used for incoming
# console connections.
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
Storage {
Name = File
Address = 192.168.0.50
…
TLS Require = yes
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a client certificate, used by the director to
# connect to the storage daemon
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
Client {
Name = backup1-fd
Address = 192.168.0.50
…
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
Client {
Name = debian2-fd # remote client
Address = 192.168.0.121
…
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/scripts/debian2-fd.pem
TLS Certificate = /etc/bacula/scripts/debian2-fd.pem
TLS Key = /etc/bacula/scripts/debian2-fd.pem
}
bacula-fd.conf
Director {
Name = backup1-dir
...
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
# Allow only the Director to connect
TLS Allowed CN = "192.168.0.50"
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a server certificate. It is used by connecting
# directors to verify the authenticity of this file daemon
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
FileDaemon {
Name = backup1-fd
…
# you need these TLS entries so the SD and FD can
# communicate
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key =/etc/bacula/scripts/bacula.pem
}
bacula-fd.conf (segundo cliente remoto!)
Director {
Name = backup1-dir
...
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
# Allow only the Director to connect
TLS Allowed CN = "192.168.0.121"
TLS CA Certificate File = /etc/bacula/scripts/debian2-fd.pem
TLS Certificate = /etc/bacula/scripts/debian2-fd.pem
TLS Key =/etc/bacula/scripts/debian2-fd.pem
}
FileDaemon { # this is me
Name = debian2-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
# you need these TLS entries so the SD and FD can
# communicate
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a server certificate. It is used by connecting
# directors to verify the authenticity of this file daemon
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
bacula-sd.conf
Storage { # definition of myself
Name = backup1-sd
...
# These TLS configuration options are used for incoming
# file daemon connections. Director TLS settings are handled
# below.
TLS Enable = yes
TLS Require = yes
# Peer certificate is not required/requested -- peer validity
# is verified by the storage connection cookie provided to the
# File Daemon by the director.
TLS Verify Peer = no
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a server certificate. It is used by connecting
# file daemons to verify the authenticity of this storage daemon
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
Director {
Name = backup1-dir
…
TLS Enable = yes
TLS Require = yes
# Require the connecting director to provide a certificate
# with the matching CN.
TLS Verify Peer = yes
TLS Allowed CN = “192.168.0.50”
TLS CA Certificate File = /etc/bacula/scripts/bacula.pem
# This is a server certificate. It is used by the connecting
# director to verify the authenticity of this storage daemon
TLS Certificate = /etc/bacula/scripts/bacula.pem
TLS Key = /etc/bacula/scripts/bacula.pem
}
Disponível em: Português