Automatische Entschlüsselung mit einem USB-Stick
von rhHeini- SNIPPET_DESC:
- Vorgehen ohne ohne sichtbares Keyfile mit vereinfachtem Skript
- SNIPPET_CREATION_TIME:
- 19.02.2017 21:18:56
- SNIPPET_PRUNE_TIME:
- Unendlich
- SNIPPET_TEXT:
-
- Automatische Entschlüsselung mit einem USB-Stick ohne sichtbares Keyfile
- Der Rechner hat eine verschlüselte root-Partition auf sda2, eine verschlüsselte swap-Partition auf sda5, sowie eine verschlüsselte Festplatte mit einem LVM mit 4 logischen Volumes in sdb5. sda ist eine SSD, sdb eine WD Velociraptor. Verwendet wurde Wheezy amd64 mit Mate Desktop aus den Backports.
- Vorgehen kommt im wesentlichen aus dem Artikel:
- https://wiki.ubuntuusers.de/System_verschl%C3%BCsseln/Entschl%C3%BCsseln_mit_einem_USB-Schl%C3%BCssel/
- und wurde hier leicht modifiziert und vereinfacht. Funktioniert bis Wheezy und möglicherweise auch bei Jessie ohne systemd (ungetestet).
- Vorbereitung Memorystick zur Entschlüsselung
- * Stick mit blkid identifizieren:
- # blkid
- /dev/mapper/sda5_crypt: UUID="540bea45-2fb6-4003-b8d6-e897491d2a38" TYPE="swap"
- /dev/sda2: UUID="b8d00dfa-ce9c-4817-ab17-de8dc8ceb8ce" TYPE="crypto_LUKS"
- /dev/sda5: UUID="9f0e7be1-6f92-4829-a2d1-45705f7200d7" TYPE="crypto_LUKS"
- /dev/sda1: LABEL="boot" UUID="fdd1e309-a08e-4f0b-9e5f-3caa6c67a875" TYPE="ext4"
- /dev/sda6: UUID="605b3de5-d7c9-4720-b17c-448b47419c61" TYPE="ext4"
- /dev/mapper/sda2_crypt: UUID="c5635cd7-a7d5-41ce-8dfd-b09d6a0b8fbe" TYPE="ext4"
- /dev/sdc5: UUID="ec50d934-fda0-4b79-afbe-f2a649963c28" TYPE="crypto_LUKS"
- /dev/sde1: LABEL="RH020-1" UUID="BAB2-A381" TYPE="vfat"
- /dev/sdb5: UUID="9cd6a5b7-9250-4aa7-92c1-2ea328588e59" TYPE="crypto_LUKS"
- /dev/mapper/lap_crypt: UUID="guiryP-Gy3h-v1w0-AogF-eG9d-Ih2W-ay0Wt8" TYPE="LVM2_member"
- /dev/mapper/vg03-2_tmp: UUID="dafe587b-acc4-4123-a15e-963c5cb43753" TYPE="ext4"
- /dev/mapper/vg03-3_home: UUID="1c0d08cd-9d51-4207-9931-27d18f351c4d" TYPE="ext4"
- /dev/mapper/vg03-4_vbimage: UUID="a0d25899-1918-4d81-9be1-6701da0d469a" TYPE="ext4"
- * Schauen wieviel Platz vor der Partition ist:
- # fdisk -lu /dev/sde
- Disk /dev/sdd: 7803 MB, 7803174912 bytes
- 122 heads, 58 sectors/track, 2153 cylinders, total 15240576 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0xc3072e18
- Device Boot Start End Blocks Id System
- /dev/sde1 * 8064 15240575 7616256 b W95 FAT32
- * Zufallsdaten in den freien Bereich schreiben:
- # dd if=/dev/urandom of=/dev/sde seek=1 bs=512 count=511
- 511+0 Datensätze ein
- 511+0 Datensätze aus
- 261632 Bytes (262 kB) kopiert, 0,179494 s, 1,5 MB/s
- * Schlüssel für die SSD und die Raptor festlegen. Die SSD startet bei Sektor 16, die Raptor bei 24, die Schlüssel sind jeweils 8 Sektoren lang. Auslesen und in Dateien schreiben:
- # dd if=/dev/sdd bs=512 skip=15 count=8 > /root/M4-SSD.key
- 8+0 Datensätze ein
- 8+0 Datensätze aus
- 4096 Bytes (4,1 kB) kopiert, 0,00291672 s, 1,4 MB/s
- # dd if=/dev/sdd bs=512 skip=23 count=8 > /root/RaptorIV.key
- Weiter am Rechner
- * SSD-Partitionen mit neuen Schlüsseln versehen.
- # cd /root
- # cryptsetup luksAddKey /dev/sda2 M4-SSD.key
- # cryptsetup luksAddKey /dev/sda5 M4-SSD.key
- # cd /
- * Skript zur Entschlüsselung
- Das Skript ist eine vereinfachte Version dessen was in dem Artikel vorgeschlagen wird mit integrierter Konfiguration.
- #!/bin/sh
- # Vorbelegungen
- TRUE=1
- FALSE=0
- OPENED=$FALSE
- # Konfiguration
- # ID(s) of the USB key for decryption
- # as listed in /dev/disk/by-id/
- DKD_DISKID="usb-TOSHIBA_TransMemory_00D0C9CE66D5EC507000DAE9-0:0"
- # blocksize usually 512 is OK
- DKD_BLOCKSIZE="512"
- # start of key information on keydevice DKD_BLOCKSIZE * DKD_SKIPBLOCKS
- DKD_SKIPBLOCKS="15"
- # length of key information on keydevice DKD_BLOCKSIZE * DKD_READBLOCKS
- DKD_READBLOCKS="8"
- # vfat für USB-Stick laden
- # Is the USB driver loaded?
- cat /proc/modules | busybox grep usb_storage >/dev/null 2>&1
- USBLOAD=0$?
- if [ $USBLOAD -gt 0 ]; then
- modprobe usb_storage >/dev/null 2>&1
- fi
- # 5 Sekunden warten damit der Stick bereit ist
- sleep 5
- # Ist der Stick vorhanden?
- DKD_FILE="/dev/disk/by-id/$DKD_DISKID"
- if [ -e $DKD_FILE ] ; then
- OPENED=$TRUE
- fi
- # Schluessel ausgeben
- if [ $OPENED -eq $TRUE ]; then
- /bin/dd if=$DKD_FILE bs=$DKD_BLOCKSIZE skip=$DKD_SKIPBLOCKS count=$DKD_READBLOCKS 2>/dev/null
- fi
- Dieses Skript per Editor z.B. in /root als SSD-M4.sh ablegen und die Variablen an die eigenen Verhältnisse anpassen.
- * Vorbereitetes Skript bereitstellen und ausführbar machen
- # cd /etc
- # mkdir dcrypt
- # cd dcrypt
- # cp /root/SSD-M4.sh .
- # chmod +x *.sh
- # ls -la
- * Die crypttab anpassen wie folgt:
- #sda2_crypt UUID=74e9067a-10a1-44c7-a63c-e37ed98fe229 none luks
- sda2_crypt UUID=74e9067a-10a1-44c7-a63c-e37ed98fe229 none luks,discard,tries=3,keyscript=/etc/dcrypt/SSD-M4.sh
- #sda5_crypt UUID=3366f575-75a6-4d81-a46f-5b6264898adc none luks,swap
- sda5_crypt UUID=3366f575-75a6-4d81-a46f-5b6264898adc none luks,swap,tries=3,keyscript=/etc/dcrypt/SSD-M4.sh
- * Das initramfs sichern und aktualisieren
- # cd /boot
- # ls
- # cp initrd.img-3.16.0-0.bpo.4-amd64 initrd.img-3.16.0-0.bpo.4-amd64_170127
- # update-initramfs -u -k all
- * Reboot
- Wenn es keinen Fehler gab wird /root und swap automatisch entschlüsselt. Ansonsten kann man mit einem Life-System wie z.B. Knoppix starten und das Backup der initrd wieder scharf machen um den Fehler zu finden und zu fixen.
- Die Raptor zusätzlich entschlüsseln
- * Raptor mit neuen Schlüsseln versehen.
- # cd /root
- # cryptsetup luksAddKey /dev/sdc5 RaptorIV.key
- * Skript SSD-M4.sh kopieren und per Editor anpassen an die Raptor.
- # cd /etc/dcrypt
- # cp SSD-M4.sh Raptor.sh
- * Raptor in der crypttab scharf machen:
- rap_crypt UUID=353d408d-4949-45cb-b58d-dc2be5090634 none luks,keyscript=/etc/dcrypt/Raptor.sh
- * Die initramfs vorbereiten:
- # update-initramfs -u -k all
- * Reboot
- Wie die LVM-Volumes eingebunden werden wird hier nicht erklärt.
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN