## page was renamed from Baustelle/Trash/Daten verschlüsseln ## page was renamed from Daten verschlüsseln [[Fortgeschritten]] ## [[Diskussion(65250,Artikel überarbeiten: Daten verschlüsseln)]] [[Fehlerhaft(Diese Anleitung funktoniert nur eingeschränkt mit Edgy Eft! Es gibt Probleme bei der Passworteingabe und beim Einhängen verschlüsselter Partitionen während des Bootens.)]] {{{#!Wissen * [1]: [:Paketquellen freischalten: Bearbeiten von Paketquellen] * [2]: [:Pakete installieren: Installation von Paketen] * [3]: [:Terminal: Ein Terminal öffnen] * [4]: [:Editor: Einen Texteditor öffnen] }}} [[TableOfContents(2)]] Wenn auf der Festplatte des Rechners sensible Daten liegen, bietet es sich an, diese zu verschlüsseln. Prinzipiell lassen sich einzelne Dateien verschlüsseln, wirkliche Sicherheit bietet aber nur die weitgehende Verschlüsselung des Systems. = Verschlüsselung des Systems = Weitgehende Sicherheit ist nur erreichbar, wenn man alle Stellen bedenkt, an denen die zu schützenden Daten auftauchen können, und sei dies auch nur vorübergehend. "Gelöschte" Daten lassen sich nämlich mit entsprechendem Aufwand durchaus auslesen. Traditionell verhindert man dies, indem man die Daten beim Löschen mehrfach überschreibt. Dies ist bei modernen Dateisystemen jedoch prinzipbedingt nicht möglich. Folgende Bereiche müssen deshalb verschlüsselt werden: 1. die Daten selber, z.B. die Partition mit den persönlichen Ordnern ('''/home''') 1. die Auslagerungspartition (swap) 1. die temporären Dateien ('''/tmp''') 1. die Dateien in '''/var''', wo z.B. Druckaufträge zwischengespeichert sind. == Vorbereitung: Paketinstallation == Das folgende Paket muss installiert [2] werden: * '''cryptsetup''' (''universe'', [1]) == Einrichtung des Systems == Um einerseits unnötig viele Passworteingaben beim Systemstart zu vermeiden, andererseits aber die Datensicherung nicht zu erschweren, verwenden wir eine Partition für '''/home''' und eine weitere gemeinsame für '''/tmp''' und '''/var'''. Das hat den Vorteil, dass man auch ohne größere Anpassungen beim Systemstart nur zwei zusätzliche Passwörter, und nicht gleich drei eingeben muss. Besteht für '''/home''' noch keine eigene Partition, muss dies geändert werden. Für '''/tmp''' und '''/var''' muss ebenfalls eine Partition angelegt werden. [[Anchor(Partitionen-anlegen)]] == Anlegen der Partitionen für /home, /tmp und /var == Diese Schritte müssen von einer Live-CD aus erledigt werden, da die Systempartition betroffen ist. Sie werden mit dem graphischen Partitionierungsprogramm [:GParted:] vorgenommen. Beim Start mit der Live-CD muss ausnahmsweise ein Parameter eingegeben werden: {{{live noswap}}} verhindert die Nutzung von Swappartitionen, denn dies könnte die Bearbeitung der Partitionstabelle stören. === Verkleinerung der Systempartition === Zuerst muss die Systempartition verkleinert werden. Fünf GB sind meist angemessen, sofern nicht bereits mehr Platz auf dem Gerät belegt ist. === Verschieben der Swappartition === Die Leistung leidet, wenn die Swappartition zu weit hinten auf der Festplatte liegt. Sie ist also direkt an das Ende der Systempartition zu verschieben === Anlage der neuen Partitionen === Zwei Partitionen sind nun anzulegen: 1. Für die gemeinsame Partition für '''/tmp''' und '''/var''' genügen etwa ein bis zwei GB. Diese Partition sollte möglichst nach dem Swapbereich liegen. 1. Für die spätere '''/home'''-Partition kann man den restlichen verfügbaren Platz verwenden. Normalerweise wird man für beide Partitionen das ext3-Dateiystem wählen. Die Bezeichnungen der System- und der neuen Partitionen sollte man sich notieren. Auch die nächsten Schritte werden mit der Live-CD erledigt, also noch nicht neustarten. == Daten umverteilen == Die Daten, die derzeit noch auf der alten Partition liegen, müssen jetzt an den richtigen Ort verschoben werden. Diese Schritte finden von einer Live-CD aus und im Terminal statt. === Partitionen einbinden === '''/dev/hda1''' sei die Systempartition, '''/dev/hda5''' die Partition für '''/tmp''' und '''/var''', '''/dev/hda6''' sei die neue '''/home'''-Partition. Die Verzeichnisse zum Einbinden werden im Terminal [3] erzeugt mit {{{#!Befehl sudo mkdir -p /mnt/{root,crypt,home} }}} Die Partitionen werden eingehängt mit {{{#!Befehl sudo mount /dev/hda1 /mnt/root sudo mount /dev/hda5 /mnt/crypt sudo mount /dev/hda6 /mnt/home }}} === Daten verschieben === Falls sich das '''/home'''-Verzeichnis noch nicht auf der separaten Partition befindet, wird sein Inhalt so kopiert: {{{#!Befehl sudo cp -a /mnt/root/home/* /mnt/home/ }}} Die Verzeichnisse '''/tmp''' und '''/var''' werden so kopiert bzw. angelegt: {{{#!Befehl sudo mkdir -p /mnt/crypt/tmp2 sudo chmod 1777 /mnt/crypt/tmp2 sudo cp -a /mnt/root/var/* /mnt/crypt/ }}} '''/tmp''' wird nicht kopiert, sondern neu angelegt, weil der Inhalt beim Systemstart ohnehin automatisch gelöscht wird. Es wird also der Inhalt von /var nach /mnt/crypt kopiert und in diesem Verzeichnis noch ein Ordner /tmp2 angelegt, welcher später mit /tmp verlinkt wird. Der Ordner heißt /tmp2, da es bereits einen Ordner /tmp im neuen /var-Verzeichnis gibt. Den Inhalt der Partitionen kann man sich so anzeigen lassen: {{{#!Befehl ls /mnt/crypt ls /mnt/home }}} Dort sollten sich die Verzeichnisse '''/tmp2''' und der ursprüngliche Inhalt von '''/var''' bzw. alle persönlichen Ordner der Benutzer befinden. === [Falls vorhanden: /home aus der fstab entfernen] === Wurde bereits früher eine separate Partition für '''/home''' verwendet, darf diese beim nächsten Start nicht eingebunden werden. Der Eintrag in '''/etc/fstab''' ist also in einem Editor mit Root-Rechten [4] auszukommentieren. Damit ist dieser Schritt erledigt. Nun sollte wieder das normale System gestartet werden. Nicht in der graphischen Oberfläche einloggen, sondern mit [[Tasten(Strg+Alt+F1)]] auf eine Konsole wechseln und dort anmelden. == Konfiguration der Cryptopartitionen == Die zu verschlüsselnden Partitionen sind in der Datei '''/etc/crypttab''' gelistet, die in einem Editor mit Root-Rechten [4] bearbeitet werden kann. Außer der Datenpartition wird auch die Swappartition hier gelistet. {{{#!Text # crypt /dev/hda5 none vol_id home /dev/hda6 none vol_id swap0 /dev/hda2 /dev/urandom swap }}} An erster Stelle wird der gewünschte Name des verschlüsselten Gerätes eingetragen, an zweiter Stelle die zu verschlüsselnde Partition bzw. das zu verschlüsselnde Volume, falls man EVMS verwendet. Die zusätzlichen Optionen für den Swap geben an, dass als Schlüssel eine Zufallszahl verwendet und das verschlüsselte Gerät nach Einrichtung als Swap formatiert werden soll. == Partitionen verschlüsseln == Beim ersten Mal legen wir das Cryptogerät noch von Hand an, um eine doppelte Passwortabfrage zu erhalten. Später beim automatischen Start der Verschlüsselung wird das Passwort natürlich nur einmal pro Partition abgefragt. Das wäre jetzt im Fall eines Vertippers fatal, also: {{{#!Befehl sudo cryptsetup create -y crypt /dev/hda5 sudo cryptsetup create -y home /dev/hda6 }}} Jetzt kommt der abenteuerliche Teil: die folgenden Befehle wandeln die bestehenden Partitionen um. Sie dürfen dabei nicht eingebunden sein. Die enthaltenen Dateisysteme samt Inhalt sind danach über das verschlüsselte Gerät unversehrt zugänglich. {{{#!Befehl sudo dd if=/dev/hda5 of=/dev/mapper/crypt sudo dd if=/dev/hda6 of=/dev/mapper/home }}} {{{#!Hinweis Das Umwandeln kann abhängig von der Größe der umzuwandelnden Partitionen und der Performance der eingesetzten Hardware ziemlich lange dauern. Beispiel: crypt (23 GB) und home (260 GB), bei meinem Rechner eine Bearbeitung von 4,2 MB/s für die 23 GB und 3,1 MB/s für die 260 GB macht eine Gesamtzeit des Prozesses von etwa '''25,5 Stunden''' (scheint so dass größere Partitionen langsamer verarbeitet werden). Nun hängt die Rate der bearbeiteten MBs pro Sekunde natürlich stark von eurer Hardware ab. Also sollte man das ganze mit Bedacht starten. Lieber vorm schlafen gehen und daran denken das man am morgigen Tage villeicht auch noch nicht an seinen Rechner kann. ''(Ergänzung von tobitious)'' Man braucht eigentlich nicht die komplette Platte lowlevel zu kopieren, das dauert erstens sehr lange und zweitens werden Fragmentierung und leere Blöcke auch 1:1 kopiert, was man eigentlich nicht will. Besser ist: von /home und /var vorher ein Backup auf Dateisystemebene mit tar oder cpio zu machen (man kann das Archiv z.B. unter /root/ erstellen lassen), anschliessend mit mkfs.ext3 auf den Zielpartitionen /dev/mapper/crypt und /dev/mapper/home ein Filesystem anzulegen es zu mounten und mit tar bzw. cpio das Backuparchiv dorthin zu entpacken. ''(Ergänzung von mdkuser)'' }}} Nun sollte bei Zugriff auf die "originale" Partition nur noch Datenmüll zu sehen sein, die alten Inhalte sind über /dev/mapper/home zugänglich. Wir testen nun die Korrektheit der umgewandelten Partition mit {{{#!Befehl sudo fsck /dev/mapper/crypt sudo fsck /dev/mapper/home }}} Zur Sicherheit können wir die Partition auch schon einmal einbinden, um ihre Inhalte zu betrachten: {{{#!Befehl sudo mount /dev/mapper/crypt /mnt sudo mount /dev/mapper/home /home }}} == Eintrag der neuen Dateisysteme == In der '''/etc/fstab''', mit einem Editor mit Root-Rechten[4] zu bearbeiten, sollten nun noch Einträge für die neuen oder geänderten Partitionen wie folgt erstellt bzw. angepasst werden: {{{#!Text /dev/mapper/swap0 none swap sw 0 0 /dev/mapper/crypt /var ext3 defaults 0 2 /dev/mapper/home /home ext3 defaults 0 2 }}} == Alte Daten zur Seite räumen == Nun müssen noch die alten Daten aus dem Weg geräumt werden, damit auf die neuen, verschlüsselten Daten zugegriffen werden kann. Hierzu starten wir noch einmal eine Live-CD und binden die Systempartition ein: {{{#!Befehl mount /dev/hda1 /mnt }}} Zur Sicherheit benennen wir die alten, unverschlüsselten Daten erst mal um, statt sie gleich zu löschen. Sollte irgend etwas doch nicht funktionieren, ist der Weg zurück so besonders einfach. Lediglich das beim Systemstart ohnehin leere '''/tmp''' wird sogleich gelöscht. Dann werden leere Verzeichnisse bzw. Links auf die verschlüsselten Daten erstellt. {{{#!Befehl sudo mv /mnt/home /mnt/noenc-home sudo mkdir /mnt/home sudo rm -rf /mnt/tmp sudo ln -s /var/tmp2 /mnt/tmp sudo mv /mnt/var /mnt/noenc-var }}} Im Ordner /var, wo die Crypt-Partition eingehängt wird, müssen auf jeden Fall noch die Ordner lock, run und tmp angelegt und mit den nötigen Zugriffsrechten versehen werden (andernfalls kommt es zu Fehlern beim Booten): {{{#!Befehl sudo mkdir -p /mnt/var/lock sudo chmod 1777 /mnt/var/lock sudo mkdir -p /mnt/var/run sudo chmod 755 /mnt/var/run sudo mkdir -p /mnt/var/tmp sudo chmod 1777 /mnt/var/tmp }}} {{{#!Hinweis Es ist wichtig das /var direkt in ein Verzeichnis gemounted wird. Seit Dapper gibt es sonst Probleme, da Dapper auf /var gewisse Aktionen ausführt, bevor die Crypt-Partitionen eingehängt werden. Ist /var ein Symlink, kommt es an dieser stelle sonst zu Problemen. Siehe auch [http://forum.ubuntuusers.de/topic/34490/] }}} == Erster Start mit Verschlüsselung == Beim nächsten Start des installierten Systems wird nach dem Passwort für die verschlüsselten Partitionen gefragt. [[Bild(Daten_verschlüsseln/crypt-passwort.png,600,zentriert)]] Wenn man sich vertippt, hat man Pech gehabt und landet auf einer Konsole. Wenn man hier {{{#!Befehl /etc/init.d/cryptdisks restart }}} eingibt, kann man die Passworteingaben wiederholen. Nach Druck auf [[Tasten(Strg+d)]] wird der Systemstart dann fortgesetzt. Funktioniert alles, müssen die zuvor umbenannten Daten noch gelöscht werden: {{{#!Befehl sudo rm -rf /noenc* }}} == Verbleibende Datenspuren vernichten == Im Prinzip könnten nun auf der Systempartition noch die Daten aus den verschobenen Verzeichnissen zu finden sein. Diese überschreiben wir nun, indem wir den gesamten leeren Platz auf der Partition mit Zufallszahlen auffüllen[[Anmerkung(Auf diese Weise ist eine sichere Löschung natürlich durchaus zu erreichen - nur geht das eben nicht mit vertretbarem Aufwand im laufenden Betrieb)]]. Von einer Live-CD aus geht das so: Systempartition einbinden mit {{{#!Befehl sudo mount /dev/hda1 /mnt }}} Zufallszahlen in eine Datei schreiben, bis der Platz erschöpft ist, und die Datei dann wieder löschen: {{{#!Befehl sudo dd if=/dev/urandom of=/mnt/zufall sudo rm /mnt/zufall }}} Das war's endlich - alle sensiblen Daten befinden sich jetzt ausschließlich auf verschlüsselten Partitionen. == Schlüssel ändern == Prinzipiell ist es ganz einfach, es gibt nur ein praktisches Problem: Da die Partitionen, deren Schlüssel man ändern möchte, nicht in Benutzung sein dürfen, benötigt man ein Wartungssystem, auf dem cryptsetup installiert ist. Die Ubuntu-Desktop-CD erfüllt diese spezielle Anforderung leider nicht, auch Knoppix (4.0.2) enthält cryptsetup nicht einmal auf der DVD. Vermutlich lässt es sich in einem Knoppix-Livesystem aber nachinstallieren. Das Vorgehen ist folgendermaßen: * Jeweils ein verschlüsseltes Gerät mit dem alten und neuen Schlüssel anlegen: {{{#!Befehl sudo cryptsetup create crypto-alt /dev/hda5 sudo cryptsetup create -y crypto-neu /dev/hda5 }}} Nun sollte man unbedingt noch testen, ob die verschlüsselte Partition korrekt angesprochen wird. Hätte man sich beim Passwort vertippt, würde sonst gleich nur Datenmüll umgewandelt. {{{#!Befehl sudo fsck /dev/mapper/crypto-alt }}} Wenn keine Fehler gemeldet werden, kann es losgehen. Daten vom alten aufs neue Gerät kopieren: {{{#!Befehl sudo dd if=/dev/mapper/crypto-alt of=/dev/mapper/crypto-neu }}} Neu starten, und bei der Passwortabfrage künftig den neuen Schlüssel verwenden. == Vereinfachung: Schlüsseldiskette == Wenn man beim Start nicht immer zwei Passwörter eingeben möchte, kann man sich einer Diskette oder eines USB-Sticks bedienen, die eine Datei mit dem Schlüssel der Partitionen enthalten (und selbst auch verschlüsselt sein können). Siehe dazu [:Keydisk]. = Verschlüsselung einzelner Dateien = Um einzelne Dateien zu verschlüsseln, genügt die Installation [1] von [http://www.gnupg.org GnuPG]; die folgenden Pakete werden benötigt: * '''gnupg''' * '''gnupg-doc''' (Optional, enthält die Dokumentation) Wer die Dokumentation mitinstalliert, kann sie mit dem Browser unter der Adresse '''/usr/share/doc/gnupg-doc/GNU_Privacy_Handbook/de/html/book1.html''' lesen. Die Verschlüsselung selbst findet im Terminal [3] statt. Ein einfaches Kommando wie {{{#!Befehl gpg -c DATEINAME }}} genügt, um die Datei DATEINAME zu verschlüsseln. Mit {{{#!Befehl gpg --decrypt DATEINAME.gpg > Datei }}} oder {{{#!Befehl gpg -d DATEINAME.gpg > Datei }}} packt man die Datei wieder aus. gpg erfragt beim Ver- und Entschlüsseln natürlich die gpg-Passphrase. Der große Nachteil dieser Methode ist, dass man die Datei jedesmal manuell ver- und entschlüsseln muss. Desweiteren muss man die Orginaldatei jedesmal löschen. Etwas mühselig auf die Dauer, und die gelöschten Orginal-Dateien sind unter Umständen wieder herstellbar... ## ---> fixme [:gpg-verschlüsselung_mit_nautilus_skript: Vereinfachte GPG-Verschlüsselung über Nautilus] <--- = Veraltet: cryptoloop = Dieses Verfahren ist veraltet und sollte in neuen Installationen nicht mehr eingesetzt werden. Die Unterstützung im Kernel dafür entfällt. ---- * [:Kategorie/Sicherheit:] [[Tags(verschlüsselung)]]