Backup do pfSense

Introdução 

Este documento destina-se a demonstração dos procedimentos de implementaçao do backup das configurações de um servidor pfSense. A efetivação destes procedimentos permite rápida restauração de um servidor pfSense com problemas ou implantação de um servidor baseado nas configurações de um anterior.

esquema_Backup_gateway_SUAP.png

O backup é realizado conforme a figura acima. Este método de backup é utilizado quando não é possível instalar um cliente diretamente no host que sofrerá o backup dos dados. Neste caso, um host intermediário (Backup-gateway), este com capacidade de sofrer backup dos dados, realiza a cópia do pfSense para o seu disco local. Em seguida, de acordo com o agendamento, o servidor de backup realiza o backup dos dados copiados no host intermediário.

Este método é baseado em uma ferramenta open source que realiza a cópia dos dados do pfSense de forma otimizada via comunicação HTTPS. A ferramenta conecta-se ao pfSense com as credenciais e em seguida realiza o download das configurações do pfSense. 

Backup do pfSense

A máquina Backup-gateway tem um S.O do tipo centOs versão 7.3.1611. A partir desta máquina e com um usuário com permissões de administrador:

$ sudo yum check-updates
$ sudo yum install epel-release
$ sudo yum install python-pip
$ sudo pip install BeautifulSoup4

Agora realize o download do código python a ser utilizado. Coloque este código em /root, por exemplo.:

 $ sudo wget -c https://raw.githubusercontent.com/edgauthier/pfsense-backup/master/pfsense-backup.py
 $ sudo cp pfsense-backup.py /root/pfsense-backup.py

A utilização do código é da seguinte forma:

Usage: pfsense-backup.py OPTIONS

OPTIONS:

    -h | --help

    -s <server url> | --server <server url>
        The base URL for the pfSense installation.
        Example: https://pfsense.example.com
        
    -t <seconds> | --timeout <seconds>
        Timeout for network requests.

    -u <username> | --username <username>
    
    -p <password> | --password <password>

    -d | --directory <directory>
        Defaults to current directory.

    -r | --rrd
        Includes RRD data with the backup.

    -f | --file <file>
        Defaults to 'pfsense-backup.xml'

Um exemplo de uso é o seguinte::

$ ./pfsense-backup.py -s https://172.20.254.100:443 -t 5 -u admin -p senha123 -r -f arquivo_backup_pfSense.xml

Para uso em rotinas, fica a sugestão do seguinte script:

#!/bin/bash

data=$(/bin/date +%Y-%m-%d)
hora=$(/bin/date +%X)

DIR=/backup/pfsense/

host1="PFsense"
user1=admin
passwd1=senha123
server1=172.20.254.100
FILE1=backup_"$host1"-$data.xml

method=https
port=443
timeout=5

logFile=/var/log/backup-pfSense.log

# Funcao
writeLog(){
   echo -e "$data $hora - $1\n" >> $logFile
}

backup(){
/root/pfsense-backup.py -s $method://$1:$port -t $timeout -u $2 -p "$3" -r -f "$4"
}

check(){
if [ -e $1 ]; then
        writeLog "Cópia de $2 realizada com sucesso!"
else
        writeLog "Cópia de $2 não realizada, verificar log."
fi
}

writeLog "Iniciando rotina de cópia dos dados"

mkdir -p $DIR
cd $DIR

backup $server1 $user1 $passwd1 $FILE1
writeLog "Realizando a cópia remota dos dados do host: $host1"
check $FILE1 $host1

writeLog "Encerrando rotina..."

 Referências

https://github.com/edgauthier/pfsense-backup