Automatisierte inkrementelle Sicherungen auf einem externen Laufwerk

8

Hintergrund

Ein Client benötigt eine automatisierte Sicherungslösung für ein externes Laufwerk (die wöchentlich außerhalb des Unternehmens entfernt werden muss). Normalerweise würde ich rsnapshot vorschlagen (oder vielleicht ein benutzerdefiniertes rsyncSkript einführen ), aber diese Frage ist etwas komplizierter.

Das auf Arch Linux basierende System ist kopflos und daher muss die Lösung vollständig automatisiert sein, ohne dass der Benutzer eingreifen muss.

Ein ideales Szenario wäre wie folgt:

  1. Der Benutzer schließt eine USB-Festplatte an
  2. Eine vollständige inkrementelle Sicherung wird durchgeführt
  3. Die Festplatte ist nicht gemountet
  4. Der Benutzer wird benachrichtigt, dass die Festplatte vom Stromnetz getrennt werden kann

Vorschlag

Meine vorgeschlagene Lösung besteht aus:

  1. Eine udevRegel stellt das Laufwerk automatisch bereit
  2. Die Sicherung wird gestartet mit:

    1. Die gleiche udevRegel löst auch ein rsnapshotSkript aus
    2. Ein inotify create- Ereignis erkennt den neuen Einhängepunkt und wird ausgelöstrsnapshot
  3. Nach dem rsnapshotBeenden umountwird auf dem Laufwerk ausgeführt

  4. Mögliche Möglichkeiten zur Benachrichtigung der Festplatte können entfernt werden:

    1. Das CD-Laufwerk wird geöffnet
    2. Über den PC-Lautsprecher wird ein Ton abgespielt

Wenn zu irgendeinem Zeitpunkt ein Fehler aufgetreten ist, senden Sie eine E-Mail an den Benutzer und entfernen Sie das Laufwerk.

Fragen

  1. Mein Vorschlag scheint machbar, aber gibt es offensichtliche Mängel? Wie kann ich es robust machen?
  2. Wie kann ich aus Sicherheitsgründen sicherstellen, dass die angeschlossene Festplatte dem Benutzer gehört? sshSchlüssel? Laufwerksetikett?
  3. Gibt es bestehende (Linux) Lösungen, die dies umfassen?
tlvince
quelle

Antworten:

7

Ihre Lösung scheint jedoch relativ geeignet zu sein:

  • Stellen Sie sicher, dass das rsnapshotSkript das Blockgerät nicht kennt. Adressieren Sie das Dateisystem idealerweise anhand seiner UUID oder Bezeichnung, um Gemetzel zu vermeiden.
  • Zeitüberschreitungen hinzufügen. Auf diese Weise kann etwas, das wir nicht kennen oder das dazu führt, dass das Skript niemals beendet wird, als Fehler behandelt werden, anstatt auf unbestimmte Zeit fortzufahren.
  • Sie geben an, dass am Ende "[i] wenn zu irgendeinem Zeitpunkt ein Fehler aufgetreten ist, senden Sie eine E-Mail an den Benutzer und entfernen Sie das Laufwerk" - was passiert, wenn das Laufwerk nicht abgemeldet werden kann oder wenn das Aufheben der Bereitstellung fehlschlägt? Was passiert, wenn die E-Mail fehlschlägt? Stellen Sie sicher, dass Sie Failafes in Ihr System einbauen.
  • Für die grundlegende Sicherheit sollte die UUID in Ordnung sein (es sei denn, ein Angreifer kennt Ihre UUID möglicherweise). Wenn die Sicherheit jedoch ein größeres Problem darstellt, sollten Sie einige Daten in den Codebereich des MBR schreiben (Bytes 0-440) Lassen Sie das Skript vor Beginn der Sicherung darauf prüfen. Sie sollten gewarnt werden, dass dies mehr Sicherheit durch Dunkelheit als alles andere ist. In dieser Situation sehe ich jedoch keine leicht verfügbaren Methoden, die überlegen sind. Wenn Sie jedoch den gesamten Weg gehen möchten, können Sie feststellen, ob das Laufwerk autorisiert ist, indem Sie ein verschlüsseltes Zertifikat analysieren, das auf der Festplatte gespeichert ist. WannudevErkennt das Laufwerk, entschlüsselt das Skript das Zertifikat mit seinem Schlüssel. Das Zertifikat enthält Parameter, die sich auf das Laufwerk beziehen, z. B. Seriennummer, Modellnummer, Kapazität usw. des Laufwerks. Anschließend werden die aus dem verschlüsselten Zertifikat extrahierten Parameter mit den Parametern verglichen, die bei der Analyse des Laufwerks angezeigt werden. Wenn die Parameter übereinstimmen, wird das Laufwerk als authentisch eingestuft, andernfalls wird das Laufwerk abgelehnt und das Skript beendet.

Es gibt bereits Linux-Lösungen, die in diesen Zuständigkeitsbereich fallen. Für Ihre spezifischen Anforderungen ist es jedoch meiner Meinung nach besser, eine maßgeschneiderte Lösung zu erstellen, als mit der Quelle anderer Programme herumzuspielen, um sie dazu zu bringen, das zu tun, was Sie wollen.

Um zufällige Daten in den Codebereich des MBR zu schreiben, nach denen Sie dann suchen können, gehen Sie wie folgt vor dd if=/dev/urandom of=/dev/sdX bs=440 count=1.

Chris Down
quelle
Danke Chris. Ich hätte nicht über die Verwendung von UUIDs nachgedacht, was die Dinge erheblich vereinfacht. Könnten Sie aus Interesse Links zu vorhandenen Lösungen teilen? Sie könnten mir weitere Ideen geben oder anderen Lesern nützlich sein.
Seit dem
Ich dachte, ich erinnere mich an einige, aber ich kann sie jetzt nicht finden. Es scheint jedoch ziemlich interessant zu sein, vielleicht werde ich selbst eines entwickeln. Ich lasse es dich wissen.
Chris Down