[[Vorlage(Archiviert)]] 
[[Vorlage(Fortgeschritten)]] 
{{{#!vorlage Wissen
[:Paketquellen_freischalten: Bearbeiten von Paketquellen] 
[:Pakete_installieren: Installation von Paketen] 
[:Terminal: Ein Terminal öffnen] 
[:Editor: Einen Texteditor öffnen] 
[:Datenträger:] 
[:Home_umziehen:Home umziehen] 
[:Notfall: "Betreten" des installierten Systems von einer Live-CD aus] 
}}}
[[Inhaltsverzeichnis(1)]] 

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. 


{{{#!vorlage 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: 


{{{#!vorlage Befehl
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 [:Daten_verschlüsseln: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: 
{{{#!vorlage Befehl
sudo dd if=/dev/urandom of=/dev/hdxY
}}}
Weitere Infos sind hier zu finden: [http://www.linuxjournal.com/article/7743 Encrypt Your Root Filesystem] {en} 


= 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.  


{{{#!vorlage Befehl
sudo -s 
mkfs.ext2 /media/floppy 
mount /media/floppy 
cat /dev/random > /media/floppy/keyfile 
}}}

{{{#!vorlage 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)  


{{{#!vorlage Befehl
sudo -s
cryptsetup create -d /media/floppy/keyfile home /dev/hdXY 
cryptsetup create  -d /media/floppy/keyfile var /dev/hdXZ
}}}

{{{#!vorlage 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 =

{{{#!vorlage Befehl
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).  

{{{#!vorlage 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 '''[:fstab:/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 
}}}

{{{#!vorlage 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 =

{{{#!vorlage Befehl
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 
}}}

{{{#!vorlage Warnung

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. 


{{{#!vorlage Befehl
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:  


{{{#!vorlage Befehl
chmod 755 /etc/init.d/keymount.sh 
}}}
Danach ist ein  symbolischer Link unter '''/etc/rcS.d''' zu erzeugen  


{{{#!vorlage Befehl
cd /etc/rcS.d 
ln -s ../init.d/keymount.sh S27keymount.sh 
}}}

{{{#!vorlage 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. 


{{{#!vorlage Befehl
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. 


{{{#!vorlage Befehl
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
}}}

{{{#!vorlage 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. 


{{{#!vorlage 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!  

}}}

----
 
# tag: Sicherheit, Verschlüsselung