Configuração do Bacula com OpenVPN

Com os valores de VPS e Computação em Nuvem bem acessíveis nos dias de hoje, é possível instalar um Bacula remoto e configurar uma OpenVPN para efetuar diretamente o backup dos clientes locais atrás de Firewalls e NATs com mais facilidade e segurança.

Para isso vamos considerar que temos um servidor CentOS 7 com um ip fixo e com uma interface tun0 habilitada e com o Bacula Enterprise instalado e configurado.

1. No Servidor Bacula, efetuar o download do script de instalação da VPN e dar permissão de execução

wget -c https://www.bacula.lat/wp-content/uploads/2018/08/openvpn-install.txt -O /usr/local/bin/openvpn-install.sh
chmod a+x /usr/local/bin/openvpn-install.sh

Executar o script para iniciar a instalação e deixar as opções padrões.
O endereço IP precisa ser o IP público, pois é este endereço que os clientes utilizam para se conectar.

/usr/local/bin/openvpn-install.sh

Welcome to this OpenVPN "road warrior" installer!

I need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.

First, provide the IPv4 address of the network interface you want OpenVPN
listening to.
IP address: XXX.XXX.XXX.XXX

Which protocol do you want for OpenVPN connections?
1) UDP (recommended)
2) TCP
Protocol [1-2]: 1

What port do you want OpenVPN listening to?
Port: 1194

Okay, that was all I needed. We are ready to set up your OpenVPN server now.
Press any key to continue...

Finished!

Now you need to run the script again to add or remove clients!

2) Executar o script novamente para a criação dos clientes

A mensagem abaixo só aparece quando o servidor OpenVPN estiver configurado.

Selecionar a opção “1) Add a new user”.

Para uma padronização é interessante utilizar o mesmo nome do cliente no bacula.

Por exemplo: linux-fd, windows-fd, etc.

*No nome do cliente não deve-se digitar espaços e nem caracteres especiais.

Looks like OpenVPN is already installed.

What do you want to do?
1) Add a new user
2) Revoke an existing user
3) Remove OpenVPN
4) Exit
Select an option [1-4]: 1

Tell me a name for the client certificate.
Please, use one word only, no special characters.
Client name: cliente1-fd

O arquivo de configuração do cliente vai ser salvo em: /etc/openvpn/client com o nome do cliente e a extensão “.ovpn”.

Copiar este arquivo para a máquina do cliente onde encontra-se o FileDaemon instalado.

3) Por padrão o OpenVPN configura a faixa de rede da VPN com a seguinte faixa: 10.8.0.0/24 e disponibiliza os endereços para os clientes via DHCP

O servidor OpenVPN vai sempre reservar o primeiro endereço desta faixa para o IP do próprio servidor, no caso 10.8.0.1, e a partir do segundo até o penúltimo endereço será disponibilizado para os clientes.

Então após configurar o cliente é interessante definir um IP fixo para os clientes, pois com o DHCP ele pode variar e o Bacula não conseguir conectar. Então basicamente o “cliente1-fd” vai possuir o endereço 10.8.0.2, “cliente2-fd” o endereço 10.8.0.3 e assim por diante.

Crie um arquivo dentro do diretório “/etc/openvpn/ccd/” com o mesmo nome do cliente criado anteriormente (sem extensão nenhuma) e adicione o seguinte conteúdo:

echo "ifconfig-push 10.8.0.2 255.255.255.0" > /etc/openvpn/ccd/cliente1-fd

Onde “10.8.0.2” é o endereço ip do cliente1. Altere de acordo com o cliente.

4) Instalação e Configuração do Cliente Linux

Instalar o OpenVPN

Debian/Ubuntu
apt-get install openvpn openssl ca-certificates

CentOS/Red Hat
yum -f install openvpn iptables openssl ca-certificates

Pegue o arquivo do cliente (cliente1-fd.ovpn) e salve em /etc/openvpn/ com o nome “client.conf”.

Digite os comandos abaixo para habilitar a inicialização automática da vpn e iniciar o serviço.

systemctl enable openvpn@client
systemctl start openvpn@client

Se tudo ocorrer corretamente você pode digitar o comando “ipconfig” ou “ip address” que vai ser mostrado uma interface “tun0”

root@bacula:/# ifonfig
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.2 netmask 255.255.255.0 destination 10.8.0.10
inet6 fe80::106b:617a:2c2:6e81 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (Não Especificado)
RX packets 29 bytes 2436 (2.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 37 bytes 2820 (2.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Você pode também efetuar um teste de ping para o endereço do servidor OpenVPN

root@bacula:/# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=189 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=187 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=181 ms
64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=183 ms

4) Instalação e Configuração do Cliente Windows

Acessar o endereço https://openvpn.net/index.php/download/community-downloads.html e fazer o download da última versão EXE disponível.

Após instalado é preciso copiar o arquivo do cliente (cliente1-fd.ovpn) para diretório “C:Program FilesOpenVPNconfig” e acessar os serviços do Windows “services.msc”.

É para existir 3 serviços OpenVPN:

  • OpenVPNService
  • OpenVPNServiceLegacy
  • OpenVPNServiceInteractive

Clicar com o botão direito em cima do primeiro serviço (OpenVPNService), selecionar propriedades e alterar o tipo de inicialização para “automática” e também iniciar o serviço.
Com isso, o OpenVPN vai ser iniciado automaticamente durante a inicialização do sistema  e conectar com a VPN.

6) Configuração do Bacula

Com a VPN configurada tanto no Servidor quando nos cliente, é preciso alterar o IP do Storage Daemon do Bacula, para o endereço do Servidor OpenVPN (Ou então criar um novo Storage) e configurar um Client, o Job e um FileSet.

Exemplo de configuração:

# bacula-sd.conf
Storage {
   Name = "File1"
   Address = 10.8.0.1
   Autochanger = "File1"
   Device = "FileChgr1"
   MaximumConcurrentJobs = 10
   MediaType = "File1"
   Password = "15hMBwwAtL984OA6fEmgCfdrejw3CYlXONKPe/orpcQ6"
   SdPort = 9103
}


Client {
   Name = "client1-fd"
   Address = 10.8.0.2
   AutoPrune = no
   Catalog = "MyCatalog"
   FileRetention = 31536000
   JobRetention = 31536000
   MaximumConcurrentJobs = 5
   Password = "8UswWEjIiXN68yoUtxxIw1tdWygOxxq5t"
}

Job {
   Name = "Backup_Client1"
   Type = "Backup"
   Client = "client1-fd"
   Fileset = "FileSet_Client1"
   JobDefs = "DefaultJob"
   Messages = "Standard"
   Pool = "File"
   Schedule = "WeeklyCycle"
   Storage = "File1"
}

Fileset {
   Name = "FileSet_Client1"
   EnableVss = no
   Include {
      Options {
         Compression = Gzip6
         Signature = Md5
      }
      File = "/usr/sbin/"
   }
}

Com o cliente configurado é possível executar um status client:

[root@bacula]# bconsole
Connecting to Director localhost:9101
1000 OK: 10002 bacula-dir Version: 10.0.2 (30 May 2018)
Enter a period to cancel a command.
*status client=client1-fd
Connecting to Client client1-fd at 10.8.0.2:9102

client1-fd Version: 10.0.2 (30 May 2018) x86_64-pc-linux-gnu-bacula-enterprise debian 9.0
Daemon started 28-jul-18 20:35. Jobs: run=1 running=0.
Heap: heap=266,240 smbytes=4,837,726 max_bytes=5,141,688 bufs=172 max_bufs=213
Sizes: boffset_t=8 size_t=8 debug=0 trace=0 mode=0,2010 bwlimit=0kB/s
Plugin: bpipe-fd.so

Running Jobs:
No Jobs running.
====

Terminated Jobs:
JobId Level Files Bytes Status Finished Name
=======================================================================
*

E efetuar um Job de Backup:

bacula-dir JobId 13: Start Backup JobId 13, Job=Backup_Client1.2018-07-28_19.36.21_37
bacula-dir JobId 13: Using Device "FileChgr1-Dev1" to write.
bacula-dir JobId 13: Created new Volume="Vol-0001", Pool="File", MediaType="File1" in catalog.
bacula-sd JobId 13: Labeled new Volume "Vol-0001" on File device "FileChgr1-Dev1" (/tmp).
bacula-sd JobId 13: Wrote label to prelabeled Volume "Vol-0009" on File device "FileChgr1-Dev1" (/tmp)
bacula-sd JobId 13: Elapsed time=00:17:25, Transfer rate=25.38 K Bytes/second
bacula-sd JobId 13: Sending spooled attrs to the Director. Despooling 30,919 bytes ...
bacula-dir JobId 13: Bacula Enterprise bacula-dir 10.0.2 (30May18):
Build OS: x86_64-redhat-linux-gnu-bacula-enterprise redhat
JobId: 13
Job: Backup_Client1.2018-07-28_19.36.21_37
Backup Level: Full
Client: "client1-fd" 10.0.2 (30May18) x86_64-pc-linux-gnu-bacula-enterprise,debian,9.0
FileSet: "FileSet_Client1" 2018-07-28 19:30:35
Pool: "File" (From Job resource)
Catalog: "MyCatalog" (From Client resource)
Storage: "File1" (From Job resource)
Scheduled time: 28-Jul-2018 19:36:20
Start time: 28-Jul-2018 19:36:28
End time: 28-Jul-2018 19:53:53
Elapsed time: 17 mins 25 secs
Priority: 10
FD Files Written: 150
SD Files Written: 150
FD Bytes Written: 26,510,195 (26.51 MB)
SD Bytes Written: 26,525,714 (26.52 MB)
Rate: 25.4 KB/s
Software Compression: 67.5% 3.1:1
Comm Line Compression: 0.7% 1.0:1
Snapshot/VSS: no
Encryption: no
Accurate: no
Volume name(s): Vol-0001
Volume Session Id: 5
Volume Session Time: 1532387762
Last Volume Bytes: 26,560,522 (26.56 MB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK

Disponível em: pt-brPortuguêsenEnglish (Inglês)

Deixe uma resposta