Das perfekte Netbook-Setup: 2. /home reisetauglich verschlüsselt

In den nächsten Tagen steht eine Reise an. Mit dabei sein wird der alte, robuste EeePC 701 mit Xubuntu 8.10 und einer SD-Karte für mein Heimatverzeichnis. In einigen Ländern muss man die Notebooks hochfahren und sich anmelden. Ab und an klickt der Immigration Officer dann durch das Dateisystem und schaut ob verdächtige Dateien vorliegen. Ich stelle hier ein Setup vor, bei dem das Heimatverzeichnis eines Nutzers verschlüsselt auf einer eigenen Partition liegt und beim Login dieses Nutzers eingebunden wird. Andere — evtl. per Auto-Login angemeldete — User hängen die verschlüsselte Partition nicht ein. Das beugt Problemen bei Verlusten des Netbooks vor und mit ein wenig Geschick lässt sich bei einer oberflächlichen Kontrolle die Existenz des verschlüsselten Heimatverzeichnisses verbergen.

Bei einer näheren Kontrolle wird jedoch die verschlüsselte Partition gefunden werden. Die Verschlüsselung selbst ist zwar so stark wie Ihr Login-Passwort, in der Praxis entscheidet über die Knackbarkeit der Verschlüsselung aber die Tiefe der “Kryptanalyse” des bereisten Staates: Wer Länder bereist, die Gartenschlauch-Kryptanalyse betreiben, sollte ein aufwendigeres Verschlüsselungsmodell mit geschachtelten Containern (TrueCrypt) verwenden, welches allerdings umständlicher zu nutzen ist.

Software-Installation und Vorbereitung der Partition

Zunächst muss etwas Software nachinstalliert werden:

sudo apt-get install cryptsetup libpam-mount

Rebooten Sie anschließend, um sicherzustellen, dass alle Bibliotheken richtig geladen werden.

Nun geht es um die Identifikation der Partition. Prüfen Sie mit fdisk -ul die Partitionierung des Ziellaufwerkes und stellen Sie sicher, dass es nicht gemoutet ist. Mein Ziellaufwerk war die im Kartenslot steckende SD-Karte, deren erste Partition ich mit fdisk mit einer normalen Linux-Partition versah. Hier die Partitionierung:

Platte /dev/sdb: 4029 MByte, 4029677568 Byte
233 Köpfe, 63 Sektoren/Spuren, 536 Zylinder, zusammen 7870464 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Disk identifier: 0x00000000

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1              63     7867943     3933940+  83  Linux

Verschlüsseln der Zielpartition

Zunächst sollten die ersten Megabyte der Zielpartition mit Zufallszahlen überschrieben werden. In diesem Bereich sitzen später die LUKS-Schlüssel, die sich nicht von den umgebenden Daten abheben sollten:

sudo dd if=/dev/urandom of=/dev/sdb1 bs=1M count=2

Im nächsten Schritt wird die Verschlüsselung der Partition vorbereitet. Sie erhält noch kein Dateisystem. Geben Sie das Passwort an, welches später als Login-Passwort verwendet werden wird:

sudo cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 -y /dev/sdb1

Mit dem Subkommando luksOpen wird die verschlüsselte Partition als Gerätedatei verfügbar gemacht. Ich verwendete /dev/mapper/mattias, weil die verschlüsselte Partition mein Heimatverzeichnis aufnehmen soll.

sudo cryptsetup luksOpen /dev/sdb1 mattias

Eine verschlüsselte Partition sollte möglichst kein Muster erkennen lassen und keine Reste der früher enthaltenen unverschlüsselten Daten aufweisen. Recht pragmatisch ist es daher, Nullen als Eingabe zu nutzen, die verschlüsselt ein scheinbar zufälliges Muster ergeben. Wenn nicht große Teile des Ziellaufwerkes mit Daten belegt werden, erleichtert die Kenntnis der Plaintext-Daten (hier der Ansammlung von Nullen) das Knacken des Schlüssels. Um auf Nummer sicher zu gehen können Sie statt /dev/zero daher /dev/urandom als Eingabedatenstrom verwenden — allerdings dauert dann das “randomisieren” deutlich länger:

sudo dd if=/dev/zero of=/dev/mapper/mattias bs=8192

Nun endlich kann die verschlüsselte Partition mit einem Dateisystem versehen und gemountet werden:

sudo mkdir /tmp/home_mattias
sudo mkfs.ext3 /dev/mapper/mattias
sudo mount /dev/mapper/mattias /tmp/home_mattias

Kopieren der Daten

Damit sichergestellt ist, dass keine meiner Dateien geöffnet sind, habe ich zunächst ein Root-Passwort vergeben, rebootet und mich dann auf einer Konsole ([Strg]+[Alt]+[F2]) als Root angemeldet:

sudo passwd

Das Kopieren der Dateien erledigt nun rsync, fancy zum Zuschauen, “trailing slashes” nicht vergessen:

rsync -avHP /home/mattias/ /tmp/home_mattias/

Nun können die Überreste des unverschlüsselten Heimatverzeichnisses auf der Systempartition gelöscht werden. Nach dem Aushängen des Dateisystems muss übrigens die verschlüsselte Gerätedatei abgemeldet werden — sonst droht Datenverlust:

umount /tmp/home_mattias/
cryptsetup luksClose mattias
rm -rf /home/mattias
mkdir /home/mattias
chown -R mattias:mattias /home/mattias

Sollte die Gefahr bestehen, dass sensible Daten zurückgeblieben sind, nullen Sie einfach die freien Festplattenbereiche:

dd if=/dev/zero of=/home/nix.nul bs=8192
sync
rm /home/nix.nul

Konfiguration von pam_mount

Zuerst müssen die “Pluggable Authentication Modules” konfiguriert werden. Um “pam_mount” zu aktivieren genügt es, an die Datei /etc/pam.d/common-session die folgende Zeile anzuhängen:

@include common-pammount

Im nächsten Schritt wird die Datei /etc/security/pam_mount.conf.xml angepasst, damit beim Login die Partition mit dem verschlüsselten Heimatverzeichnis gemountet wird. Mit nur einem Volume sah der Dateianfang bei mir so aus — relevant ist vor allem die mit <volume ... beginnende Zeile:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
	See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- Volume definitions -->
<volume user="mattias" fstype="crypt" path="/dev/sdb1" mountpoint="/home/mattias" options="fsck" />
<!-- pam_mount parameters: General tunables -->

That’s it! Nun noch einmal rebooten und per Passwort mit dem neuen verschlüsselten Heimatverzeichnis einloggen.

Feintuning zum Schluss

Der verschlüsselte User ist wertlos, wenn es sich um den einzigen Nutzer handelt. Ich habe daher einen zusätzlichen Nutzer ms mit einfachem Passwort angelegt. Diesem User habe ich Zugangsdaten zu oft von mir benutzten WLANs und einen Satz sinnvolle Bookmarks verpasst. Da dieser Nutzer auch dazu dienen soll, Gäste surfen zu lassen, ohne dass die SDD des EeePC vollläuft, habe ich mich für einen kleinen Trick mit dem temporären Dateisystem entschieden. Zunächst wird /tmp auf ein tmpfs gelegt, was ein Eintrag in der /etc/fstab bewerkstelligt:

tmpfs   /tmp            tmpfs   defaults        0       0

Nun sorgt ein kleines Script /etc/init.d/sync-dummy.sh dafür, dass der Inhalt des von /home/ms nach /home/ms.bak verschobenen Heimatverzeichnisses des Dummy-Users beim Systemstart nach /tmp kopiert wird:

#!/bin/bash
case $1 in
        start )
                rsync -avHP /home/ms.bak/ /tmp/home_ms/
        ;;
esac

Das Script muss jetzt noch ausführbar gemacht und im Runlevel 2 verlinkt werden:

chmod a+x /etc/init.d/sync-dummy.sh
cd /etc/rc2.d
ln -s ../init.d/sync-dummy.sh S95sync-dummy

Damit beim Login auch wirklich das auf tmpfs liegende Heimatverzeichnis verwendet wird, müssen die Pfade in der /etc/passwd noch angepasst werden. Da sich möglicherweise in einigen Konfigurationsdateien harte Referenzen auf /home befinden, ist es ratsam, das alte Heimatverzeichnis durch einen Softlink zu ersetzen:

cd /home/
ln -sf /tmp/home_ms ms

Weiter gedacht

Mit Sicherheit ist die vorgestellte Methode nicht die simpelste. Wenn es schnell gehen soll, dürfte die simple Auswahl eines verschlüsselten Heimatverzeichnisses bei der Installation am ehesten befriedigende Resultate bringen. Vorteil der hier vorgestellten Methode ist jedoch, dass die SD-Karte mit dem Heimatverzeichnis nicht im Netbook verbleiben muss, das Gerätchen funktioniert dennoch unverdächtig. Sollte dann beispielsweise der Zoll den EeePC konfiszieren, werden die Forensiker schnell feststellen, dass die — hoffentlich gut versteckte — SD-Karte fehlt. Und was nicht da ist, kann keiner Kryptanalyse unterzogen werden.

In vielen Fällen ist es mit dem Heimatverzeichnis nicht getan. Wer eine Swap-Partition verwendet, sollte diese auch verschlüsseln oder auf Swap-Dateien auf einem verschlüsselten Datenträger umstellen. Zudem schreiben einige Programme temporäre Daten nach /var/tmp, in diesem Fall sollten Sie auch dieses Verzeichnis auf ein tmpfs legen.

Zu bedenken ist zudem, dass die Wiederherstellung eines defekten Datenträgers schwieriger wird. Ist der LUKS-Header beschädigt, kann das Recovery gänzlich verunmöglicht werden.

Paranoiker dürfte das hier vorgestellte Verfahren nicht befriedigen, weil ich die Existenz einer verschlüsselten SD-Karte gar nicht zu verbergen versuche. Wer ganz sicher gehen möchte, belässt daher das sperrige Xandros auf dem EeePC, bootet sein mit TrueCrypt versehenes Ubuntu komplett von SD-Karte und verwendet einen inneren Container in einem äußeren verschlüsselten Container. Im Falle von Folter gibt er das Passwort des äußeren Containers preis, in dem unverdächtige Dateien und ein paar Dummy-SSH-Schlüssel liegen. Die wirklich privaten Dateien liegen im inneren Container.

Teilen sich mehrere Nutzer (die einander vertrauen) ein Netbook, kann es sinnvoll sein, einen gemeinsamen Container für das gesamte /home zu verwenden. Statt user kommt dann group in der /etc/security/pam_mount.conf.xml zum Einsatz und ein zweiter der acht Passwort-Slots wird für das Passwort des zweiten Nutzers belegt.

Links

Das perfekte Netbook-Setup

  1. Installation von Ubuntu/Xubuntu 8.10
  2. /home reisetauglich verschlüsselt

19 thoughts on “Das perfekte Netbook-Setup: 2. /home reisetauglich verschlüsselt

  1. Anonymous Coward

    > Grund ist die Verschlüsselung der Partition mit dem Login-Passwort. Ändert man
    > das Passwort, sollte die Partition kopiert, gelöscht, mit dem neuen Passwort
    > vorbereitet, neu formatiert und zurückgesichert werden. Bei großen Datenmengen
    > ist es daher besser, die geringfügig aufwendigere Variante zu wählen, bei der
    > mit dem Passwort die Passphrase verschlüsselt wird und mit dieser wiederum die
    > Partition.

    Vielleicht vertue ich mich, aber ich dachte dass gerade das nicht der Fall ist, sprich dass einer der Vorteile von LUKS zum Schlüsselmanagement der ist, dass man eben mehrere Keys haben kann, und auch nachträglich welche hinzufügen/löschen kann, weil das PW eben nicht direkt zur Verschlüsselung der Partition verwendet wird, sondern lediglich für die Daten im header (wo dann der eigentliche Schlüssel liegt mit dem die Partition verschlüsselt ist). Vielleicht kannst du das nochmal prüfen und ggf. anpassen in deiner Beschreibung.

  2. Administrator Post author

    Hallo Anonymous Coward,

    Danke für den Hinweise: Du hast natürlich recht. Ab und an sieht man den Wald vor lauter Bäumen nicht: LUKS lässt bis zu acht Passwort-Slots zu. Die Lösung steht ja auch schon unten:

    > Teilen sich mehrere Nutzer (die einander vertrauen)
    > ein Netbook, kann es sinnvoll sein, einen gemeinsamen
    > Container für das gesamte /home zu verwenden. Statt
    > user kommt dann group in der /etc/security/pam_mount.conf.xml
    > zum Einsatz und ein zweiter der acht Passwort-Slots
    > wird für das Passwort des zweiten Nutzers belegt.

    Ich kann dann den Absatz oben komplett löschen.

  3. skillet

    Hi,
    war sehr interessant zu lesen!
    Aber mal ne andere Frage, wofür braucht man sowas?????
    Ich weiß ja nicht, was du für Daten auf deinem Netbook durch die Gegend schleifst, aber ich kann mir keinen wirklich sinnvollen Verwendungszweck vorstellen. Sollte man wirklich Daten besitzen, welche der betreffende Staat lieber nicht sehen sollte, würde ich diese bestimmt nicht auf einem Netbook, quasi auf dem Präsentierteller mitnehmen. Denn keine Verschlüsselung ist endgültig sicher! Und für ein paar illegale mp3s, Filme, Spiele usw interessieren die sich bestimmt nicht.
    Für mich klingt das eher nach paranoidem, sinnlosem, aber bestimmt auch sehr interessantem und und spaßigem Zeitvertreib aus! (Nicht bös gemeint!)
    Naja, ich wünshce auf jeden Fall eine gute Reise.

  4. madd

    @skillet: Ich glaube bei ihm und auch bei mir gehts eher ums Prinzip. Es geht nämlich andere eigentlich nichts an, was man auf dem Computer hat. Also wenn man schon eine einfache Verschlüsselungsmöglichkeit hat kann man diese auch einsetzen.

  5. Administrator Post author

    @skillet, @madd: Es geht um ein wenig mehr als das Prinzip. Da ist einerseits die Motivation, auch einem übereifrigen Grenzbeamten nicht allzu viel Angriffsfläche zu bieten und andererseits eben doch die Tasache, dass IMAP-Cache, IMAP-Passwörter, einige SSH-Schlüssel, einige Webseiten-Logins und für den Notfall hochauflösende Scans von Dokumenten eben im Falle eines Verlustes (Diebstahl, Überfall, verloren gehen) nicht in falsche Hände geraten sollen.

    Natürlich ist es noch sicherer, bspw. verschlüsselte Images auf einem eigenen Server online zu stellen und dann bei Ankunft im Zielland erst auf das Notebook oder Netbook zu spielen. Einige Firmen verlangen diese Taktik von Mitarbeitern, die in die USA reisen. Dort brüsten sich die Dienste nämlich mit ihrer Rolle beim Abschöpfen von Wirtschaftsgeheimnissen.

    Allerdings hat man nicht überall eine schnelle Internetverbindung und möchte vielleicht einige Daten bereits auf der Reise dabei haben. Und dafür erscheint mir das verschlüsselte Heimatverzeichnis auf SD-Karte der beste Kompromiss.

  6. skillet

    @madd, @Admin:
    Natürlich kann ein verschlüsseltes /home in jedem Fall nicht schaden, außer vielleicht bei der Performance. Merkt man Geschwindigkeitsunterschiede? Oder macht das wenn es erstmal entschlüsselt und eingehängt ist keinen Unterschied? Würde mich mal interessieren.
    Naja, wenn ich mir irgendwann mal einen Laptop leisten sollte, verschlüssele ich ihn vielleicht auch mal, so aus Spaß an der Freude, denn Spaß macht die Bastelei bestimmt!
    Gruß, skillet

  7. Michael Dahms

    Hi – Hab das mal nachvollzogen da ich ebenfalls viel unterwegs bin. Ich checke es aber dennoch nicht wie es funktioniert. Ging davon aus dass ich mich ganz normal anmelde und dann alles in meinem home auf der sd verschlüsselt wird/ist. Der Desktop sieht aber wie immer aus …. auch werde ich nicht/nirgends nach dem Passwort gefragt – sorry für meine Unbeholfenheit – aber was geht hier jetzt eigentlich wie?

  8. Pingback: Das Rootserver-Experiment » Blog Archive » Verschlüsselte komprimierte DVD-Backups unter Linux

  9. Pingback: Netbooks: Tipps, Tutorials und Downloads

  10. tuxpuzzle

    Hallo Mattias,

    Erst einmal vielen, vielen Dank fuer die Infos hier und insbesondere fuer den Artikel “/home reisetauglich verschluesselt”. Finde ich aus politischen Gruenden schon ein sehr wichtiges Thema, zudem kommt ein Netbook auch schon mal abhanden …

    Habe Deine Anleitung auf einem eeepc 900 mit easy.peasy 1.0 (basierend auf ubuntu 8.10) ausprobiert – hat auch wirklich geklappt ;-)!

    Nun habe ich aber folgendes Problem:
    Aus versehen habe ich mich einmal eingeloggt, ohne das die SD Karte drin war. Seitdem praesentiert mit der Rechner auch MIT eingesteckter SD-Karte immer ein jungfraeuliches System, ohne das mein home-partition eingebunden wird. Ich kann sie ansonsten problemlos mit Passworteingab einhaengen, aber natuerlich dann nicht als /home/mein_user … das ist ja nicht Sinn der Sache.

    Als root den angelegten Ordner /home/mein_user loeschen hilft nicht – was kann ich machen, um dem System wieder beizubringen, die verschluesselte Partition als /home/meine_user zu mounten? Das hat doch vorher tadellos geklappt …

    Und: kann ich irgendwas tun, um aehnliches in Zukunft zu verhindern?

    Vielen Dank fuer deine Hilfe – weiter mit Deinem tollen blog!

    Servus

    tuxpuzzle

Comments are closed.