Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Anmerkung: Die im Artikel beschriebenen Probleme und deren zugehörige Lösungen sind nicht mehr relevant, da die Pakete aus den Ubuntu-Quellen, welche die Probleme verursachten, Mitte April 2015 aktualisiert wurden, so dass die Probleme nicht mehr auftreten.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Diese Beschreibung gilt als workaround für die Ubuntuversionen:
Andere Versionen sind von dem nachfolgend beschriebenen Problem nicht betroffen. Mit Einführung / Release von Ubuntu 15.04 wurde das Problem behoben.
Mit der Verschlüsselung vom Homeverzeichnis mittels ecryptfs wird die Partition, die für eine SWAP eingerichtet wurde, auch verschlüsselt. Das lief bisher ohne Probleme.
Mit der Abfrage im Terminal
swapon -s
und einer beispielhaften Ausgabe von
Filename Type Size Used Priority /dev/mapper/cryptswap1 partition 8519672 0 -1
kann man das überschlägig abschätzen - es sind je nach System auch andere, vergleichbare Ausgaben möglich. Dann ist eine Überarbeitung nicht unbedingt erforderlich. Fehlt jedoch eine solche Ausgabe, dann muss man von einer fehlerhaften Aufbereitung der SWAP ausgehen.
Mit der Umstellung auf upstart bzw. mit der Einführung von systemd wird das Erstellen der verschlüsselten SWAP, in der Regel
/dev/mapper/cryptswap1
nicht mehr richtig bzw. falsch ausgeführt. Diese Beschreibung zeigt Wege auf, wie das bis zu einer offiziellen Umstellung des Paketes ecryptfs-utils repariert werden kann.
Ab Ubuntu 14.04 wurden die Basispakete - hier speziell das Paket ecryptfs-setup-swap in einer überarbeiteten Form eingeführt. Das erlaubte jetzt zwar, dass die verschlüsselte SWAP für den Bereitschafts- und Schlafmodus benutzt werden kann, führte aber zu anderen Problemen - bis hin zur Unbrauchbarkeit - die SWAP konnte und wurde nicht mehr benutzt.
Dazu gibt es mehrere workarounds, jedoch waren die alle irgendwie nicht querschnittlich benutzbar.
Die folgende Beschreibung und die Skripte sollen alle diese Probleme beheben und sind auch gegen mögliche Updates sicher.
Man sollte beide Start-Modi für
upstart
systemd
neu gestalten/aufbereiten, da diese sich nicht gegenseitig beeinflussen/stören.
Bei dem Startmodus für upstart werden die Skripte/Anweisungen im Verzeichnis
/etc/init
ausgewertet, die je nach der internen Gestaltung den Ablauf bei der Initialisierung regeln.
Um die SWAP /dev/mapper/cryptswap1 beim Bootvorgang einzurichten wird folgender Text als cryptswap.conf benötigt:
1 2 3 4 5 6 | start on started mountall script /sbin/cryptdisks_start cryptswap1 /bin/sleep 1 /sbin/swapon /dev/mapper/cryptswap1 end script |
Man erstellt diese Datei mit einem Editor [3] seiner Wahl im Homeverzeichnis und kopiert diese dann mit Rootrechten
sudo cp -f ~/cryptswap.conf /etc/init/
in das Verzeichnis /etc/init.
Man setzt das Skript /etc/rc.local für die Aktivierung ein, in dem man dort folgende Ergänzung mit einem Editor [3] seiner Wahl mit Rootrechten vor dem vorhandenen exit 0 einbringt:
1 2 3 | /sbin/cryptdisks_start cryptswap1 /bin/sleep 1 /sbin/swapon /dev/mapper/cryptswap1 |
Aufgerufen wird das dann von der Unit, die unter /lib/systemd/system/rc-local.service vorhanden ist.
Bei dem Startmodus für systemd werden die Skripte/Anweisungen (Units) im Verzeichnis
/lib/systemd/system
für das Basissystem bzw.
/etc/systemd/system
für eigene Anweisungen ausgewertet, die je nach der internen Gestaltung den Ablauf bei der Initialisierung regeln.
Um die SWAP /dev/mapper/cryptswap1 beim Bootvorgang einzurichten wird folgender Text als cryptswap.service benötigt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [Unit] Description=Cryptswap Service Requires=cryptsetup.target After=network.target [Service] SysVStartPriority=99 Type=forking ExecStartPre=/sbin/cryptdisks_start cryptswap1 ExecStart=/bin/sleep 1 ExecStartPost=-/sbin/swapon /dev/mapper/cryptswap1 start [Install] WantedBy=multi-user.target |
Man erstellt diese Datei mit einem Editor [3] seiner Wahl z.B. im Homeverzeichnis und kopiert diese dann mit Rootrechten
sudo cp -f ~/cryptswap.service /lib/systemd/system/
in das Verzeichnis /lib/systemd/system.
Hinweis zur obigen Dateien: Der Befehl /bin/sleep 1
ist abhängig von der Qualität der Festplatte, auf der die SWAP-Partition sich befindet. Bei den Tests hat sich eine Verzögerung von einer (1) Sekunde als ausreichend gezeigt.
Jede vom Benutzer eingebrachte Veränderung an einer "systemd-Unit" muss man dem System bekannt machen - z.B nach dem obigen Kopieren der neu erstellten Datei. Dazu muss man im Terminal [1] (hier beispielhaft cryptswap.service) mit
sudo systemctl disable cryptswap.service sudo systemctl enable cryptswap.service
die interne Struktur von systemd anpassen.
Arbeiten am System, wie diese nachfolgend beschrieben werden, können immer zu Fehlern führen, die das System unbrauchbar machen. Deshalb sollte die Eingabe der Befehle mit der notwendigen Sorgfalt erfolgen - am besten arbeitet man dabei mit
Kopieren -> Einfügen
von der WIKI-Vorlage in das Terminal.
Um die SWAP als verschlüsselte Partition querschnittlich benutzen zu können, sollte man das insgesamt neu aufbauen. Die Schritte dazu werden nachfolgend beschrieben.
Mit einem Editor [3] seiner Wahl entfernt man mit Rootrechten in der /etc/fstab alle Einträge für eine Swap-Partition, entweder durch auskommentieren oder löschen!
Anhand der Beschreibung Swap sollte man die SWAP-Partition neu einrichten/formatieren und ermittelt danach die UUID zur weiteren Verwendung im Terminal [1] mit
sudo mkswap /dev/sdXY # XY an das eigene System anpassen
Mit der angezeigten UUID einzusetzen bei <ermittelte UUID> (mit ->kopieren -> übertragen) werden nun in einem Terminal [1] folgende Eingaben ausgeführt
sudo export SWAP_UUID=<ermittelte UUID> sudo echo "RESUME=UUID=$SWAP_UUID" > /etc/initramfs-tools/conf.d/resume sudo update-initramfs -u sudo sed -i s/'cryptswap'/'# cryptswap'/g /etc/crypttab sudo echo "cryptswap1 UUID=$SWAP_UUID /dev/urandom swap,cipher=aes-xts-plain64,offset=8,noauto" >> /etc/crypttab
Nach Abschluss obiger Befehle im Terminal sollte man das korrekte Anlegen der neuen Dateien
/etc/crypttab
/etc/initramfs-tools/conf.d/resume
überprüfen, bevor man jetzt den Rechner neu startet.
Die oben eingesetzte, aktuelle Verschlüsselung mit >cipher=aes-xts-plain64
< kann gegen jede andere, gängige Methode ausgewechselt werden.
Kommt es trotz aller Sorgfalt zu Problemen beim Einsatz der Unit >cryptswap.service so sollte man zu erst eine Überprüfung im Terminal [1} ausführen
sudo blkid | grep swap sudo systemctl --all | grep cryptswap.service
wobei man mit dem ersten Befehl eine Überprüfung vom Zustand der SWAP-Partition abfragt, der zweite Befehl sollte im Normalfall diese Ausgabe ergeben:
cryptswap.service loaded inactive dead Cryptswap Service
Weicht der markierte Bereich ab, so sollte man eine Reinstalltion der betreffenden Pakete
systemd-sysv
systemd
ausführen. Dazu offnet man ein Terminal [1] und gibt dort ein:
sudo systemctl disable cryptswap.service sudo apt-get update sudo apt-get install --reinstall systemd sudo apt-get install --reinstall systemd-sysv sudo update-grub sudo systemctl enable cryptswap.service
Nach einem Reboot kann man dann den Erfolg dieser Arbeiten überprüfen.
ecryptfs Das Homeverzeichnis bzw. ein Verzeichnis darin verschlüsseln
Einrichten - wie man eine Verschlüsselung installiert / entfernt
Nutzung - wie man seine Daten bearbeiten und nutzen kann
Datenrettung - Struktur der Schlüsseldaten und Datenrettung
eCryptfs Security Audit (Januar 2014)
Diese Revision wurde am 19. April 2015 10:42 von aasche erstellt.