Differences

This shows you the differences between two versions of the page.

Link to this comparison view

criando_novo_cliente_freebsd_no_bacula_server_com_criptografia_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Criando Novo Cliente FreeBSD no Servidor Bacula com Criptografia ======
  
 +Vamos criar a estrutura para um cliente <​nowiki>​FreeBSD</​nowiki>,​ pois até o momente somente temos a estrutura para cliente Linux e Windows.
 +
 +Vamos criar o padrão para o job de um cliente <​nowiki>​FreeBSD</​nowiki>​.
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Agora vamos criar os agendamentos padrões para os cliente.
 +
 +Vamos criar o agendamento mensal.
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Vamos criar o agendamento semanal.
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Agora vamos criar o fileset padrão para os clientes <​nowiki>​FreeBSD</​nowiki>​
 +<sxh bash>
 +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
 +                }
 +}
 +</​sxh>​
 +
 +Agora vamos criar o fileset que sera utilizado por o cliente de exemplo, vamos criar um fileset para um servidor web.
 +<sxh bash>
 +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
 +                }
 +}
 +</​sxh>​
 +
 +Vamos criar o arquivo de configuração para gerar as chaves para o cliente
 +<sxh bash>
 +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
 +</​sxh>​
 +
 +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.
 +<sxh bash>
 +mkdir -p /​etc/​bacula/​keys/​clients/​freebsd02/​keys
 +</​sxh>​
 +
 +Agora vamos acessar o diretório que vai armazenar as chaves
 +<sxh bash>
 +cd /​etc/​bacula/​keys/​clients/​freebsd02/​keys
 +</​sxh>​
 +
 +Agora precisamos gerar a key rsa do nosso cliente.
 +<sxh bash>
 +openssl genrsa -out freebsd02-fd.key 2048
 +</​sxh>​
 +
 +Agora vamos assinar a chave do cliente
 +<sxh bash>
 +openssl req -new -x509 -out freebsd02-fd.cert -key freebsd02-fd.key -config /​etc/​bacula/​keys/​server.cnf -extensions v3_ca
 +</​sxh>​
 +
 +Agora vamos inserir as duas chaves em um arquivo
 +<sxh bash>
 +cat freebsd02-fd.key freebsd02-fd.cert > freebsd02-fd.pem
 +</​sxh>​
 +
 +Agora vamos copiar a chave master.cert para a nosso cliente
 +<sxh bash>
 +cp -Rfa /​etc/​bacula/​keys/​master.cert .
 +</​sxh>​
 +
 +Agora vamos a configuração do cliente ​
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Agora vamos criar o cliente para o servidor bacula
 +<sxh bash>
 +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.
 +}
 +</​sxh>​
 +
 +Agora vamos criar a configuração do device para o nosso cliente
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Agora vamos configurar o pool para o cliente
 +<sxh bash>
 +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
 +}
 +</​sxh>​
 +
 +Agora vamos criar o storage para o cliente
 +<sxh bash>
 +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.
 +}
 +</​sxh>​
 +
 +Vamos criar o bconsole para o nosso cliente
 +<sxh bash>
 +vim /​etc/​bacula/​keys/​clients/​freebsd02/​bconsole.conf ​
 +#​CONFIGURATION FOR BCONSOLE
 +Director {
 +    Name = bacula-dir
 +    DIRport = 9101
 +    address = 172.17.0.90
 +    Password = "​XHJhBJpspiuCWMzmQTI6ucifzHoVe9UQ0hy"​
 +}
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar os backups do cliente
 +<sxh bash>
 +mkdir /​srv/​backup/​freebsd02/​
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões
 +<sxh bash>
 +chown -R bacula:tape /​srv/​backup/​freebsd02/​
 +chown -R bacula:​bacula /etc/bacula
 +</​sxh>​
 +
 +Agora vamos criar um pacote tar da configuração do nosso cliente
 +
 +Vamos acessar o diretório do cliente
 +<sxh bash>
 +cd /​etc/​bacula/​keys/​clients/​freebsd02
 +</​sxh>​
 +
 +Agora vamos gerar o pacote
 +<sxh bash>
 +tar -cJvf freebsd02.tar.xz *
 +</​sxh>​
 +
 +Agora vamos recarregar a configuração do bacula
 +<sxh bash>
 +/​etc/​init.d/​bacula-dir force-reload
 +/​etc/​init.d/​bacula-sd force-reload
 +</​sxh>​
 +
 +====== Referências ======
 +  - http://​bacula.org/​
 +  - http://​blog.bacula.org/​documentation/​