Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Verschlüsseltes Dateisystem mit dm-crypt

  1. #1
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892

    Verschlüsseltes Dateisystem mit dm-crypt

    Howto Version: v0.1.1

    Achtung: Ich übernehme keine Haftung für evtl. entstandene Schäden (zb Datenverlust), bei Benutzung dieses Howto's!
    Verschlüsseltes Dateisystem mit dm-crypt

    In meinem vorigen Howto über Loop-AES habe ich gezeigt, wie man eine Partition oder Container verschlüsseln kann. Loop-AES eignet sich sowohl für die Kernelzweige 2.4 und 2.6. dm-crypt ist ab der Version 2.6.4 im Kernel enthalten. Jeder User soll aber selbst entscheiden können, welche Art von Verschlüsselung man nutzen möchte.
    Falls die Entscheidung auf dm-crypt fällt soll auch jeder in der Lage sein, jenes anwenden zu können, daher möchte ich hier zeigen, wie dm-crypt installiert, konfiguriert und angewendet werden kann.
    dm-crypt ist der Nachfolger von Cryptoloop, welches Anwendung im Kernel 2.4 fand. Cryptoloop hatte einige schwächen und sollte nicht mehr eingesetzt werden. Siehe dazu folgenden Link. (Thx an Dellerium)
    dm-crypt verschlüsselt Partitionen auf Blockdevice Ebene und gibt den Klartextinhalt über ein virtuelles Blockdevice frei. Dieses Device kann wie ein herkömmliches Blockdevice verwendet werden, um darin ein Dateisystem zu erstellen und zu mounten. cryptsetup ist das Tool, womit dm-crypt arbeitet. Es gibt als Erweiterung das so genannte Management Tool LUKS (Linux Unified Key Setup). LUKS ist in der Lage, aus einem User Passwort einen krypto Key abzuleiten und diesen an den Kernel zu übergeben.
    Die Kombination zwischen cryptsetup und LUKS ermöglicht unter anderem, die Schlüssel zu der verschlüsselten Partition in einem Header der Partition selbst unter zu bringen. Es können auch verschiedene Passwörter für eine Verschlüsselung verwendet werden. Es ist auch möglich das Passwort zu ändern, ohne eine neu verschlüsselung des verschlüsselten Objekts!
    Es gibt bei der Angabe des Verschlüsselungsalgorithmus die Option -essiv (Encrypted Salt-Sector IV), um einen
    Watermark Angriff aus dem Weg zu gehen.

    Sehr gute Erklärungen zur Funktionsweise von cryptsetup, LUKS, essiv bietet das Linux-Magazin in der Ausgabe 08/05.

    Update: Den Artikel "dm_crypt: Geheime Niederschrift" im Linux-Magazin 08/05 gibt es nun auch online zum lesen: Zum Artikel

    1) Einleitung
    2) Installation von dm-crypt
    3) Erstellung einer verschlüsselten Partition
    4) Verschlüsselte Swap Partition
    5) Anlegen eines verschlüsselten Containers
    6) Scripte für verschlüsselte Container

    28.08.2007 Link zum Linux-Magazin hinzugefügt
    23.02.2007 kleine Korrektur für die /etc/crypttab. Danke für den Hinweis.
    13.03.2006 Scripte für verschlüsselte Container, Howto Version 0.1.1
    13.03.2006 Anlegen eines verschlüsselten Containers, Howto Version 0.1.0
    12.03.2006 kleinere Anpassungen, v0.0.3
    25.02.2006 Fehlerkorrekturen, Ergänzungen, v0.0.2
    24.02.2006 Erstellung des Howto's v0.0.1

    Todo:
    • Erklärungen und Anwendungen zu dmsetup
    • Erklärungen und Anwendungen zu hashalot
    • Erstellung eines verschlüsselten Containers
    • Einbinden von GnuPG
    • Weitere Möglichkeiten mit dm-crypt


    Fragen zum Thema bitte nur im Forum stellen, ich gebe keinen Support außerhalb des Forums!

    Sollte sich irgendwo der Fehlerteufel eingeschlichen haben, dann schickt mir eine PN (Private Nachricht) oder eine E-Mail an holgi [at] linux-technik [dot] de und wer mir lieber mit gnupg schreiben möchte: Mein PGP-Key: Download

    Fingerprint:
    4DFA 402D 96E1 0F46 5232 68E3 9A3D FDE5 0527 CA77
    Geändert von DaGrrr (02.02.08 um 10:52 Uhr)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

  2. #2
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892

    Arrow

    Installation von dm-crypt:

    Die Installation von dm-crypt erfordert einige Einstellungen im Kernel 2.6.4 oder höher:

    Code maturity level options --->
    [*] Prompt for development and/or incomplete code/drivers
    Device Drivers --> RAID and LVM Support -->
    [*] Multiple devices driver support (RAID and LVM)
    <*> Device mapper support
    <*> Crypt target support
    Cryptographic Options -->
    <*> AES cipher algorithims (i586)
    <*> SHA256 digest algorithm
    und falls dm-crypt mit loopback genutzt wird, zb für Container:
    Device Drivers --> Block Devices -->
    <*> Loopback device support

    Anmerkung:
    • cryptoloop nicht aktivieren!
    • falls andere Algorithmen verwendet werden sollen,
      kannst du diese in „Cryptographic Options“ aktivieren.
    • Um -essiv nutzen zu können, bei der Erstellung der Verschlüsselung ist zwingend
      Kernel 2.6.10 oder höher notwendig!


    Falls ein Distributions eigener Kernel verwendet wird, brauchen nur die entsprechenden Module geladen werden.

    Zur Administration wird cryptsetup genutzt. Optional ist noch dmsetup und hashalot.
    Da eine wichtige Implementation bei cryptsetup fehlt, empfehle ich
    die Installation von cryptsetup mit LUKS-Unterstützung.

    Original Zitat vom cryptsetup Entwickler (http://www.saout.de/misc/dm-crypt):

    Clemens Fruhwirth is maintaining an enhanced version of cryptsetup with the LUKS extension that allows you to have an on-disk block of metadata which is superior to the current mechanism and was my long term plan anyway but I didn't find the time to implement that yet...
    Aus diesem Grund werden wir auch cryptsetup mit LUKS-Unterstützung installieren.

    Da ich Debian Sid User bin reicht folgender Befehl:

    Code:
    apt-get install cryptsetup dmsetup hashalot
    Anmerkung:
    • Debian Sid hat die LUKS-Unterstützung in cryptsetup bereits integriert!
    • Debian Sarge und älter haben keine LUKS Unterstützung in ihrem cryptsetup Paket!
    • Evtl. gibt es auch fertige Pakete für andere Distributionen, einfach mal nachschauen.


    Nicht Debian Sid User erhalten die Tools hier:

    cryptsetup:
    http://luks.endorphin.org/dm-crypt

    Hier kann man zwischen dem Sourcecode und einer statisch gelinkten und vor kompilierten Version wählen.
    Ich empfehle die schon fertige Version, die entpackt, umbenannt (cryptsetup) und nach /sbin verschoben wird.

    dmsetup gibt es hier:
    http://sources.redhat.com/dm/

    Eine Installations Anleitung ist im Paket enthalten.

    hashalot gibt es hier:
    http://www.paranoiacs.org/~sluskyb/hacks/hashalot/
    Geändert von DaGrrr (25.02.06 um 13:45 Uhr)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

  3. #3
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892
    A C H T U N G: Spätestens hier sollte ein Backup erstellt worden sein, bevor wir die
    folgenden Befehle ausführen, denn alle Daten gehen bei der Durchführung auf der entsprechenden Partition verloren!
    Erstellung einer verschlüsselten Partition:

    Wir nehmen an, das /dev/hda3 unsere zu verschlüsselnde Partition sein wird.

    Code:
    cryptsetup -c aes-cbc-essiv:sha256  -y luksFormat /dev/hda3
    • -c nimmt den von mir ausgewähltem verschlüsselungs Algorithmus, in diesem Fall
      aes-cbc-essiv, um einer Watermark Attacke aus dem Weg zu gehen und mit dem
      Hash Algorithmus sha256
    • -y damit wird das Passwort ein zweites mal abgefragt
    • luksFormat initialisiert eine LUKS Partition und setzt den initial Schlüssel.
    • /dev/hda3 ist die von mir gewählte Partition
    • Es wird nach Eingabe des Befehls ein Passwort für die neu erstellte Partition verlangt



    Code:
    cryptsetup luksOpen /dev/hda3 geheim
    • luksOpen öffnet die LUKS Partition und setzt einen mapping Namen
    • /dev/hda3 unsere Partition
    • geheim ist unser „mapping“ Name



    Code:
    mkfs.ext2 /dev/mapper/geheim
    • formatiert unsere erstellte Partition mit dem Dateisystem ext2



    Code:
    mount /dev/mapper/geheim /mnt/crypt
    • mountet unsere mit cryptsetup erstellte Partition



    unmounten können wir mit:

    Code:
    umount /mnt/crypt

    Code:
    cryptsetup luksClose geheim
    • luksClose schliesst das gemappte Device „geheim“



    Für den täglichen Gebrauch tragen wir nun unsere Cryptopartition in die Datei /etc/crypttab ein:
    Code:
    # target name  source device         key file      options
         geheim	/dev/hda3            none	 luks,cipher=aes-cbc-essiv:sha256

    Nun tragen wir in die Datei /etc/fstab folgendes ein:
    Code:
    /dev/mapper/geheim	/mnt/crypt	ext2	defaults,user	0	0
    Geändert von DaGrrr (23.02.07 um 16:50 Uhr)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

  4. #4
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892
    Verschlüsselte Swap Partition:

    Für ganz Paranoide gibt es die Möglichkeit, die Swap Partition zu verschlüsseln.
    Ich habe mir ein Script erstellt und nach /etc/init.d kopiert, ausführbar gemacht und die entsprechenden Links in die von mir gewünschten Runlevel angelegt, damit das Script bei jedem Bootvorgang ausgeführt wird.

    Das Script sieht so aus:

    Code:
    #!/bin/bash
    echo "Crypting Swap Partition with Twofish and 128Bit..."
    /sbin/cryptsetup -c twofish -s 128 -d /dev/urandom create swap0 /dev/sda2
    mkswap /dev/mapper/swap0
    swapon /dev/mapper/swap0
    echo "Crypting Swap Partition... finished!"
    Anmerkung: Algorithmus und Bitlänge kann mit dem zur Verfügung stehenden Algorithmen ausgetauscht werden.

    Nach erfolgreicher Initialisierung ist beim Bootvorgang folgendes zu sehen:

    Crypting Swap Partition with Twofish and 128Bit...
    Setting up swapspace version 1, size = 296103kb
    no label, UUID=......-....-....-....-..........
    Adding 289160k swap on /dev/mapper/swap0. Priority:-1 extents:1 across:289160k
    Crypting Swap Partition... finished!
    P E R F E K T ;-)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

  5. #5
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892
    Anlegen eines verschlüsselten Containers

    Falls keine freie Partition vorhanden ist, dann kann ein Containerfile eine Lösung darstellen. Damit der Container auch gemountet werden kann, benötigen wir wie bei der Kernelkonfiguration beschrieben „Loopback device support“. Ebenfalls werden wir hier LUKS verwenden.

    Als erstes erstellen wir uns mit Hilfe von „dd“ ein Container:

    Code:
    dd if=/dev/urandom of=geheim bs=1M count=50
    • dd ist das Programm
    • if=/dev/urandom füllt das erstellte File mit Zufallszahlen, Buchstaben und Sonderzeichen
    • of=geheim ist der Name des Files und wird im aktuellen Verzeichnis erstellt
    • bs=1M ist die Blockgröße für die Ein- und Ausgabedatei, bei uns 1 Megabyte
    • count=50 kopiert die angegebene Anzahl an Blocks



    Code:
    losetup /dev/loop0 geheim
    • losetup erstellt und setzt das loop-device
    • /dev/loop0 ist unser erstelltes loop-device
    • geheim ist unser Container



    Code:
    cryptsetup -c aes-cbc-essiv:sha256 -y luksFormat /dev/loop0
    • cryptsetup ist das Programm welches wir nutzen
    • -c nimmt den von mir ausgewähltem verschlüsselungs Algorithmus, in diesem Fall aes- cbc-essiv und mit dem Hash Algorithmus sha256
    • -y damit wird das Passwort ein zweites mal abgefragt
    • luksFormat initialisiert eine LUKS Partition und setzt den initial Schlüssel
    • /dev/loop0 ist nun das loop-device
    • Es wird nach Eingabe des Befehls ein Passwort für die neu erstellte Partition verlangt, muß ein weiteres mal bestätigt werden


    Code:
    cryptsetup luksOpen /dev/loop0 geheim
    • cryptseetup ist unser Programm
    • luksOpen öffnet den LUKS Container und setzt einen mapping Namen
    • /dev/loop0 unser loop-device
    • geheim ist hier der mapping Name


    Nun erstellen wir eine Partition in unserem Container und formatieren es mit dem Dateisystem ext2:

    Code:
    mkfs.ext2 /dev/mapper/geheim
    Wir mounten nun unseren Container:

    Code:
    mount -t ext2 /dev/mapper/geheim /mnt/cryptcontainer
    unmounten können wir das ganze mit:

    Code:
    umount /mnt/cryptcontainer
    
    cryptsetup luksClose geheim
    
    losetup -d /dev/loop0
    Wollen wir nun erneut unseren Container öffnen sind folgende Befehle notwendig:

    Code:
    losetup /dev/loop0 geheim
    
    cryptsetup luksOpen /dev/loop0 geheim
    
    mount -t ext2 /dev/mapper/geheim /mnt/cryptcontainer
    Geändert von DaGrrr (13.03.06 um 02:16 Uhr)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

  6. #6
    Moderator Avatar von DaGrrr
    Registriert seit
    Jul 2002
    Ort
    Berlin
    Beiträge
    1.892
    mount / umount Scripte für verschlüsselte Container

    Ich habe mir zwei Scripte geschrieben, damit ich nicht ständig die Befehle
    per Hand eingeben muß. Die Scripte führe ich als root aus, da die Befehle root-Rechte brauchen.
    Eine Alternative ist es SUDO einzusetzen. Damit ist es möglich die Befehle mit den Rechten von root auszuführen, obwohl man normaler User ist.
    Über sudo gibt es viele Berichte und ist daher nicht Bestandteil meines Howto's.

    dmcryptmount:
    Code:
    #!/bin/bash
    losetup /dev/loop0 /Pfad/zum/container
    sleep 1
    cryptsetup luksOpen /dev/loop0 geheim
    sleep 1
    mount -t ext2 /dev/mapper/geheim /mnt/cryptcontainer
    dmcryptumount:
    Code:
    #!/bin/bash
    umount /mnt/cryptcontainer
    cryptsetup luksClose geheim
    losetup -d /dev/loop0
    Die Scripte habe ich nach /usr/local/bin kopiert und ausführbar gemacht.
    Geändert von DaGrrr (21.03.06 um 11:35 Uhr)
    PC: Kubuntu 11.04
    Router: Soekris net4801 mit OpenBSD 4.8
    Server: OpenBSD 4.7
    Private Linux Page

Ähnliche Themen

  1. verschlüsseltes dateisystem wiederherstellen
    Von mafiahamster im Forum System installieren und konfigurieren
    Antworten: 4
    Letzter Beitrag: 27.12.04, 10:42
  2. Kernel 2.6 und verschlüsseltes Dateisystem
    Von topfpflanze im Forum System installieren und konfigurieren
    Antworten: 1
    Letzter Beitrag: 30.05.04, 13:36
  3. verschlüsseltes dateisystem, passwort weg
    Von [Win]Dragan im Forum Linux Allgemein
    Antworten: 22
    Letzter Beitrag: 22.12.03, 09:18
  4. Verschlüsseltes Dateisystem??
    Von Simcemilia im Forum Sicherheit
    Antworten: 2
    Letzter Beitrag: 06.09.02, 12:08
  5. Verschlüsseltes Dateisystem mit ReiserFS
    Von victor im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 20.05.00, 11:49

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •