Sinn und Zweck
Ziel ist es, ein sicher verschlüsseltes und aktuelles Backup aller persönlichen Daten auf einem entfernten Recher zu lagern, und dies mit einem auch bei niedrigem Upload (z.B. mit einem normalen DSL-Anschluss) vertretbaren Aufwand.
Vorarbeit
Man benötigt einen entfernten Server mit ausreichend Speicherplatz, scp-Zugang und Zugriff auf das Programm rsync.
Des Weiteren benötigt man lokal TrueCrypt, ssh, und ebenfalls einiges an freiem Speicherplatz (um genau zu sein: etwas Mehr als die Menge an Daten, die man sichern möchte).
Vorgehen
Das Vorgehen kurz umrissen:
- Mit TrueCrypt ein verschlüsseltes Volume anlegen, das alle privaten Daten aufnehmen kann und noch Platz für zukünftige Daten hat
- Mit rsync die zu sichernden Daten in dieses Volume synchronisieren.
- Mit rsync das Volume auf den entfernten Rechner übertragen.
- Den ganzen Vorgang (halb-)automatisieren
Schritt 1: TrueCrypt-Volume anlegen
Zu erst muss man einen TrueCrypt-Container erstellen, der später die Backupdaten aufnehmen wird. In diesem Beispiel wird der komplette /home-Ordner gesichert, natürlich kann dieses Beispiel auch auf beliebige andere Ordner angewandt werden.
Um das Backup später vollautomatisch ablaufen lassen zu können, wird hier bei TrueCrypt nur ein Keyfile verwendet und darauf verzichtet ein Passwort zu setzen.
Dies ist in diesem Fall kein Nachteil, da der TrueCrypt-Container nur gegen externe Angreifer (die sich Zugang zu dem Rechner verschaffen, auf dem dann später unser Backup liegt) helfen soll. Angreifer, die auf dem lokalen PC root-Rechte erlangen, können sowieso den kompletten Inhalt von /home lesen.
Wem diese Lösung suspekt ist, der kann natürlich auch gerne bei TrueCrypt ein Passwort zusätzlich zum Keyfile verwenden - dann kann das Backup allerdings nicht mehr vollautomatisch ausgeführt werden.
Zu erst erzeugen wir uns daher ein gutes Keyfile. Das erzeugen wir möglichst zufällig aus /dev/urandom. Das anschließende chmod stellt sicher, dass wirklich nur root auf das Keyfile Zugriff besitzt:
> dd if=/dev/urandom of=./keyfile bs=512K count=2
2+0 Datensätze ein
2+0 Datensätze aus
1048576 Bytes (1,0 MB) kopiert, 0,614278 s, 1,7 MB/s
> chmod og-rwx ./keyfile
Als Nächstes können wir nun über TrueCrypt einen neuen Container erstellen (ich habe ihn in diesem Beispiel "home.tc" genannt). Dabei wird das soeben erstellte Keyfile ausgewählt, und das Passwortfeld leer gelassen. Als Dateisystem sollte man ext3 wählen.
Bleibt die Frage nach der Größe der Containerdatei. Ich habe mich bei mir dazu entschlossen das 1,5-Fache der aktuellen Datenmenge in /home zu wählen. Man sollte an dieser Stelle besser nicht knausern, was man letztendlich wählt hängt vor Allem davon ab wie schnell die Größe des /home-Verzeichnisses voraussichtlich anwächst.
Auf das Anlegen des TrueCrypt-Containers möcht ich an dieser Stelle nicht näher eingehen, da zu diesem Thema schon sehr viele gute Anleitungen existieren.
Das Backup vorbereiten
Ab diesem Punkt muss man mit root-Rechten arbeiten, um die Daten von allen Usern zuverlässig sichern zu können.
Zuerst sollte man dafür sorgen, dass der TrueCrypt-Container und das Keyfile außerhalb des /home-Verzeichnisses liegen. Anderfalls würde man das TrueCrypt-Verzeichnis bei Backup mitsichern...
Das keyfile habe ich nach /root verschoben, die Containerdatei kann in ein eigenes Verzeichnis (z.B. /backup), oder auf eine externe Festplatte. In diesem Beispiel habe ich sie nach /backup verschoben.
Nun sollte man sicherstellen, dass sowohl das Volume als auch das Keyfile nur von root lesbar sind:
chown root.root /backup/home.tc
chmod 700 /backup/home.tc
chown root.root /root/keyfile
chmod 700 /root/keyfile
Bevor man nun weiterarbeitet sollte man über TrueCrypt ein Headerbackup des home.tc-Containers erstellen, sowie ein Backup des keyfiles anlegen. Beides sollte man an einem sicheren Ort aufbewahren. Ein Verlust des Keyfiles bedeutet einen Verlust des Backups!