NoPaste

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:
  1. Automatische Entschlüsselung mit einem USB-Stick ohne sichtbares Keyfile
  2.  
  3. 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.
  4.  
  5. Vorgehen kommt im wesentlichen aus dem Artikel:
  6. https://wiki.ubuntuusers.de/System_verschl%C3%BCsseln/Entschl%C3%BCsseln_mit_einem_USB-Schl%C3%BCssel/
  7. und wurde hier leicht modifiziert und vereinfacht. Funktioniert bis Wheezy und möglicherweise auch bei Jessie ohne systemd (ungetestet).
  8.  
  9.  
  10. Vorbereitung Memorystick zur Entschlüsselung
  11.  
  12. * Stick mit blkid identifizieren:
  13.  
  14. # blkid
  15. /dev/mapper/sda5_crypt: UUID="540bea45-2fb6-4003-b8d6-e897491d2a38" TYPE="swap"
  16. /dev/sda2: UUID="b8d00dfa-ce9c-4817-ab17-de8dc8ceb8ce" TYPE="crypto_LUKS"
  17. /dev/sda5: UUID="9f0e7be1-6f92-4829-a2d1-45705f7200d7" TYPE="crypto_LUKS"
  18. /dev/sda1: LABEL="boot" UUID="fdd1e309-a08e-4f0b-9e5f-3caa6c67a875" TYPE="ext4"
  19. /dev/sda6: UUID="605b3de5-d7c9-4720-b17c-448b47419c61" TYPE="ext4"
  20. /dev/mapper/sda2_crypt: UUID="c5635cd7-a7d5-41ce-8dfd-b09d6a0b8fbe" TYPE="ext4"
  21. /dev/sdc5: UUID="ec50d934-fda0-4b79-afbe-f2a649963c28" TYPE="crypto_LUKS"
  22. /dev/sde1: LABEL="RH020-1" UUID="BAB2-A381" TYPE="vfat"
  23. /dev/sdb5: UUID="9cd6a5b7-9250-4aa7-92c1-2ea328588e59" TYPE="crypto_LUKS"
  24. /dev/mapper/lap_crypt: UUID="guiryP-Gy3h-v1w0-AogF-eG9d-Ih2W-ay0Wt8" TYPE="LVM2_member"
  25. /dev/mapper/vg03-2_tmp: UUID="dafe587b-acc4-4123-a15e-963c5cb43753" TYPE="ext4"
  26. /dev/mapper/vg03-3_home: UUID="1c0d08cd-9d51-4207-9931-27d18f351c4d" TYPE="ext4"
  27. /dev/mapper/vg03-4_vbimage: UUID="a0d25899-1918-4d81-9be1-6701da0d469a" TYPE="ext4"
  28.  
  29.  
  30. * Schauen wieviel Platz vor der Partition ist:
  31.  
  32. # fdisk -lu /dev/sde
  33.  
  34. Disk /dev/sdd: 7803 MB, 7803174912 bytes
  35. 122 heads, 58 sectors/track, 2153 cylinders, total 15240576 sectors
  36. Units = sectors of 1 * 512 = 512 bytes
  37. Sector size (logical/physical): 512 bytes / 512 bytes
  38. I/O size (minimum/optimal): 512 bytes / 512 bytes
  39. Disk identifier: 0xc3072e18
  40.  
  41.    Device Boot      Start         End      Blocks   Id  System
  42. /dev/sde1   *        8064    15240575     7616256    b  W95 FAT32
  43.  
  44.  
  45. * Zufallsdaten in den freien Bereich schreiben:
  46.  
  47. # dd if=/dev/urandom of=/dev/sde seek=1 bs=512 count=511
  48.  
  49. 511+0 Datensätze ein
  50. 511+0 Datensätze aus
  51. 261632 Bytes (262 kB) kopiert, 0,179494 s, 1,5 MB/s
  52.  
  53.  
  54. * 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:
  55.  
  56. # dd if=/dev/sdd bs=512 skip=15 count=8 > /root/M4-SSD.key
  57. 8+0 Datensätze ein
  58. 8+0 Datensätze aus
  59. 4096 Bytes (4,1 kB) kopiert, 0,00291672 s, 1,4 MB/s
  60.  
  61. # dd if=/dev/sdd bs=512 skip=23 count=8 > /root/RaptorIV.key
  62.  
  63.  
  64. Weiter am Rechner
  65.  
  66.  
  67. * SSD-Partitionen  mit neuen Schlüsseln versehen.  
  68.  
  69. # cd /root
  70. # cryptsetup luksAddKey /dev/sda2 M4-SSD.key
  71. # cryptsetup luksAddKey /dev/sda5 M4-SSD.key
  72. # cd /
  73.  
  74.  
  75. * Skript zur Entschlüsselung
  76. Das Skript ist eine vereinfachte Version dessen was in dem Artikel vorgeschlagen wird mit integrierter Konfiguration.
  77.  
  78. #!/bin/sh
  79.  
  80. # Vorbelegungen
  81. TRUE=1
  82. FALSE=0
  83. OPENED=$FALSE
  84.  
  85. # Konfiguration
  86. # ID(s) of the USB key for decryption
  87. # as listed in /dev/disk/by-id/
  88. DKD_DISKID="usb-TOSHIBA_TransMemory_00D0C9CE66D5EC507000DAE9-0:0"
  89.  
  90. # blocksize usually 512 is OK
  91. DKD_BLOCKSIZE="512"
  92.  
  93. # start of key information on keydevice DKD_BLOCKSIZE * DKD_SKIPBLOCKS
  94. DKD_SKIPBLOCKS="15"
  95.  
  96. # length of key information on keydevice DKD_BLOCKSIZE * DKD_READBLOCKS
  97. DKD_READBLOCKS="8"
  98.  
  99. # vfat für USB-Stick laden
  100. # Is the USB driver loaded?
  101.         cat /proc/modules | busybox grep usb_storage >/dev/null 2>&1
  102.         USBLOAD=0$?
  103.         if [ $USBLOAD -gt 0 ]; then
  104.                 modprobe usb_storage >/dev/null 2>&1
  105.         fi
  106.  
  107. # 5 Sekunden warten damit der Stick bereit ist
  108. sleep 5
  109.  
  110. # Ist der Stick vorhanden?
  111. DKD_FILE="/dev/disk/by-id/$DKD_DISKID"
  112. if [ -e $DKD_FILE ] ; then
  113.         OPENED=$TRUE
  114. fi
  115.  
  116. # Schluessel ausgeben
  117. if [ $OPENED -eq $TRUE ]; then
  118.         /bin/dd if=$DKD_FILE bs=$DKD_BLOCKSIZE skip=$DKD_SKIPBLOCKS count=$DKD_READBLOCKS 2>/dev/null
  119. fi
  120.  
  121. Dieses Skript per Editor z.B. in /root als SSD-M4.sh ablegen und die Variablen an die eigenen Verhältnisse anpassen.
  122.  
  123.  
  124. * Vorbereitetes Skript bereitstellen und ausführbar machen
  125.  
  126. # cd /etc
  127. # mkdir dcrypt
  128. # cd dcrypt
  129. # cp /root/SSD-M4.sh .
  130. # chmod +x *.sh
  131. # ls -la
  132.  
  133.  
  134. * Die crypttab anpassen wie folgt:
  135.  
  136. #sda2_crypt UUID=74e9067a-10a1-44c7-a63c-e37ed98fe229 none luks
  137. sda2_crypt UUID=74e9067a-10a1-44c7-a63c-e37ed98fe229 none luks,discard,tries=3,keyscript=/etc/dcrypt/SSD-M4.sh
  138.  
  139. #sda5_crypt UUID=3366f575-75a6-4d81-a46f-5b6264898adc none luks,swap
  140. sda5_crypt UUID=3366f575-75a6-4d81-a46f-5b6264898adc none luks,swap,tries=3,keyscript=/etc/dcrypt/SSD-M4.sh
  141.  
  142.  
  143. * Das initramfs sichern und aktualisieren
  144.  
  145. # cd /boot
  146. # ls
  147. # cp initrd.img-3.16.0-0.bpo.4-amd64 initrd.img-3.16.0-0.bpo.4-amd64_170127
  148. # update-initramfs -u -k all
  149.  
  150.  
  151. * Reboot
  152. 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.
  153.  
  154.  
  155. Die Raptor zusätzlich entschlüsseln
  156.  
  157. * Raptor mit neuen Schlüsseln versehen.
  158.  
  159. # cd /root
  160. # cryptsetup luksAddKey /dev/sdc5 RaptorIV.key
  161.  
  162.  
  163. * Skript SSD-M4.sh kopieren und per Editor anpassen an die Raptor.
  164.  
  165. # cd /etc/dcrypt
  166. # cp SSD-M4.sh Raptor.sh
  167.  
  168.  
  169. * Raptor in der crypttab scharf machen:
  170.  
  171. rap_crypt UUID=353d408d-4949-45cb-b58d-dc2be5090634 none luks,keyscript=/etc/dcrypt/Raptor.sh
  172.  
  173.  
  174. * Die initramfs vorbereiten:
  175.  
  176. # update-initramfs -u -k all
  177.  
  178.  
  179. * Reboot
  180.  
  181.  
  182. 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