Criando Novo Cliente Windows no Servidor Bacula com Criptografia

Aqui vamos verificar como efetuamos a criação de um novo cliente Windows

Vamos criar o arquivo de configuração para gerar as chaves para o cliente

vim /etc/bacula/keys/server.cnf 
[req]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[req_dn]
C=BR
ST=Parana
L=Curitiba
O=GPB
OU=IT
CN=win2012.douglasqsantos.com.br
emailAddress=douglas.q.santos@gmail.com

[cert_type]
nsCertType = server

[v3_ca]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints=CA:true

Agora vamos criar um diretório para armazenar as chaves dos clientes e outro para as configurações

mkdir -p /etc/bacula/keys/clients/win2012/confs/keys

Agora vamos acessar o diretório que vai armazenar as chaves e vamos gerar a chave principal do cliente.

cd /etc/bacula/keys/clients/win2012/confs/keys
openssl genrsa -out win2012-fd.key 2048

Agora vamos assinar a chave do cliente

openssl req -new -x509 -out win2012-fd.cert -key win2012-fd.key -config /etc/bacula/keys/server.cnf -extensions v3_ca

Agora vamos inserir as duas chaves em um arquivo

cat win2012-fd.key win2012-fd.cert > win2012-fd.pem

Agora vamos copiar a chave master.cert para a nosso cliente

cp -Rfa /etc/bacula/keys/master.cert .

Agora vamos a configuração do cliente

vim /etc/bacula/keys/clients/win2012/confs/bacula-fd.conf 
# LIST DIRECTORS WHO ARE PERMITTED TO CONTACT THIS FILE DAEMON
Director {
    Name = bacula-dir
    Password = "hNqN7izeRCRLTcsXUUcoAdaaRpVcg2mnvy1"
}

# RESTRICTED DIRECTOR, USED BY TRAY-MONITOR TO GET THE
#   STATUS OF THE FILE DAEMON
Director {
    Name = bacula-mon
    Password = "jgNDYGHmez8tsFUyIPdRSfEu9K7yrNIgms9"
    Monitor = yes
}

# "GLOBAL" FILE DAEMON CONFIGURATION SPECIFICATIONS
FileDaemon {
    Name = win2012-fd
    FDport = 9102
    WorkingDirectory = "C:\\Program Files\\Bacula\\working"              # Diretorio de Trabalho
    Pid Directory = "C:\\Program Files\\Bacula\\working"                 # Diretorio de PID
    Maximum Concurrent Jobs = 10                                         # Numero Maximo de Jobs em execucao
    FDAddress = 0.0.0.0
    PKI Signatures = Yes                                                 # Habilita a assinatura dos dados
    PKI Encryption = Yes                                                 # Habilita a criptografia dos dados
    PKI Keypair = "C:\\Program Files\\Bacula\\keys\\win2012-fd.pem"     # Arquivo que contem a chave publica e privada
    PKI Master Key = "C:\\Program Files\\Bacula\\keys\\master.cert"      # Arquivo com a chave publica do servidor
}

# SEND ALL MESSAGES EXCEPT SKIPPED FILES BACK TO DIRECTOR
Messages {
    Name = Standard
    director = bacula-dir = all, !skipped, !restored
}

Agora vamos criar o cliente para o servidor bacula

vim /etc/bacula/clients-jobs/win2012-jobs.conf 
#Configuration to Jobs on win2012
Job {
    Name = "Win2012-Backup"                           # Nome do Job para Backup do Cliente
    JobDefs = "Default-Windows"                             # JObDefs Definido
    Client = win2012-fd                                # Cliente fd
    Storage = Win2012-Storage
    Pool = Win2012-Pool
    FileSet = "WebServer-Windows"
    Schedule = "Weekly-Cycle-Windows"
}

Client {
    Name = win2012-fd                                        # Cliente fd
    Address = 172.17.0.93
    Password = "hNqN7izeRCRLTcsXUUcoAdaaRpVcg2mnvy1"     # Senha do Director do Bacula que foi configurado no cliente na primeira sessão Director
    Maximum Concurrent Jobs = 10 #Habilita o cliente a executar mais de um job por vez
    @/etc/bacula/clients-jobs/weekly-client  # Arquivo onde contem informacoes sobre o cliente.
}

Agora vamos criar a configuração do device para o nosso cliente

vim /etc/bacula/devices/win2012-device.conf 
#Configuration to Device on win2012
Device {
    Name = Win2012-Device               # Nome do Device
    Media Type = File                       # Tipo de Midia (DVD, CD, HD, FITA)
    Archive Device = /srv/backup/win2012  # Diretorio onde serao salvos os volumes de backup
    LabelMedia = yes;                       # Midias de Etiquetamento do Bacula
    Random Access = Yes;                    #
    AutomaticMount = yes;                   # Montar Automaticamente
    RemovableMedia = no;                    # Midia Removivel
    AlwaysOpen = no;                        # Manter Sempre Aberto
}

Agora vamos configurar o pool para o cliente

vim /etc/bacula/pools/win2012-pool.conf 
#Configuration for Pool client01
Pool {
    Name = Win2012-Pool             # o Job de Backup por padrao aponta para o 'File'
    Pool Type = Backup                # O Tipo do Pool = Backup, Restore, Etc.
    Recycle = yes                       # Bacula can automatically recycle Volumes
    AutoPrune = yes                     # Prune expired volumes
    Volume Retention = 8 days          # Retencao de Volume = 1 Mes
    Volume Use Duration = 7 days      # Duracao de um volume aberto
    Maximum Volume Bytes = 20 Gb        # Tamanho maximo de um volume
    Maximum Volumes      = 10           # Volume Bytes X Volumes <= Dispositivo de backup
    LabelFormat          = "volume-win2012-"     # Nome Default do Volume
}

Agora vamos criar o storage para o cliente

vim /etc/bacula/storages/win2012-storage.conf 
#Configuration for storage client01
Storage {
    Name = Win2012-Storage
    Address = 172.17.0.90                            # Pode ser usado Nome ou IP
    SDPort = 9103                                      # Porta de Comunicação do Storage
    Password = "aLobW0dx5UrSru5JPDxdKCx5e9QPCN6hQU5"                       # Senha Storage Bacula
    Device = Win2012-Device                        # Device de Storage
    Media Type = File                                  # Tipo de Midia (Fita, DVD, HD)
    Maximum Concurrent Jobs = 10                       # Num. Maximo de Jobs executados nessa Storage.
}

Vamos criar o bconsole para o nosso cliente

vim /etc/bacula/keys/clients/win2012/confs/bconsole.conf 
#CONFIGURATION FOR BCONSOLE
Director {
    Name = bacula-dir
    DIRport = 9101
    address = 172.17.0.90
    Password = "XHJhBJpspiuCWMzmQTI6ucifzHoVe9UQ0hy"
}

Vamos criar um arquivo de registro que tem que ser importado no cliente Windows.

vim /etc/bacula/keys/clients/win2012/bacula.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\wbengine]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\wbengine\SystemStateBackup]
"ALlowSSBToAny"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows]
"NoInteractiveServices"=dword:00000000

Agora vamos criar um bat para criar a regra de firewall e habilitar os serviços que precisamos e importar o registro do Windows.

vim /etc/bacula/keys/clients/win2012/depois-da-instalacao.bat

echo "Copiando arquivos do Bacula"
move /Y "C:\Program Files\Bacula\bacula-fd.conf" "C:\Program Files\Bacula\bacula-fd.conf.bkp"
move /Y "C:\Program Files\Bacula\bconsole.conf" "C:\Program Files\Bacula\bconsole.conf.bkp"
xcopy confs\* "C:\Program Files\Bacula\" /s /y

echo "Importando registro para o Bacula"
regedit.exe /s bacula.reg

echo "Criando regra de liberação de acesso ao para o Bacula-FD"
netsh advfirewall firewall add rule name="Bacula-FD" dir=in action=allow protocol=TCP localport=9102

echo "Habilitando o Serviço de detecção de serviços interativos"
sc config UI0Detect start= auto

echo "Inicializando o Servico de deteccao de sevicos interativos"
net start "UI0Detect"

echo "Iniciando o servico do Bacula"
net start "Bacula-fd"

Agora vamos converter o nosso bat e o registro para o formato Microsoft

unix2dos /etc/bacula/keys/clients/win2012/bacula.reg
unix2dos /etc/bacula/keys/clients/win2012/depois-da-instalacao.bat

Agora vamos criar o diretório para armazenar os backups do cliente

mkdir /srv/backup/win2012/

Agora vamos ajustar as permissões

chown -R bacula:tape /srv/backup/win2012/
chown -R bacula:bacula /etc/bacula

Agora vamos criar um pacote tar da configuração do nosso cliente

Vamos acessar o diretório do cliente

cd /etc/bacula/keys/clients/win2012

Vamos obter o executavél para a instalação do cliente Bacula no Windows 64

wget -c http://wiki.douglasqsantos.com.br/Downloads/bacula/bacula-win64-5.2.10.exe

ou

Vamos obter o executavél para a instalação do cliente Bacula no Windows 32

wget -c http://wiki.douglasqsantos.com.br/Downloads/bacula/bacula-win32-5.2.10.exe

Agora vamos gerar o pacote

zip -r  win2012.zip *

Agora vamos recarregar a configuração do bacula

/etc/init.d/bacula-dir force-reload
/etc/init.d/bacula-sd force-reload

Agora é só fazer a instalação do cliente bacula bacula-win*-5.2.10.exe e rodar o depois-da-instalacao.bat

Referências