Backups incrementais automatizados para uma unidade externa

7

Antecedentes

Um cliente precisa de uma solução de backup automatizada para uma unidade externa (para ser retirada semanalmente). Eu normalmente sugeriria rsnapshot (ou talvez lançando um script rsync personalizado), mas essa questão está um pouco mais envolvida.

O sistema baseado em Arch Linux é sem cabeça e, portanto, a solução deve ser totalmente automatizada, não exigindo intervenção do usuário.

Um cenário ideal seria o seguinte:

  1. O usuário conecta-se a um disco rígido USB
  2. Um backup incremental completo é feito
  3. O disco rígido está desmontado
  4. O usuário é notificado de que o disco rígido pode ser desconectado

Proposta

Minha solução proposta consiste em:

  1. Uma regra udev monta automaticamente a unidade
  2. O backup é iniciado com:

    1. A mesma regra udev também aciona um script rsnapshot
    2. Um evento inotify create detecta o novo ponto de montagem e aciona rsnapshot
  3. Depois que rsnapshot sair, umount será executado na unidade

  4. Possíveis maneiras de notificar o disco rígido podem ser removidas:

    1. A unidade de CD é aberta
    2. Um som é reproduzido pelo alto-falante do PC

Se um erro ocorreu em qualquer momento, envie um email para o usuário e desmonte a unidade.

Perguntas

  1. Minha proposta parece viável, mas existem falhas óbvias? Como posso torná-lo robusto?
  2. Por motivos de segurança, como posso ter certeza de que o disco rígido conectado é o usuário? ssh keys? Rótulo de unidade?
  3. Existem soluções (Linux) que abrangem isso?
por tlvince 15.09.2011 / 15:02

1 resposta

6

Sua solução parece relativamente adequada, no entanto:

  • Certifique-se de que o script rsnapshot não presuma saber o dispositivo de bloco. O ideal é endereçar o sistema de arquivos pelo seu UUID ou rótulo para evitar a carnificina.
  • Adicione tempos limite. Dessa forma, se algo der errado e não soubermos ou algo fizer com que o script nunca termine, isso pode ser tratado como um erro, em vez de continuar indefinidamente.
  • Você afirma que, no final, "ocorreu um erro a qualquer momento, envia um email ao usuário e desmonta a unidade" - o que acontece se não for possível desmontar a unidade ou se a desmontagem falhar? O que acontece se o email falhar? Certifique-se de criar failafes em seu sistema.
  • Para segurança básica, o UUID deve ser bom (a menos que um invasor possa ter conhecimento de seu UUID), no entanto, se a segurança é mais preocupante, considere gravar alguns dados na área de código do MBR (bytes 0-440 ), e ter o script verifique antes de iniciar o backup. Você deve ser avisado que isso é mais segurança através da obscuridade do que qualquer outra coisa, no entanto, nesta situação eu não vejo nenhum método facilmente disponível que seja superior. Se você quiser percorrer todo o caminho, no entanto, poderá determinar se a unidade está autorizada pela análise de um certificado criptografado armazenado no disco. Quando udev detecta a unidade, o script descriptografa o certificado usando sua chave. O certificado contém parâmetros relacionados à unidade, como o número de série da unidade, número do modelo, capacidade, etc., e compara os parâmetros extraídos do certificado criptografado com os parâmetros vistos ao analisar a unidade. Se os parâmetros corresponderem, a unidade será determinada como autêntica, caso contrário, a unidade será rejeitada e o script será finalizado.

Existem soluções Linux existentes que se enquadram nesta missão, no entanto, para as suas necessidades específicas, penso que seria melhor criar uma solução personalizada em vez de mexer na fonte de outros programas para fazê-los fazer o que pretende. .

Para escrever dados aleatórios na área de código do MBR, que você pode verificar, faça algo como dd if=/dev/urandom of=/dev/sdX bs=440 count=1 .

    
por 15.09.2011 / 15:19