Cloud-Encryption
Verschlüsselung, Datensicherung, Cloud und mehr
(En)CryptFS verschlüsselt Daten auf dem Fileserver. Diese werden verschlüsselt in beliebigen Cloud-Storage (webdav) gesichert (rsync), und können von beliebigen Geräten - sogar einem Live Linux auf einem USB-Stick - im Notfall gelesen werden.
Ich habe ein Knoppix mit verschlüsselter Datenpartition auf einem USB-Stick an meinem Schlüsselbund und kann damit von jedem (fremden) PC vom USB-Stick booten, eine VPN-Verbindung nach Hause aufbauen oder ein verschlüsseltes Backup-Verzeichnis aus dem Cloud-Storage mounten und auf dieses entschlüsselt zugreifen. Meine Notfall Datensicherung liegt also verschlüsselt in einem Cloud-Storage (falls meine Hütte mal abbrennt oder absäuft, oder Stromschlag alle 5 Harddisks zuhause zerstört, wo die Daten redundant liegen).
Verschlüsselung
Nachdem meine 2TB Harddisk einen Defekt hatte, und ich 2 Wochen gebraucht habe, die Daten runter zu kratzen und anschliessend zu löschen (dd dauert bei einer defekten 2TB Disk ziemlich lange), habe ich mich entschlossen meine kritischen Daten zu verschlüsseln. Von 3 neuen Festplatten war prompt eine sofort wieder defekt, freilich erst, nachdem ich diese mit 2TB in einem RAID eingebunden und gesynced hatte. Garantie heisst: zurück zu AMAZONE ... also sollten keine Daten mehr drauf liegen - bin extrem genervt.
Problem: Der (XEN-) Server muss vollautomatisch starten, der Schlüssel darf nicht auf den Platten liegen!
Lösung: Ich speicher den Schlüssel auf einen USB-Stick, und kopiere diesen beim booten des XEN-Host in den RAM (tmpfs)!
Die virtuellen Server lesen den Schlüssel bedarfsweise per ssh vom XEN Hostsystem.
root@m450# ls -l /etc/EncFS.PWD lrwxrwxrwx 1 root root 18 Sep 9 17:38 /etc/EncFS.PWD -> /var/run/EncFS.PWD root@m450:~# df /var/run Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf tmpfs 35780 908 34872 3% /run root@m450:~# cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. ssh vm01 'cat /root/USB-Stick/EncFS.PWD' > /etc/EncFS.PWD # USB-Stick is mounted in virtual System vm01
Der Fileserver benötigt diesen Schlüssel zum mounten der verschlüsselten Filesystems. Dazu wird mit ein Helper-Skript benötigt, welches in der fstab eingetragen wird:
root@srv:~# cat /usr/local/sbin/encfs.sh #!/bin/sh encfs --public --extpass="ssh m450 cat /etc/EncFS.PWD" $* root@srv:~# cat /etc/fstab | grep encfs /usr/local/sbin/encfs.sh#/srv/crypt /srv/daten fuse noauto,kernel_cache,nofail 0 0 /usr/local/sbin/encfs.sh#/backup/snapshot/latest/srv/crypt /backup/snapshot-latest fuse noauto,nofail,ro 0 0
Die Daten liegen verschlüsselt im Verzeichnis /srv/crypt, und werden entschlüsselt unter /srv/daten eingebunden und vom Fileserver zur Verfügung gestellt (CIFS, NFS).
Datensicherung
Jetzt wo die Daten verschlüsselt sind, können diese an beliebige Orte gesichert werden. Ich benutze zur Sicherung weiterhin rsync, jeweils den letzten Snapshot sichere jede Nacht in verschiedene Cloud-Speicher (T-Online, 1blu, ...).
Die Datensicherung legt Snapshots im Verzeichnis /backup/snapshot an, welche vom Fileserver bei Bedarf (readonly!) gemounted werden können.
Das verschlüsselte Sicherungsverzeichnis /backup/snapshot/latest/srv/crypt wird jede Nacht per rsync in Cloud-Storage gesichert.
Cloud Storage
Den Cloud Storage binde ich mit webdav auf meinem Fileserver ein (T-Online), oder kann sogar direkt per ssh rsync verwenden (1blu). Webdav kann man von inzwischen überall direkt mounten (Windows und Linux Clients), sehr praktisch. Ich hab alles notwendige auf einem Knoppix-USB Stick installiert, von dem ich booten kann.