20.6 Verschlüsselung
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 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 nicht möglich.
Folgende Bereiche müssen deshalb verschlüsselt werden:
- die Daten selber, z. B. die Partition mit den persönlichen Ordnern (/home)
- die Auslagerungspartition (swap)
- die temporären Dateien (/tmp)
- die Dateien in /var, in denen z. B. Druckaufträge zwischengespeichert sind
20.6.1 Einrichtung des Systems
Um die oben genannten Partitionen zu verschlüsseln, brauchen Sie das Programm cryptsetup. Sie installieren dies bequem über
user$ apt-get install cryptsetup
Um einerseits unnötig viele Passworteingaben beim Systemstart zu vermeiden, andererseits aber die Datensicherung nicht zu erschweren, verwenden Sie eine Partition für /home und eine weitere gemeinsame für /tmp und /var. Sie brauchen dementsprechend beim Systemstart nur zwei zusätzliche Passwörter. Besteht für /home noch keine eigene Partition, muss dies geändert werden. Für /tmp und /var muss ebenfalls eine Partition angelegt werden.
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 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 GByte 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:
Für die gemeinsame Partition für /tmp und /var genügen etwa ein bis zwei GByte. Diese Partition sollte möglichst hinter dem Swapbereich liegen. |
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 sollten Sie sich notieren. Auch die nächsten Schritte werden mit der Live-CD erledigt, also noch nicht neu starten.
- 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 erzeugt mit
user$ sudo mkdir /mnt/{root,crypt,home}
-
- Die Partitionen werden eingehängt mit
user$ sudo mount /dev/hda1 /mnt/root user$ sudo mount /dev/hda5 /mnt/crypt user$ sudo mount /dev/hda6 /mnt/home
- Daten verschieben
-
- Falls sich das /home -Verzeichnis noch nicht auf der separaten Partition befindet, wird sein Inhalt mit folgendem Befehl an die entsprechende Stelle kopiert:
user$ sudo cp -a /mnt/root/home/* /mnt/home/
-
- Die Verzeichnisse /tmp und /var werden so kopiert bzw. angelegt:
user$ sudo mkdir /mnt/crypt/tmp user$ sudo chmod 1777 /mnt/crypt/tmp user$ 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. Den Inhalt der Partitionen kann man sich so anzeigen lassen:
user$ ls /mnt/crypt user$ ls /mnt/home
-
- Dort sollten sich die Verzeichnisse /tmp und /var bzw. alle persönlichen Ordner der Benutzer befinden. Damit ist dieser Schritt erledigt. Nun sollte wieder das normale System gestartet werden. Loggen Sie sich bitte nicht in der graphischen Oberfläche ein, sondern wechseln Sie mit (Strg) + (Alt) + (F1) auf eine Konsole und melden Sie sich dort an.
20.6.2 Konfiguration der Cryptopartitionen
Die zu verschlüsselnden Partitionen sind in der Datei /etc/crypttab gelistet, die in einem Editor mit Root-Rechten bearbeitet werden kann. Die Swappartition wird hier ebenfalls angezeigt.
# <target device><source device><key file><options> crypt /dev/hda5 home /dev/hda6 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 weiteren 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.
20.6.3 Umwandlung der unverschlüsselten Partitionen
Beim ersten Mal legen Sie 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:
user$ sudo cryptsetup create -y crypt /dev/hda5 user$ 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.
user$ sudo dd if=/dev/hda5 of=/dev/mapper/crypt user$ sudo dd if=/dev/hda6 of=/dev/mapper/home
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. Sie testen nun die Korrektheit der umgewandelten Partition mit
user$ sudo fsck /dev/mapper/crypt user$ sudo fsck /dev/mapper/home
Zur Sicherheit können Sie die Partition auch schon einmal einbinden, um ihre Inhalte zu betrachten:
user$ sudo mount /dev/mapper/crypt /mnt user$ sudo mount /dev/mapper/home /home
Eintrag der neuen Dateisysteme
In der fstab (zu bearbeiten via sudo gedit /etc/fstab) sollten nun noch Einträge für die neuen oder geänderten Partitionen wie folgt erstellt bzw. angepasst werden:
/dev/mapper/swap none swap sw 0 0 /dev/mapper/crypt /crypt ext3 defaults 0 2 /dev/mapper/home /home ext3 defaults 0 2
Das Verzeichnis /crypt existiert noch nicht, Sie müssen es anlegen:
user$ sudo mkdir /crypt
Alte Daten zur Seite räumen
Nun müssen 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:
mount /dev/hda1 /mnt
Zur Sicherheit benennen Sie die alten, unverschlüsselten Daten erst einmal 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.
user$ sudo mv /mnt/home /mnt/noenc-home user$ sudo mkdir /mnt/home user$ sudo rm -rf /mnt/tmp user$ sudo ln -s /crypt/tmp /mnt/tmp user$ sudo mv /mnt/var /mnt/noenc-var user$ sudo ln -s /crypt/var /mnt/var
20.6.4 Der erste verschlüsselte Start
Beim nächsten Start des installierten Systems wird nach dem Passwort für die verschlüsselten Partitionen gefragt. Wenn man sich vertippt, hat man Pech gehabt und landet auf einer Konsole. Sie können die Passworteingaben wiederholen, wenn Sie hier
/etc/init.d/cryptdisks restart eingeben. Nach Druck auf (Strg) + (D) wird der Systemstart dann fortgesetzt. Funktioniert alles, müssen die zuvor umbenannten Daten noch gelöscht werden:
user$ sudo rm -rf /noenc*
20.6.5 Datenspuren vernichten
Im Prinzip könnten nun auf der Systempartition noch die Daten aus den verschobenen Verzeichnissen zu finden sein. Diese überschreiben Sie, indem Sie den gesamten leeren Platz auf der Partition mit Zufallszahlen auffüllen. Dies funktioniert mit Hilfe einer Live-CD. Die Systempartition binden Sie mit
user$ sudo mount /dev/hda1 /mnt
ein.
Danach schreiben Sie mit dem Befehl
user$ sudo dd if=/dev/urandom of=/mnt/zufall && \ sudo rm /mnt/zufall
Zufallszahlen in eine Datei, und zwar so lange, bis der Platz erschöpft ist. Danach löschen Sie diese Datei wieder. Nun befinden sich alle sensiblen Daten ausschließlich auf verschlüsselten Partitionen.