Ferramenta for Windows para automatizar backup no pfSense



  • Buenas Senhores,

    Compartilho por aqui a dica enviada pelo colega Welkson Renny de Medeiros. Trata-se de um software desenvolvido em Visual Studio pra MS Windows que promete automatizar o backup do seu pfSense - Uma alternativa ao conhecido (mas vinculado a um plano de suporte junto ao BSD Perimeter) AutoConfigBackup.

    Nota: Não testei o software… Seria bacana alguém (com disponibilidade e o mínimo de conhecimento na linguagem em questão) fazer um teste no binário e uma inspeção no source pra termos certeza de que não é um kinder ovo!

    Link para o software: http://www.zomers.eu/knowledge/pfSense/Pages/How-to-automate-pfSense-backup.aspx

    Abraços!
    Jack



  • Jack, tem uma solução bem mais simples e confiável para automatizar este backup baseada em php.
    Não requer prática tão pouco habilidade  :D

    Vou procura o post e colo aqui.



  • Opa marcelloc…

    Toda contribuição é sempre bem-vinda por aqui, claro! ;)

    Há também esta outra forma engenhosa publicada no nosso blog: http://www.pfsense-br.org/blog/2011/12/backup-remoto/ :)

    Abraços!
    Jack



  • tópico relacionado:
    http://forum.pfsense.org/index.php/topic,44768.0.html

    Este arquivo php fica publicado na pasta /usr/local/www do seu pfsense.
    Você deve alterar o parâmetro $password e $zabix_ip para o ip do servidor que vai buscar a configuração e uma senha para garantir a segurança da transferência.
    /usr/local/www/zabix.php

    #zabix server ip
    $zabix_ip='192.168.1.122';
    $password="some_password_to_secure_script";
    if ($_SERVER["REMOTE_ADDR"]==$zabix_ip && $_REQUEST['pass']== $password)
      print base64_encode(file_get_contents('/conf/config.xml'));
    
    ?>
    

    No servidor/estação onde os backups ficarão armazenados, você tem duas formas de execução:

    Opção1(Recomendado)
    crie este script com o nome que voce quiser e altere os valores de $url_pfsense, $password e $dir.

    #!/usr/bin/php
    $url_pfsense="https://192.168.1.1:8443/zabix.php";
    $password="some_password_to_secure_script";
    $dir="/home/marcelloc/backup";
    
    $config=file_get_contents("$url_pfsense?pass=$password");
    $now= date('YmHis');
    file_put_contents($dir."/config.".$now.".xml",base64_decode($config),LOCK_EX);
    
    ?>
    
    

    Opção2
    usando o fetch do freebsd ou wget do linux ou qualquer outro programa de linha de comando que busca url.

    fetch https://ip_do_seu_pfsense/zabix.php?password="sua_senha" > arquivo_de_backup.base64.txt



  • script shell um pouco mais elaborado que versiona as modificações de configuração

    #!/bin/sh
    
    DATESTAMP=`date +%Y-%m-%d.%H:%M`
    FNAME=pfsense.${DATESTAMP}.xml
    FOLDER=/var/www/vhosts/mr-wolf.nl/pfsense
    
    USER=admin
    PASS=pfsense
    
    PROTO=https             # http or https
    IP=pfsense.yourdomain.com    # DNS or IP of webif (remote side)
    PORT=443              # port of webif (remote side)
    
    if cd ${FOLDER} ; then
    
      FGROUP=`stat -c%G .`
      FUSER=`stat -c%U .`
      LASTXML=`ls -1t pfsense*xml 2>/dev/null | head -n1`
    
      if curl -u${USER}:${PASS} ${PROTO}://${IP}:${PORT}/zabbix.php 2>/dev/null | base64 -d 2>/dev/null >${FNAME} ; then
        chown ${FUSER}:${FGROUP} ${FNAME}
    
        if [ ! -z "${LASTXML}" ] ; then
          if [ ! "${LASTXML}" = "${FNAME}" ] ; then
            if diff ${LASTXML} ${FNAME} >${FNAME}.diff ; then
              rm -f ${FNAME}*
            else
              chown ${FUSER}:${FGROUP} ${FNAME}.diff
            fi
          fi
        fi
      else
        rm -f ${FNAME}
        exit 1
      fi
    else
      exit 1
    fi
    


  • @JackL:

    Link para o software: http://www.zomers.eu/knowledge/pfSense/Pages/How-to-automate-pfSense-backup.aspx

    O tal aplicativo só funcionaria se você tivesse seu pfSense respondendo apenas por HTTP (o que é extremamente desaconselhável - sob praticamente qualquer cenário).

    O colega marcelloc, postou outras alternativas de softwares do gênero - Porém, faz-se importante frisar que todos os scripts ou métodos citados implementam "pontos falhos" ao deixar armazenadas em arquivos textos informações extremamente importantes como: IP do servidor, porta de conexão e até mesmo login e senha.

    É sempre bom prestar atenção nestes pontos antes de sair usando um aplicativo nestes moldes em produção.

    "O seguro morreu de velho!"

    Abraços!
    Jack



  • @JackL:

    O colega marcelloc, postou outras alternativas de softwares do gênero - Porém, faz-se importante frisar que todos os scripts ou métodos citados implementam "pontos falhos" ao deixar armazenadas em arquivos textos informações extremamente importantes como: IP do servidor, porta de conexão e até mesmo login e senha.

    Criei o script em php para usar senha própria para o backup.

    Nunca gostei da idéia de deixar a senha do admin gravada no script ou criar um certificado de ssl que libera ssh no servidor sem autenticação.



  • @marcelloc:

    Criei o script em php para usar senha própria para o backup.
    Nunca gostei da idéia de deixar a senha do admin gravada no script ou criar um certificado de ssl que libera ssh no servidor sem autenticação.

    Desculpe se algo me passou desapercebido, mas é este script que você se refere marcelloc: http://forum.pfsense.org/index.php/topic,45449.msg237138.html#msg237138?

    Pelo que notei, você usa variáveis de ambiente para armazenar as credenciais de acesso… ou não ???

    USER=admin
    PASS=pfsense

    Abraços!
    Jack



  • Este post:
    solução PHP para automatizar backup no pfSense

    pontos importantes

    #verifica o ip do cliente que quer buscar a configuração
    $zabix_ip='192.168.1.122';

    #Senha especifica para este arquivo php
    $password="some_password_to_secure_script";

    #Mesmo acesso criptografado da gui
    $url_pfsense="https://192.168.1.1:8443/zabix.php";



  • Boa marcelloc…

    Realmente não tinha separado visualmente o teu "Opção1(Recomendado)" dos demais.

    Show of ball! ;)

    Abraços!
    Jack



  • @marcelloc:

    tópico relacionado:
    http://forum.pfsense.org/index.php/topic,44768.0.html

    Este arquivo php fica publicado na pasta /usr/local/www do seu pfsense.
    Você deve alterar o parâmetro $password e $zabix_ip para o ip do servidor que vai buscar a configuração e uma senha para garantir a segurança da transferência.
    /usr/local/www/zabix.php

    #zabix server ip
    $zabix_ip='192.168.1.122';
    $password="some_password_to_secure_script";
    if ($_SERVER["REMOTE_ADDR"]==$zabix_ip && $_REQUEST['pass']== $password)
      print base64_encode(file_get_contents('/conf/config.xml'));
    
    ?>
    

    No servidor/estação onde os backups ficarão armazenados, você tem duas formas de execução:

    Opção1(Recomendado)
    crie este script com o nome que voce quiser e altere os valores de $url_pfsense, $password e $dir.

    #!/usr/bin/php
    $url_pfsense="https://192.168.1.1:8443/zabix.php";
    $password="some_password_to_secure_script";
    $dir="/home/marcelloc/backup";
    
    $config=file_get_contents("$url_pfsense?pass=$password");
    $now= date('YmHis');
    file_put_contents($dir."/config.".$now.".xml",base64_decode($config),LOCK_EX);
    
    ?>
    
    

    Opção2
    usando o fetch do freebsd ou wget do linux ou qualquer outro programa de linha de comando que busca url.

    fetch https://ip_do_seu_pfsense/zabix.php?password="sua_senha" > arquivo_de_backup.base64.txt

    Ei parceiro, não consegui fazer esse procedimento aqui, a principio o script chega a salvar um arquivo com o nome definido, porém, o arquivo é salvo com 0 bytes, como pode ver na imagem abaixo. Já tentei até essa dica, mas sem sucesso também: http://www.vivaolinux.com.br/dica/Automoatizar-backup-no-pfSense/

    Segue meus scripts:
    zabix.php

    #server ip
    $ip='172.16.10.1';
    $password="senha";
    if ($_SERVER["REMOTE_ADDR"]==$ip && $_REQUEST['pass']== $password)
      print base64_encode(file_get_contents('/conf/config.xml'));
    
    ?>
    
    

    bkp_pfsense.sh

    #!/usr/bin/php
    $url_pfsense="https://172.16.10.1/zabix.php";
    $password="senha";
    $dir="/mnt/arquivos/ti/Backup-Firewall";
    
    $config=file_get_contents("$url_pfsense?pass=$password");
    $now= date('YmdHis');
    file_put_contents($dir."/config-firewall.coren-".$now.".xml",base64_decode($config),LOCK_EX);
    
    ?>
    
    




  • jaugusto_ap,

    Bem vindo ao fórum! :)

    Acredito que o único passo errado é este:

    #server ip
    $ip='172.16.10.1';
    

    Você configurou o ip  do pfsense no lugar de configurar o ip do servidor que vai puxar o backup.

    a segurança do script é baseada no ip do servidor que guarda os backups e uma senha.

    if ($_SERVER["REMOTE_ADDR"]==$zabix_ip && $_REQUEST['pass']== $password)
    

    att,
    Marcello Coutinho



  • @marcelloc:

    jaugusto_ap,

    Bem vindo ao fórum! :)

    Acredito que o único passo errado é este:

    #server ip
    $ip='172.16.10.1';
    

    Você configurou o ip  do pfsense no lugar de configurar o ip do servidor que vai puxar o backup.

    a segurança do script é baseada no ip do servidor que guarda os backups e uma senha.

    if ($_SERVER["REMOTE_ADDR"]==$zabix_ip && $_REQUEST['pass']== $password)
    

    att,
    Marcello Coutinho

    Muito obrigado pelas boas vindas!

    Quanto ao script, não tinha prestado atenção nesse detalhe do remote_addr.

    Agora sim tá funcionando, e ainda agendado no crontab do Debian.



  • O tal aplicativo só funcionaria se você tivesse seu pfSense respondendo apenas por HTTP (o que é extremamente desaconselhável - sob praticamente qualquer cenário).

    O aplicativo funciona tb para https, basta adicionar a opcao -usessl, testado e aprovado.
    Agora gostaria de saber se não tem algum código malicioso no programa, alguém pode descobrir isso pra gente?



  • @kelsen:

    Agora gostaria de saber se não tem algum código malicioso no programa.

    Veja o comportamento da maquina que roda ele na internet, bloqueie todas as portas de saida e logue o que a maquina tentar.

    Veja a possibilidade de usar um dos scripts php deste topico, o códico é aberto e pelo menos o que eu fiz, está livre de código malicioso :)

    att,
    Marcello Coutinho



  • @marcelloc:

    Veja o comportamento da maquina que roda ele na internet, bloqueie todas as portas de saida e logue o que a maquina tentar.

    Acho que nessa maquina onde instalei não da pra fechar as portas de saida.

    Veja a possibilidade de usar um dos scripts php deste topico, o códico é aberto e pelo menos o que eu fiz, está livre de código malicioso :)

    Pelo que entendi, preciso do zabbix instalado? além do mais a maquina é windows, como posso executar esse php nele?
    Não tem como alguém ver o fonte do programa pra ver se há algo suspeito?

    Grato!



  • @kelsen:

    Pelo que entendi, preciso do zabbix instalado?

    Não

    @kelsen:

    além do mais a maquina é windows, como posso executar esse php nele?

    Só instalar o php ou php cli no seu windows

    @kelsen:

    Não tem como alguém ver o fonte do programa pra ver se há algo suspeito?

    Isso foge do contexto do fórum…



  • devo ter confundido por conta do nome Zabix no script.



  • Usa o Cobian Backup, faça backup do arquivo xml.

    /cf/conf/config.xml


Locked