Copias de seguridad incrementales automatizadas a una unidad externa


8

Antecedentes

Un cliente necesita una solución de copia de seguridad automatizada en un disco externo (que se llevará fuera del sitio semanalmente). Por lo general, sugiero rsnapshot (o tal vez implementar un rsyncscript personalizado ), pero esta pregunta es un poco más complicada.

El sistema basado en Arch Linux no tiene cabeza y, por lo tanto, la solución debe estar completamente automatizada, sin necesidad de intervención del usuario.

Un escenario ideal sería el siguiente:

  1. El usuario conecta un disco duro USB
  2. Se realiza una copia de seguridad incremental completa
  3. El disco duro está desmontado
  4. Se notifica al usuario que el disco duro se puede desconectar

Propuesta

Mi solución propuesta consiste en:

  1. Una udevregla monta automáticamente la unidad
  2. La copia de seguridad se inicia con:

    1. La misma udevregla también activa un rsnapshotscript
    2. Un evento inotify create detecta el nuevo punto de montaje y dispararsnapshot
  3. Después de las rsnapshotsalidas, umountse ejecuta en la unidad

  4. Se pueden eliminar las posibles formas de notificar el disco duro:

    1. La unidad de CD se abre
    2. Se reproduce un sonido a través del altavoz de la PC

Si se produjo un error en algún momento, envíe un correo electrónico al usuario y desmonte la unidad.

Preguntas

  1. Mi propuesta parece factible, pero ¿hay defectos obvios? ¿Cómo puedo hacerlo robusto?
  2. Por razones de seguridad, ¿cómo puedo asegurarme de que el disco duro conectado sea del usuario? ssh¿llaves? Etiqueta de unidad?
  3. ¿Existen soluciones (Linux) existentes que abarquen esto?

Respuestas:


7

Sin embargo, su solución parece relativamente adecuada:

  • Asegúrese de que el rsnapshotscript no presume conocer el dispositivo de bloqueo. Lo ideal es abordar el sistema de archivos por su UUID o etiqueta para evitar la carnicería.
  • Agregar tiempos de espera. De esta manera, si algo sale mal de lo que no sabemos, o si algo hace que el script nunca termine, puede tratarse como un error en lugar de continuar indefinidamente.
  • Usted afirma que al final que "[i] f se produjo un error en cualquier momento, envíe un correo electrónico al usuario y desmonte la unidad": ¿qué sucede si no puede desmontar la unidad o si el desmontaje es donde falla? ¿Qué sucede si falla el correo electrónico? Asegúrese de construir a prueba de fallas en su sistema.
  • Para seguridad básica, el UUID debe estar bien (a menos que un atacante pueda conocer su UUID), sin embargo, si la seguridad es más preocupante, considere escribir algunos datos en el área de código del MBR (bytes 0-440), y hacer que el script lo revise antes de comenzar la copia de seguridad Se le debe advertir que esto es más seguridad a través de la oscuridad que cualquier otra cosa, sin embargo, en esta situación no veo ningún método fácilmente disponible que sea superior. Sin embargo, si desea recorrer el camino completo, puede determinar si la unidad está autorizada analizando un certificado cifrado almacenado en el disco. Cuandoudevdetecta la unidad, el script descifra el certificado con su clave. El certificado contiene parámetros relacionados con la unidad, como el número de serie de la unidad, el número de modelo, la capacidad, etc., luego compara los parámetros extraídos del certificado cifrado con los parámetros que se ven al analizar la unidad. Si los parámetros coinciden, se determina que la unidad es auténtica; de lo contrario, la unidad se rechaza y el script termina.

Sin embargo, existen soluciones Linux existentes que caen dentro de este ámbito. Para sus necesidades específicas, creo que sería mejor hacer una solución a medida en lugar de jugar con la fuente de otros programas para que hagan lo que desea.

Para escribir datos aleatorios en el área de código del MBR, que luego puede verificar, haga algo como dd if=/dev/urandom of=/dev/sdX bs=440 count=1.


Gracias Chris No hubiera pensado en usar UUID, lo que simplifica mucho las cosas. Por interés, ¿podría compartir algún enlace de soluciones existentes? Podrían darme algunas ideas más o ser útiles para otros lectores.
tlvince

Pensé que recordaba algunos, pero no puedo encontrarlos ahora. Sin embargo, parece bastante interesante, tal vez desarrollaré uno yo mismo. Yo lo haré saber.
Chris Down
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.