staging.inyokaproject.org

Keydisk

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Die folgende Anleitung wendet sich an fortgeschrittene Benutzer, die bereits mit der Einrichtung von Dateisystemen vertraut sind.

Voraussetzungen

  • Es wird das Paket cryptsetup (universe) benötigt.

  • Diese Kernel-Module müssen zum Start geladen sein:

    • aes

    • dm-mod

    • dm-crypt

Die in dieser Anleitung angebenen Gerätedateien /dev/hdXY, /dev/hdXZ usw. stehen als Variablen und sind durch die tatsächliche Bezeichnung der Partitionen (z.B. /dev/hda2, /dev/hda5, /dev/sda3 o.a.) zu ersetzen.

Hinweis:

Es empfielt sich VOR der Durchführung der folgenden Schritte in den Single-User Betrieb (Runlevel 1) zu wechseln und den Xserver sowie alle nicht benötigen Systemdienste zu stoppen. Bis auf den letzten Schritt, für den die Verwendung einer Live-CD zwingend erforderlich ist, können alle Schritte aus dem Runlevel 1 ausgeführt werden.

Backup der Daten

Als erstes muss eine Sicherung der Daten unter /var und /home erfolgen. Mit diesen Befehlen werden die Verzeichnisse /var und /home gesichert. Achtung! Den Punkt am Ende des Befehls nicht vergessen:

sudo -s 
cd  /var    
tar -cpjvf /root/bak_var.tar.bz2 . 
cd /home 
tar -cpjvf /root/bak_home.tar.bz2 .  

Partitionen anlegen

Falls noch nicht vorhanden, jeweils eine separate Partition für /tmp, /var, /swap und /home anlegen. Siehe dazu auch hier.

Wer ganz sicher gehen will, kann vor dem Anlegen des Dateisystems die Partition mit Zufallsdaten beschreiben. So kann ein Angreifer nicht ermitteln, wieviel Prozent der Platte mit Daten belegt und wieviel Prozent noch frei sind. Abhilfe schafft folgender Befehl, der die Partition mit Zufallsdaten auffüllt:

sudo dd if=/dev/urandom of=/dev/hdxY 

Weitere Infos sind hier zu finden: Encrypt Your Root Filesystem 🇬🇧

Schlüsseldiskette erstellen

Eine leere Diskette einlegen, dann ein ext2-Dateisystem (kein ext3-Dateisystem!)und einen zufällig generierten Schlüssel erzeugen. Aus Sicherheitsgründen ist darauf zu achten, dass das Dateisystem auf der Diskette kein journaling Dateisystem ist.

sudo -s 
mkfs.ext2 /media/floppy 
mount /media/floppy 
cat /dev/random > /media/floppy/keyfile  

Hinweis:

Je nach Rechnerleistung kann das erstellen der Keyfile lange Ladezeiten beanspruchen

Partitionen mit Schlüssel verschlüsseln:

Nun verschlüsselte Partitionen anlegen (für die Gerätedateien /dev/hdXY bzw. /dev/hdXZ die Geräte-Bezeichnung der /home bzw. /var-Partition angeben)

sudo -s
cryptsetup create -d /media/floppy/keyfile home /dev/hdXY 
cryptsetup create  -d /media/floppy/keyfile var /dev/hdXZ 

Hinweis:

Der obige Befehl erzeugt je ein neues Mapper-Device pro Cryptdisk (/dev/mapper/xxx), wobei xxx der Bezeichnung entpricht, die bei der Erstellung des Cryptdevices angegeben wurde, in diesem Falle also home und var.

Dateisystem auf Cryptpartitionen anlegen

mkfs.ext3 /dev/mapper/home
mkfs.ext3 /dev/mapper/var 

crypttab editieren

Jetzt solle die /etc/crypttab bearbeitet werden [4] und folgende Einträge vorgenommen werden (Gerätedateien wieder entsprechend anpassen):

# <target device> <source device> <key file> <options> 
swap    /dev/hdXW       /dev/random     swap 
tmp     /dev/hdXV       /dev/random      tmp       
home  /dev/hdXY       /media/floppy/keyfile 
var     /dev/hdXZ       /media/floppy/keyfile 

Die ersten beiden Einträge erzeugen bei jedem Start jeweils ein mit einem zufälligen Schlüssel verschlüsseltes swap-Dateisystem auf der angegebenen Swap-Partition und ein ext2-Dateisystem auf der angegebenen tmp-Partition. Zu beachten ist, dass diese Partitionen bei jedem Neustart neu formatiert werden, da der Schlüssel jedesmal anders ist. Die letzten zwei Einträge starten die von uns angelegten Cryptpartitionen für /home und /var und lesen dabei den Schlüssel von der Diskette (die Diskette nicht verlieren, sonst kommt man nicht mehr an die Daten ran).

Hinweis:

Evtl. ist es besser die verschluesselten Partitionen mit

cryptsetup -c aes-cbc-essiv:sha256 -y luksFormat /dev/hdXY

die optionen sind nur als Beispiel anzusehen) anzulegen und ein Passwort (fuer den Notfall) anzugeben. Danach kann das Keyfile mit

cryptsetup luksAddKey /dev/hdXY /media/floppy/keyfile

eingebunden werden, dann kann man jederzeit auch wenn die keydisk im Eimer ist wieder an die Daten rankommen. Wenn man noch auf den md5 check des keyfiles verzichten kann und will muss einfach in /etc/default/cryptdisks ein CRYPTDISKS_MOUNT="/media/floppy" angeben. dann kann man das einbinden des Scripts ins init.d getrost vergessen.

fstab anpassen

In der Datei /etc/fstab sind die Einträge für /tmp, /var /home und swap entsprechend ergänzen bzw. anpassen [4]:

/dev/mapper/swap              swap                  swap    defaults        0 0 
/dev/mapper/home             /home                ext3    defaults        1 2 
/dev/mapper/tmp               /tmp                   ext2    defaults        0 0 
/dev/mapper/var                /var                    ext3    defaults        1 2 

Hinweis:

Das Dateisystem von /home und /var berücksichtigen. Falls ein anderes Dateisystem als ext3 gewählt wurde, muss dies auch in der fstab geändert werden.

Cryptpartitionen einbinden und Backup zurückspielen

mount /dev/mapper/home /home 
mount /dev/mapper/var /var 
cd  /var    
tar -xpjvf /root/bak_var.tar.bz2 
cd /home 
tar -xpjvf /root/bak_home.tar.bz2  

Achtung!

Diese Daten im Backup sind unverschlüsselt und könnten wiederhergestellt werden, wenn das Backup sich auf einem Journaling Dateisystem befindet. Es ist dafür zu sorgen, dass die Backupdateien unter /root anschließend sicher gelöscht (shred) werden. Sicheres Löschen funktioniert übrigens nicht, wenn die Daten sich auf einem Filesystem mit Journalfunktion befinden.

md5sum vom keyfile erstellen

An Hand einer Prüfsumme kann das folgende Initscript erkennen, ob sich auf der eingelegten Diskette wirklich der richtige Key befindet.

cd /root 
md5sum /media/floppy/keyfile > .key_md5sum 
chmod 400 .key_md5sum  

Initscript erstellen

Es muss das folgende Initscript erstellt werden [4], das unter /etc/init.d als keymount.sh gespeichert wird:

#!/bin/sh 
######################################################################## 
## This script is used to mount a floppy disk containing a keyfile                    
## to decrypt encrypted partitions on startup                                            
## Please make sure to execute it before cryptdisk are started      
## (c) 2006 by mdkuser, published under the GPL v2                  
######################################################################## 
  
case "$1" in 
   start) 
   modprobe floppy
   if [ ! -e /dev/fd0 ]; then 
         mknod /dev/fd0 b 2 0 
         chown root:floppy /dev/fd0 
         chmod 660 /dev/fd0 
   fi 
   if $( grep -q /media/floppy /etc/mtab ); then 
           umount /media/floppy 
   fi 
   echo -n "waiting for key file media... " 
   mount -o ro /dev/fd0 /media/floppy > /dev/null 2>&1 
   md5sum -c /root/.key_md5sum > /dev/null 2>&1 
   retval="$?" 
           while [ ! "$retval" -eq "0" ]; do 
              echo "ERROR: No key file media!" 
                  if $( grep -q /media/floppy /etc/mtab ); then 
                  umount /media/floppy 
                  fi 
             read $a 
             mount -o ro /dev/fd0 /media/floppy > /dev/null 2>&1 
             md5sum -c /root/.key_md5sum > /dev/null 2>&1 
             retval="$?" 
           done 
   echo "Key file found." 
   ;; 
  
   stop) 
   if $( grep -q /media/floppy /etc/mtab ); then 
           umount /media/floppy 
   fi 
   ;; 
  
esac 

exit 0 

Dieses Script muss ausführbar gemacht werden:

chmod 755 /etc/init.d/keymount.sh  

Danach ist ein symbolischer Link unter /etc/rcS.d zu erzeugen

cd /etc/rcS.d 
ln -s ../init.d/keymount.sh S27keymount.sh  

Hinweis:

Das Keymount Initscript muss VOR dem Initscript cryptdiscs gestartet werden! Der Symlink mit Nummer S27keymount.sh startet das Script unmittelbar vor dem cryptdisc Init Script, evtl. anpassen.

Damit die Diskette nach erfolgreichem Booten wieder entfernt werden kann, ist folgenden Eintrag in /etc/rc.local zu erzeugen:

/etc/init.d/keymount.sh stop 

(Optional) Kennwort für root vergeben

Dieser Schritt ist optional, aber dafür sicherer, da man sonst ohne Passwortabfrage auf der Rootshell landet, falls die Cryptdisks nicht gestartet werden können.

sudo passwd root  

Verzeichnisse anlegen und Berechtigungen anpassen

Im leeren Verzeichnis /var auf der Rootpartition (/) sind noch einige Verzeichnisse anzulegen und die Berechtigungen entsprechend zu setzen. Dies ist wichtig, da unter Dapper bei jedem Start unter /var Aktionen ausgeführt werden, bevor die Cryptpartitionen gestartet werden. Hierzu ist es unbedingt notwendig mit einer Live-CD zu arbeiten, um die / Partition zu mounten ohne das /var eingehangen ist, da /var im laufenden Betrieb nicht ausgehangen werden kann.

sudo -s
mount /dev/hdXU /mnt
mkdir /mnt/var/tmp
chmod 1777 /mnt/var/tmp
mkdir /mnt/var/lock
chmod 1777 /mnt/var/lock
mkdir /mnt/var/run
chmod 755 /mnt/var/run 

Hinweis:

/dev/hdXU ist hier durch die Gerätebezeichnung der Rootpartition (/) zu ersetzen.

Erster Test

Nun das System rebooten, Live-CD entfernen und das neu erzeugte Cryptosystem kann getestet werden.

Hinweis:

Es wird an dieser Stelle ausdrücklich darauf hingewiesen, dass der Autor keine Verantwortung für die Richtigkeit und Vollständigkeit dieser Kurzanleitung und auch nicht für eventuell sich daraus ergebende Probleme übernehme. Die hier beschriebene Konfiguration wurde unter Dapper getestet und für funktional befunden und wird auf einer as-is Basis zur Verfügung gestellt, allerdings wurde die vorliegende Dokumentation dazu nachträglich aus dem Gedächtnis heraus aufgeschrieben, es könnten also hier und da noch einige Anpassungen vorzunehmen sein. Benutzung auf eigene Gefahr!


Diese Revision wurde am 29. September 2018 23:21 von Beforge erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Verschlüsselung