15.5 Verschlüsselung
Liegen auf der Festplatte des Rechners sensible Daten, bietet es sich an, diese zu verschlüsseln. Prinzipiell lassen sich auch einzelne Dateien verschlüsseln; wirkliche Sicherheit bietet aber nur die Verschlüsselung des Systems. Weitgehende Sicherheit ist nur erreichbar, wenn Sie alle Stellen bedenken, 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 noch auslesen. Traditionell verhindert man dies, indem man die Daten beim Löschen mehrfach überschreibt. Dies ist bei modernen Dateisystemen jedoch nicht möglich.
Ich stelle Ihnen an dieser Stelle zwei Möglichkeiten der Verschlüsselung vor:
- Integrierte Verschlüsselung
Ubuntu bietet Ihnen eine einfache Möglichkeit der integrierten Verschlüsselung. - Verschlüsselung anderer Partitionen
Mit Hilfe des Programms cryptsetup haben Sie weitere vielfältige Möglichkeiten der Verschlüsselung.
15.5.1 Integrierte Verschlüsselung
In Ubuntu können Sie bereits während der Installation die Möglichkeit der automatischen Verschlüsselung Ihres persönlichen Verzeichnisses nutzen. Dies geschieht im Dialogfenster, in dem Sie auch Ihren Namen angeben. Die Verschlüsselung geschieht über eCryptfs, ein stapelbares verschlüsselndes Dateisystem, das über das persönliche Verzeichnis gelegt wird. Die eigentlichen Daten Ihres persönlichen Verzeichnisses und einige Schlüsseldateien liegen in einer Datei namens /home/.ecryptfs. Sie dürfen diese Datei in Anbetracht des Verlustes Ihrer Daten auf keinen Fall löschen oder manipulieren.
Systempasswort
Wenn Sie ein persönliches Verzeichnis verschlüsseln, werden nahezu alle Dateien und Verzeichnisse eines Benutzers in seinem verschlüsselten Verzeichnis angelegt (/home/.ecryptfs/Benutzer) und nicht in dem regulären (unverschlüsselten) Verzeichnis /home/Benutzer. Das Verzeichnis wird mit Ihrem Anmeldepasswort und einem zusätzlichen Systempasswort geschützt. Sie können dieses Systempasswort in Erfahrung bringen, indem Sie ein Terminal öffnen und den Befehl ecryptfs-unwrap-passphrase eingeben.
Abbildung 15.12 Der erste Start einer verschlüsselten Installation
Nachträglich aktivieren und neue Benutzer hinzufügen
Nachträglich aktivieren lässt sich die Verschlüsselung allerdings nur über die Kommandozeile. Dies ist je nach dem Umfang Ihres persönlichen Verzeichnisses mehr oder weniger aufwendig. Prinzipiell sollten Sie immer ein Backup Ihrer Daten machen, bevor Sie etwas an Ihrem persönlichen Verzeichnis verändern. Des Weiteren sollten Sie genügend Speicherplatz frei haben, da der Inhalt Ihres persönlichen Verzeichnisses bei der Verschlüsselung kopiert werden muss. Starten Sie das System im Recovery-Modus, und wählen Sie im Auswahldialog root aus, um eine Root-Konsole zu starten. Zuerst wollen wir das Verhalten des Utilitys adduser verändern, um automatisch die Dateien Ihres bisherigen Verzeichnisses zu erhalten. Öffnen Sie dazu die Konfigurationsdatei:
nano /etc/adduser.conf
und tauschen Sie die Zeile SKEL=/etc/skel durch SKEL=/home/backup aus. Geben Sie nun nacheinander die folgenden Befehle (die Zeilennummern nicht angeben) ein, um Ihr persönliches Verzeichnis zu sichern (1), den Benutzer zu löschen (2), einen neuen Benutzer mit verschlüsseltem Verzeichnis hinzuzufügen (3) und diesem Benutzer Administratorrechte zu geben:
1 mv /home/<Benutzer> /home/backup
2 deluser <Benutzer>
3 adduser --encrypt-home <Benutzer>
4 adduser <Benutzer> admin
5 rm -rf /home/backup
Stellen Sie zum Abschluss dieses Vorgangs den alten Zustand der Konfigurationsdatei /etc/adduser.conf wieder her. Um sich im System wieder als Benutzer anzumelden, kehren Sie mit + in den Auswahldialog des Recovery-Modus zurück. Starten Sie das System durch resume. Melden Sie sich als Benutzer im System an, und starten Sie mittels startx die grafische Oberfläche.
Tipp 245: Verzeichnisse neuer Benutzer verschlüsseln |
Sie können nicht nur Ihr eigenes Verzeichnis verschlüsseln. Um das persönliche Verzeichnis neuer Benutzer zu verschlüsseln, genügt im laufenden Betrieb der Befehl: |
sudo adduser --encrypt-home <Benutzer> |
15.5.2 Verschlüsselung anderer Partitionen
Es ist durchaus sinnvoll, weitere Bereiche des Systems zu verschlüsseln. Allgemein bieten sich folgende Partitionen an:
- die Daten selbst, zum Beispiel die Partition mit den persönlichen Ordnern (/home)
- die Auslagerungspartition (swap)
- die temporären Dateien (/tmp)
- die Dateien in /var, in denen zum Beispiel Druckaufträge zwischengespeichert sind
Um die oben genannten Partitionen zu verschlüsseln, brauchen Sie das Programm cryptsetup. Sie installieren es bequem über sudo 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, so müssen Sie dies ändern. Für /tmp und /var müssen Sie ebenfalls eine Partition 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 verwenden dazu das grafische Partitionierungsprogramm GParted.
- Beim Start
Beim Start mit der Live-CD muss der Parameter live noswap eingegeben werden. Er verhindert die Nutzung von Swap-Partitionen, denn dies könnte die Bearbeitung der Partitionstabelle stören. - Verkleinerung der Systempartition
Zuerst müssen Sie die Systempartition verkleinern. 5 GB sind meist angemessen, sofern nicht bereits mehr Platz auf dem Gerät belegt ist. - Verschieben der Swap-Partition
Die Leistung leidet, wenn die Swap-Partition zu weit hinten auf der Festplatte liegt. Verschieben Sie sie daher direkt an das Ende der Systempartition. - Anlegen der neuen Partitionen
Nun legen Sie zwei Partitionen an:- Für die gemeinsame Partition für /tmp und /var genügen etwa 1 bis 2 GB. Diese Partition sollte möglichst hinter dem Swap-Bereich liegen.
- Für die spätere home -Partition können Sie den restlichen verfügbaren Platz ver"-wenden.
Normalerweise können Sie für beide Partitionen das ext3-Dateisystem wählen. Die Bezeichnungen der Systempartition und der neuen Partitionen sollten Sie sich notieren. Auch die nächsten Schritte werden mit der Live-CD erledigt. Starten Sie also noch nicht neu.
- Daten umverteilen
Die Daten, die derzeit noch auf der alten Partition liegen, müssen jetzt an den richtigen Ort verschoben werden. Diese Schritte führen Sie von einer Live-CD aus und im Terminal durch. - 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:sudo mkdir /mnt/{root,crypt,home}
Die Partitionen werden eingehängt mit:
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, kopieren Sie seinen Inhalt mit folgendem Befehl an die entsprechende Stelle:sudo cp -a /mnt/root/home/* /mnt/home/
Die Verzeichnisse /var und /tmp werden wie folgt kopiert bzw. angelegt:
sudo mkdir /mnt/crypt/tmp
sudo chmod 1777 /mnt/crypt/tmp
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 können Sie sich wie folgt anzeigen lassen:
ls /mnt/crypt
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 sollten Sie wieder das normale System starten. Loggen Sie sich bitte nicht in der grafischen Oberfläche ein, sondern wechseln Sie mit der Tastenkombination + + auf eine Konsole, und melden Sie sich dort an.
Konfiguration der Krypto-Partitionen
Die zu verschlüsselnden Partitionen sind in der Datei /etc/crypttab aufgelistet, die in einem Editor mit Root-Rechten bearbeitet werden kann. Die Swap-Partition 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 tragen Sie den gewünschten Namen des verschlüsselten Geräts ein, an zweiter Stelle die zu verschlüsselnde Partition bzw. das zu verschlüsselnde Volume, falls Sie LVM verwenden. 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.
Umwandlung der unverschlüsselten Partitionen
Beim ersten Mal legen Sie das Kryptogerä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:
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. Diese dürfen dabei nicht eingebunden sein. Die enthaltenen Dateisysteme samt Inhalt sind danach über das verschlüsselte Gerät unversehrt zugänglich.
sudo dd if=/dev/hda5 of=/dev/mapper/crypt
sudo dd if=/dev/hda6 of=/dev/mapper/home
Nun sollte bei einem Zugriff auf die »Original«-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:
sudo fsck /dev/mapper/crypt
sudo fsck /dev/mapper/home
Zur Sicherheit können Sie die Partition bereits einbinden, um ihre Inhalte zu betrachten:
sudo mount /dev/mapper/crypt /mnt
sudo mount /dev/mapper/home /home
Eintrag der neuen Dateisysteme
In der fstab (die Sie via sudo gedit /etc/fstab bearbeiten) sollten Sie nun noch Einträge für die neuen oder geänderten Partitionen wie folgt erstellen bzw. anpassen:
/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:
sudo mkdir /crypt
Nun müssen die alten Daten aus dem Weg geräumt werden, damit auf die neuen, verschlüsselten Daten zugegriffen werden kann. Hierzu starten Sie 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, anstatt sie gleich zu löschen. Sollte irgendetwas doch nicht funktionieren, ist der Weg zurück so besonders einfach. Lediglich das beim Systemstart ohnehin leere Verzeichnis /tmp wird sogleich gelöscht. Dann werden leere Verzeichnisse bzw. Links auf die verschlüsselten Daten erstellt:
sudo mv /mnt/home /mnt/noenc-home
sudo mkdir /mnt/home
sudo rm -rf /mnt/tmp
sudo ln -s /crypt/tmp /mnt/tmp
sudo mv /mnt/var /mnt/noenc-var
sudo ln -s /crypt/var /mnt/var
Beim nächsten Start des installierten Systems wird nach dem Passwort für die verschlüsselten Partitionen gefragt. Wenn Sie sich vertippen, haben Sie Pech gehabt und landen auf einer Konsole. Sie können die Passworteingaben wiederholen, wenn Sie hier /etc/init.d/cryptdisks restart eingeben. Nach dem Betätigen von + wird der Systemstart dann fortgesetzt. Funktioniert alles, müssen Sie die zuvor umbenannten Daten noch löschen:
sudo rm -rf /noenc*
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
sudo mount /dev/hda1 /mnt
ein. Danach schreiben Sie mit dem Befehl
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 auf verschlüsselten Partitionen.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.