Criando Novo Cliente FreeBSD no Servidor Bacula com Criptografia
Vamos criar a estrutura para um cliente FreeBSD, pois até o momente somente temos a estrutura para cliente Linux e Windows.
Vamos criar o padrão para o job de um cliente FreeBSD.
vim /etc/bacula/jobsdef/default-freebsd.conf # JOB PADRAO PARA O BACULA SERVER # JobDefs { Name = "Default-FreeBSD" # Nome do Job Padrao Type = Backup # Tipo de Job (Backup, Restore, Verificacao) Level = Incremental # Nivel do Job (Full, Incremental, Diferencial) Client = bacula-fd # Nome do Cliente FD FileSet = "Default-FreeBSD" # File Set Definido para Esse Job Schedule = "Monthly-Cycle-FreeBSD" # Agendamento Definido para Esse Job Storage = Default-Storage # Define Storage Messages = Standard # Nivel de mensagens Pool = Default-Pool # Define a Pool Priority = 10 # Qual o nivel de Prioridade Write Bootstrap = "/var/lib/bacula/%c.bsr" # Arquivo gerado pelo Bacula para armazenar informacoes de backups feitos em seus clientes. Allow Mixed Priority = yes # this means a high priority job will not have to wait for other jobs to finish before starting # AS OPCOES ABAIXO EVITAM QUE SEJAM DUPLICADO JOBS NO SERVIDOR, CASO TENHA UM JOB DUPLICADO O MESMO E CANCELADO Allow Duplicate Jobs = no # Permite Jobs Duplicados Cancel Lower Level Duplicates = yes # Cancela niveis inferiores duplicados }
Agora vamos criar os agendamentos padrões para os cliente.
Vamos criar o agendamento mensal.
vim /etc/bacula/schedules/monthly-cycle-freebsd.conf # AGENDAMENTO PADRAO DO BACULA - CICLO MENSAL DE BACKUP # Schedule { Name = "Monthly-Cycle-FreeBSD" # Ciclo Semanal de Backup Run = Level=Full 1st sun at 09:00 # Backup Full no Primeiro Domingo do Mes as 23:05 hrs Run = Level=Incremental mon-sat at 19:00 # Backup Incremental de Seg. a Sabado as 23:05 hrs }
Vamos criar o agendamento semanal.
vim /etc/bacula/schedules/weekly-cycle-freebsd.conf # AGENDAMENTO PADRAO DO BACULA - CICLO SEMANAL DE BACKUP # Schedule { Name = "Weekly-Cycle-FreeBSD" # Ciclo Semanal de Backup Run = Level=Full sun at 09:00 # Backup Full no Primeiro Domingo do Mes as 23:05 hrs Run = Level=Incremental mon-sat at 19:00 # Backup Incremental de Seg. a Sabado as 23:05 hrs }
Agora vamos criar o fileset padrão para os clientes FreeBSD
vim /etc/bacula/filesets/default-freebsd.conf #Configuration file for default-linux FileSet { Name = "Default-FreeBSD" # Nome do FileSets # Arquivos que serao incluidos para serem copiados ao backup Include { Options { signature = SHA1 compression = GZIP verify = pin1 onefs = no } File = /etc File = /root File = /var/log File = /home File = /usr/share File = /usr/local/etc File = /usr/local/share } # Arquivos que serao ignorados ao backup Exclude { File = /var/db/bacula File = /proc File = /tmp File = /.journal File = /.fsck } }
Agora vamos criar o fileset que sera utilizado por o cliente de exemplo, vamos criar um fileset para um servidor web.
vim /etc/bacula/filesets/webserver-freebsd.conf #Configuration file for default-linux FileSet { Name = "WebServer-FreeBSD" # Nome do FileSets # Arquivos que serao incluidos para serem copiados ao backup Include { Options { signature = SHA1 compression = GZIP verify = pin1 onefs = no } File = /etc File = /root File = /var/log File = /home File = /usr/share File = /usr/local/etc File = /usr/local/share File = /usr/local/www } # Arquivos que serao ignorados ao backup Exclude { File = /var/db/bacula File = /proc File = /tmp File = /.journal File = /.fsck } }
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=freebsd02.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, note que o freebsd02 é o hostname da máquina que estamos criando a configuração.
mkdir -p /etc/bacula/keys/clients/freebsd02/keys
Agora vamos acessar o diretório que vai armazenar as chaves
cd /etc/bacula/keys/clients/freebsd02/keys
Agora precisamos gerar a key rsa do nosso cliente.
openssl genrsa -out freebsd02-fd.key 2048
Agora vamos assinar a chave do cliente
openssl req -new -x509 -out freebsd02-fd.cert -key freebsd02-fd.key -config /etc/bacula/keys/server.cnf -extensions v3_ca
Agora vamos inserir as duas chaves em um arquivo
cat freebsd02-fd.key freebsd02-fd.cert > freebsd02-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/freebsd02/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 = freebsd02-fd FDport = 9102 WorkingDirectory = /var/db/bacula Pid Directory = /var/run Maximum Concurrent Jobs = 20 FDAddress = 0.0.0.0 PKI Signatures = Yes PKI Encryption = Yes PKI Keypair = "/usr/local/etc/bacula/keys/freebsd02-fd.pem" PKI Master Key = "/usr/local/etc/bacula/keys/master.cert" } # 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/freebsd02-jobs.conf #Configuration to Jobs on freebsd02 Job { Name = "FreeBSD02-Backup" # Nome do Job para Backup do Cliente JobDefs = "Default-FreeBSD" # JObDefs Definido Client = freebsd02-fd # Cliente fd Storage = FreeBSD02-Storage Pool = FreeBSD02-Pool FileSet = "WebServer-FreeBSD" Schedule = "Weekly-Cycle-FreeBSD" } Client { Name = freebsd02-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/freebsd02-device.conf #Configuration to Device on freebsd02 Device { Name = FreeBSD02-Device # Nome do Device Media Type = File # Tipo de Midia (DVD, CD, HD, FITA) Archive Device = /srv/backup/freebsd02 # 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/freebsd02-pool.conf #Configuration for Pool client01 Pool { Name = FreeBSD02-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-freebsd02-" # Nome Default do Volume }
Agora vamos criar o storage para o cliente
vim /etc/bacula/storages/freebsd02-storage.conf #Configuration for storage client01 Storage { Name = FreeBSD02-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 = FreeBSD02-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/freebsd02/bconsole.conf #CONFIGURATION FOR BCONSOLE Director { Name = bacula-dir DIRport = 9101 address = 172.17.0.90 Password = "XHJhBJpspiuCWMzmQTI6ucifzHoVe9UQ0hy" }
Agora vamos criar o diretório para armazenar os backups do cliente
mkdir /srv/backup/freebsd02/
Agora vamos ajustar as permissões
chown -R bacula:tape /srv/backup/freebsd02/ 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/freebsd02
Agora vamos gerar o pacote
tar -cJvf freebsd02.tar.xz *
Agora vamos recarregar a configuração do bacula
/etc/init.d/bacula-dir force-reload /etc/init.d/bacula-sd force-reload