Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| linux:festplattenverschlüsselung [2008/03/14 23:34] – st | linux:festplattenverschlüsselung [2023/10/26 08:04] (aktuell) – [dauerhaft beim Booten mounten] st | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Festplattenverschlüsselung mit Luks ====== | ||
| + | Festplattenverschlüsselung, | ||
| + | Die einzelnen Schritte beziehen sich in diesem Kapitel alle auf LUKS (falls nicht anders angegeben). | ||
| + | |||
| + | ===== technische Hintergründe ===== | ||
| + | |||
| + | **Technisch** wird grundsätzlich eine Zwischenschicht installiert, | ||
| + | |||
| + | Nötige Kernelmodule: | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | |||
| + | Wenn man einen aktuellen Prozessor (Pentium und auf aufwärts + kompatible) einsetzt sollte man aus Geschwindigkeitsgründen immer statt aes das Modul " | ||
| + | |||
| + | Das Management-Tool LUKS (Linux Unified Key Setup) hilft bei der Verwaltung und bietet die Möglichkeit mehrere **Passwörter** (bis zu 8 pro Container) zu vergeben und diese auch zu **löschen** ('' | ||
| + | |||
| + | Bei [[linux: | ||
| + | |||
| + | {{ linux: | ||
| + | |||
| + | |||
| + | Eine **Verschlüsselung auf Datei- oder Verzeichnisebene ** lässt sich mit GNU PG (PGP) erreichen, Zusatzprogramme wie [[http:// | ||
| + | |||
| + | |||
| + | :!: Mit [[software: | ||
| + | |||
| + | :!: Eine gute und für Windows und Linux erhältliche Alternative ist [[Software: | ||
| + | |||
| + | ^ Datenträgerverschlüsselung | ||
| + | | ^ dateiweise ^ komplettes Dateisystem ^ | ||
| + | | Kernelspace | eCryptfs (experimentell) | dm-crypt, dm-crypt/ | ||
| + | | Userspace | CryptoFS, EncFS | | | ||
| + | |||
| + | |||
| + | ===== Zugriff von einer Live-CD ===== | ||
| + | |||
| + | Von einer [[ubuntu: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | sudo aptitude -y install cryptsetup lvm2 | ||
| + | sudo modprobe dm-crypt | ||
| + | sudo modprobe dm_mod | ||
| + | sudo modprobe aes_i586 | ||
| + | # you may want to mount your disk at this point... | ||
| + | # sudo cryptsetup luksOpen /dev/sda1 HD1 | ||
| + | # mkdir ~/HD1 | ||
| + | # mount -t ext3 / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Warum Datenträgerverschlüsselung? | ||
| + | Datenträgerverschlüsselung kann in vieler Hinsicht Sinn machen: | ||
| + | |||
| + | * Niemand soll meine Daten lesen können. | ||
| + | * Es soll nicht möglich sein nachzuweisen, | ||
| + | * Niemand soll gezielt verschlüsselte Daten manipulieren können. | ||
| + | * Niemand soll nachweisen können, dass ich in letzter Zeit bestimmte Daten geschrieben habe. | ||
| + | |||
| + | Ob es um den Schutz sensibler Kundendaten geht oder ein Schutz sensibler Daten bei Diebstahl (z.B. bei Laptops ein großes Problem), es gibt viele Gründe seine Festplatte zu verschlüsseln. | ||
| + | |||
| + | Ein möglicher Nachteil ist die hohe Systembelastung (vorrangig der CPU) durch die Verschlüsselung/ | ||
| + | Es hilft natürlich nicht gegen Angriffe im laufenden Betrieb und gegen das Ausnutzen von Sicherheitslücken im System oder gezielt in der kryptografischen Implementierung. Wenn man keine Sicherheitsupdates (" | ||
| + | |||
| + | Auch die Auslagerungspartition sollte verschlüsselt sein, da hier sensible Informationen ausgelagert sein könnten. | ||
| + | |||
| + | :!: TIP: Die " | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Links ===== | ||
| + | * [[windows: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | |||
| + | ==== dm-crypt ==== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | === LUKS === | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | |||
| + | ==== loop-AES (veraltet) ==== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | |||
| + | ==== andere Ansätze ==== | ||
| + | * [[wpde> | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Verschlüsselung bei Luks ===== | ||
| + | |||
| + | * CBC | ||
| + | * gut erforscht, zuverlässig | ||
| + | * anfällig gegen " | ||
| + | * ab [[linux: | ||
| + | * LRW: | ||
| + | * sollte prinzipiell schneller als CBC sein, auf dem [[ubuntu: | ||
| + | * sicherer (als CBC) | ||
| + | * seit längerem unterstützt (ab [[linux: | ||
| + | |||
| + | ==== verschlüsselte Datenträger öffnen ==== | ||
| + | Der Zugriff erfolgt über einen sog. " | ||
| + | |||
| + | - **den Container/ | ||
| + | - **mit Passwort**: <code bash> | ||
| + | - **mit Keyfile**: <code bash> | ||
| + | - das **Dateisystem mounten**: < | ||
| + | |||
| + | |||
| + | === dauerhaft beim Booten mounten === | ||
| + | Wenn in der Datei ''/ | ||
| + | < | ||
| + | # <target name> <source device> | ||
| + | home / | ||
| + | </ | ||
| + | dann reicht: | ||
| + | mount / | ||
| + | Wenn man beim booten das Passwort falsch eingegeben hat, kann man die Abfrage durch den Befehl | ||
| + | |||
| + | systemctl restart cryptsetup.target | ||
| + | neu starten ((früher / | ||
| + | |||
| + | :!: Bei der Verwendung von Key-Files trägt man in der ''/ | ||
| + | < | ||
| + | # <target name> <source device> | ||
| + | home / | ||
| + | </ | ||
| + | den Dateinamen und Pfad in der 3. Spalte ein (im Beispiel ''/ | ||
| + | |||
| + | :!: Wenn man (wie es jetzt eigentlich aktuell ist) anstatt der alten Angabe von /dev/sda2 die sich nicht änderbare UUID für [[wpde> | ||
| + | - muss man diese mit '' | ||
| + | - diese Zeile in die crypttab eintragen: | ||
| + | < | ||
| + | NAME / | ||
| + | </ | ||
| + | Die UUID (fbbb34d4-06b9-40d6-84ee-ad714579fcc6) muss natürlich durch die passende ersetzt werden. | ||
| + | |||
| + | === Passwort remote bei vollverschlüsseltem System eingeben === | ||
| + | |||
| + | [[https:// | ||
| + | ==== Anlegen eines verschlüsselten Datenträgers ==== | ||
| + | |||
| + | Hier wird kurz die Einrichtung eines verschlüsselten USB-Stick besprochen, der unter den verschiedenen Betriebssystem gleichmaßen angesprochen werden kann. | ||
| + | |||
| + | === luksformat wrapper === | ||
| + | |||
| + | Wenn man nicht alle Schritte manuell durchführen will, hilft auch das Perl-Skript ''/ | ||
| + | |||
| + | Der Aufruf erfolgt nach folgendem Muster: < | ||
| + | |||
| + | Für die 1.SATA-Festplatte und Formatierung mit ext4 sollte die Installation so aussehen: | ||
| + | |||
| + | <code bash> | ||
| + | < | ||
| + | Erstelle verschlüsselte Partition auf / | ||
| + | |||
| + | WARNING! | ||
| + | ======== | ||
| + | Hiermit überschreiben Sie Daten auf »/ | ||
| + | |||
| + | Are you sure? (Type uppercase yes): YES | ||
| + | Passphrase eingeben: | ||
| + | Passphrase wiederholen: | ||
| + | Bitte zum verifizieren das Passwort erneut eingeben | ||
| + | Geben Sie die Passphrase für »/ | ||
| + | mke2fs 1.42.13 (17-May-2015) | ||
| + | Ein Dateisystems mit 488377856 (4k) Blöcken und 122101760 Inodes wird erzeugt. | ||
| + | UUID des Dateisystems: | ||
| + | Superblock-Sicherungskopien gespeichert in den Blöcken: | ||
| + | 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, | ||
| + | 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, | ||
| + | 102400000, 214990848 | ||
| + | |||
| + | beim Anfordern von Speicher für die Gruppentabellen: | ||
| + | Inode-Tabellen werden geschrieben: | ||
| + | Das Journal (32768 Blöcke) wird angelegt: erledgt | ||
| + | Die Superblöcke und die Informationen über die Dateisystemnutzung werden | ||
| + | geschrieben: | ||
| + | </ | ||
| + | |||
| + | |||
| + | === manuelle Einrichtung === | ||
| + | |||
| + | Wenn man die **Schritte manuell** eingeben will, dann geht ab hier los; die ausführliche Version gibts auf dieser Seite: [[http:// | ||
| + | Bei mir ist der Stick das Gerät /dev/sda1 (unverschlüsselt) und sda2 (verschlüsselt), | ||
| + | |||
| + | |||
| + | - < | ||
| + | - den Container/ | ||
| + | - das **Dateisystem fat32 anlegen** (damit alle Betriebssysteme schreibunterstützung haben): < | ||
| + | - das **Dateisystem mounten**: < | ||
| + | - Änderungen vornehmen (Dateien kopieren, ändern, ...) | ||
| + | |||
| + | === Passwörter hinzufügen / entfernen === | ||
| + | |||
| + | * **Passwörter hinzufügen**: | ||
| + | < | ||
| + | Die Ausgabe ist dann ähnlich zu dieser hier: | ||
| + | Enter any existing LUKS password: aktuelles Passwort | ||
| + | Zuerst muss man eins der Passwörter angeben | ||
| + | key slot 0 unlocked. | ||
| + | Das Passwort wurde akzeptiert. | ||
| + | Enter new password for key slot: neues Passwort | ||
| + | Neues Passwort eingeben. | ||
| + | |||
| + | * **Passwörter entfernen**: | ||
| + | < | ||
| + | Im Beispiel wird der KeySlot 1 auf der Partition /dev/sda1 gelöscht. | ||
| + | |||
| + | ==== Keyfiles hinzufügen / entfernen ==== | ||
| + | Zusätzlich (z.B. wenn man nicht mehrfach Schlüssel eingeben möchte) ist die **Verwendung von Keyfiles** (Dateien die den Zugangschlüssel enthalten bzw. als solcher dienen) möglich. Auch bei automatisierten Backups bietet sich diese Vorgehensweise an. | ||
| + | Die Keyfiles sollte man allerdings sehr gut absichern, es bietet sich die Ablage auf dem ersten verschlüsselten Laufwerk an. Die Dateien sollte ausschließlich root lesen können ('' | ||
| + | |||
| + | * **Keyfile erzeugen**: | ||
| + | < | ||
| + | Hiermit wird ein 256 Bit großes Keyfile aus Zufallswerten erzeugt. Der Speicherort ist hier ''/ | ||
| + | * **Keyfile hinzufügen**: | ||
| + | /dev/sda1 ist natürlich nur ein Vorschlag und sollte ggf. angepasst werden, wenn alles stimmt ergibt sich folgende Ausgabe: | ||
| + | < | ||
| + | Enter any LUKS passphrase: | ||
| + | key slot 0 unlocked. | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Wenn man ganz ohne Passwörter auskommen will, gibt man beim formatieren des Datenträgers nur das Keyfile an: | ||
| + | cryptsetup luksFormat /dev/sda1 / | ||
| + | |||
| + | * **Keyfiles entfernen** geht allgemein anhand des Keyslots (wie oben): < | ||
| + | |||
| + | |||
| + | |||
| + | ==== Datenträger auswerfen ==== | ||
| + | - Dateisystem aushängen: < | ||
| + | - den verschlüsselten Datenträger aus dem den Mapper entfernen: < | ||
| + | |||
| + | :!: Alle Datenträger lassen sich (wenn die jeweiligen Dateisystem bereits ausgehangen sind) mit < | ||
| + | |||
| + | === Shell-Skript zum Auswerfen eines verschlüsselten Dateisystems === | ||
| + | http:// | ||
| + | |||
| + | Dieses Skript | ||
| + | * wirft den Datenträger aus (unmount) | ||
| + | * entfernt den " | ||
| + | |||
| + | Die Variablen | ||
| + | - mappername | ||
| + | - mpoint | ||
| + | müssen an die richtigen Einstellungen angepasst werden. | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | mappername=" | ||
| + | mpoint="/ | ||
| + | |||
| + | if grep $mpoint /etc/mtab > /dev/null; then | ||
| + | fuser -m $mpoint > /dev/null || (umount / | ||
| + | else | ||
| + | echo $mpoint is not mounted! | ||
| + | if [ -e / | ||
| + | echo " | ||
| + | cryptsetup remove $mappername | ||
| + | fi | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | ==== Informationen anzeigen ==== | ||
| + | |||
| + | Mit dem Befehl dmsetup kann man schauen, ob verschlüsselte Datenträger vorhanden sind. | ||
| + | * Informationen über sämmtliche (verschlüsselte und eingehangene) Datenträger< | ||
| + | * Informationen über einzelne (verschlüsselte und eingehangene ) Datenträger: | ||
| + | < | ||
| + | oder sehr ausführliche Header-Informationen mit verwendeten key-slots: | ||
| + | < | ||
| + | |||
| + | ==== verschlüsselte Datenträger vergrößern ohne LVM ==== | ||
| + | |||
| + | Optional: Falls man einen RAID-Controller mit Migration-Funktion hat, kann dieser ohne Datenverlust neue Platten einbinden und damit die Kapazität erhöhen. | ||
| + | |||
| + | * fdisk (bei Partitionen bis 2 TB):< | ||
| + | p # | ||
| + | d #sda1 gelöscht (Daten werden nicht gelöscht sondern der Master boot record (MBR) | ||
| + | n #mit den Vorgegebenen Werten eine Partition über die ganze platte erstellt | ||
| + | w # | ||
| + | q | ||
| + | </ | ||
| + | * bei GPT-Partitionen funktioniert cfdisk:< | ||
| + | |||
| + | Cryptsetup macht macht den resize automatisch: | ||
| + | sudo cryptsetup luksOpen /dev/sda1 sda | ||
| + | Dateisystemcheck muss vorher gemacht werden: | ||
| + | e2fsck -f / | ||
| + | Das ext3-Dateisystem wird an die neue Größe ausgedehnt: | ||
| + | sudo resize2fs -p / | ||
| + | optional nochmal checken: | ||
| + | e2fsck -f / | ||
| + | |||
| + | siehe auch: [[http:// | ||
| + | |||
| + | |||
| + | ==== verschlüsselte Datenträger verkleinern ==== | ||
| + | |||
| + | <code bash> | ||