Guest User

Untitled

a guest
Jul 20th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.35 KB | None | 0 0
  1. Guide til passordløs oppstart med kryptert system i Ubuntu.
  2. October 11th, 2009 by Tor Martin Leave a reply »
  3. Hvis du er som meg, litt over normalt forsiktig eller kanskje også en smule paranoid – har du kryptert alle dine disker og partisjoner.Dette er vel og greit, men det blir i lengden irriterende å måtte skrive inn det lange kryptiske passordet du valgte som nøkkel for din(e) partisjoner under oppstart av maskinen. Mitt system består av to fysiske harddisker, en som kjører systemet, og en til lagring etc. Systemdisken kjører kryptering av / (root) samt swap partisjonen, to partisjoner totalt, men koblet sammen ved hjelp av linux LVM. Den andre disken har en stor kryptert partisjon. Ettersom jeg monterer alle partisjonene under oppstart, er jeg bundet til å skrive inn krypterings-nøkkelen (passordet) minst to ganger…
  4.  
  5. Jeg har en stund lekt med tanken om å plassere disse passordene/nøkklene på en gammel usb minnepinne jeg har liggende, slik at init-scriptene i systemet kan hente ut disse under oppstart, noe som betyr at jeg ikke trenger å skrive inn passordet(ene) hver eneste gang jeg starter, restarter, eller gud forby, kræsjer, henger, tryner, whatever…
  6.  
  7. Joda, etter litt nøye research kom jeg frem til at dette er fullt mulig, kun noen små operasjoner er nødvendig.
  8.  
  9. Jeg vil i denne guiden forklare hvordan du skal sette opp crypttab, initrd, cryptsetup samt din minnepinne eller ekstern usb-harddisk for å oppnå en uavbrutt oppstart selv om dine harddisker er kryptert og trenger passord for å kunne bli åpnet. Du vil trenge superbrukertilgang og ha noe forståelse av terminalen og vanlige operasjoner i linux. Denne guiden forutsetter at du har installert og satt opp systemet med kryptering, enten selv etter eller under installasjonen. Selv om det her blir forklart hvordan du gjør dette i Ubuntu (Heron) vil stegene lett kunne konverteres til andre systemer som kjører noenlunde samme oppsett. NB: “bash$” skal ikke taes med som en kommando.
  10.  
  11. Ok – da begynner vi.
  12. 1. Det første vi gjør er å finne ut hvilken partisjoner du har kryptert
  13. bash$ sudo cat /etc/crypttab
  14.  
  15. Denne kommandoen vil skrive ut innholdet i /etc/crypttab, og ut i fra dette vil du finne ut hva dine krypterte disker heter. En linje inneholder informasjon om en partisjon som blir montert under oppstart. Inneholdet i denne fila kan variere noe ettersom hvordan du har konfigurert din kryptering, men en standard Ubuntu konfigurasjon ser slik ut:
  16. sda5_crypt /dev/disk/by-uuid/ef4af71d-a86c-438d-8tr58-94502caa4582 none luks
  17.  
  18. Det vi er ute etter her er andre argument, /dev/disk/by-uuid/ef4af71d-a86c-438d-8tr58-94502caa4582, dette gir deg uuid navnet/id’en til din partisjon. For å koble denne til en enhet gjør du følgende:
  19. bash$ ls -al /dev/disk/by-uuid/
  20.  
  21. Finn linjen som korresponderer med id’en i crypttab og noter enhetsnavnet til partisjonen. Min er koblet til /dev/sda5. Vi vet nå hvilken partisjon vi skal konfigurere, nemlig /dev/sda5.
  22. 2. Lage en ny og bedre krypteringsnøkkel.
  23.  
  24. Gå til ditt hjemmeområde og kjør denne kommandoen:
  25. bash$ head -c 2880 /dev/urandom | uuencode -m – | head -n 65 | tail -n 64 > root.key
  26.  
  27. Hvis denne kommandoen ikke fungerer mangler du nok sharutils, fiks dette ved å kjøre denne kommandoen:
  28. bash$ sudo apt-get install sharutils
  29.  
  30. Vi har nå en fil på 64 linjer med random tall, root.key, som vi nå legger til i nøkkellisten til /dev/sda5:
  31. bash$ sudo cryptsetup luksAddKey /dev/sda5 root.key
  32.  
  33. Skriv inn ditt gamle passord, og du vil få beskjed om at den nye nøkkelen er blitt lagt til.
  34. Sjekk at nøkkelen ligger i listen ved denne kommandoen:
  35. bash$ sudo cryptsetup luksDump /dev/sda5
  36.  
  37. Her skal da “key slot 0 og 1? være “ENABLED”. 0 er din opprinnelige nøkkel, mens 1 er root.key.
  38. 3. Minnepinnen.
  39.  
  40. Her er du fri til å gjøre litt som du vil, men den må inneholde en partisjon med ext3 filsystem som stor nok til å kunne inneholde krypteringsnøkkelen (min. 4Kbyte).
  41. Monter denne et sted du finner den igjen, heretter antar jeg at du har montert denne på /media/keyChain.
  42. Kopier nøkkelfilen over til minnepinnen og gi den riktige rettigheter:
  43. bash$ sudo cp ~/root.key /media/keyChain/
  44. bash$ sudo chmod 0600 /media/keyChain/root.key
  45.  
  46. Nå finner vi uuid’en til din minnepinne:
  47. bash$ sudo ls -al /dev/disk/by-uuid/
  48.  
  49. Finn uuid’en som peker på minnepinnen og skriv ned denne. Er du i tvil hvilken enhet minnepinnen din er, kjør bash$ sudo mount | grep /media/keyChain, så vil første argument i linjen være din enhet, hos meg: /dev/sdd1.
  50. 4. Lage en sikkerhetskopi av din fungerende initrd.
  51.  
  52. I tilfelle noe går galt, vil vi ha muligheten til å starte systemet slik det var før vi satte i gang våre operasjoner. Gå til /boot og lag en kopi av filen initrd.img-2.6.24-16-generic:
  53. bash$ cd /boot
  54. bash$ sudo cp initrd.img-2.6.24-16-generic initrd.img-2.6.24-16-generic-safe
  55.  
  56. Legg til dette i /boot/grub/menu.lst:
  57.  
  58. title Ubuntu 8.04, kernel 2.6.24-16-generic (safe mode)
  59. root (hd0,0)
  60. kernel /vmlinuz-2.6.24-16-generic root=/dev/mapper/hostname-root ro
  61. initrd /initrd.img-2.6.24-16-generic-safe
  62.  
  63. NB: Ettersom nye kjerner blir innført i Ubuntu vil nok 2.6.24-16 forandres, og dette må tas hensyn til.
  64. NB2: Sjekk at root (hd0,0) er den samme som de andre innslagene dine i menu.lst.
  65. NB3: Sjekk at hostname-root også er det samme som de andre innslagene i menu.lst.
  66.  
  67. Ok, da har vi sikret oss en utvei hvis alt går galt, eller i hvertfall hvis vi kludrer til initrd filen…Restart systemet og prøv dette valget i grub for å være sikker. Restart så igjen på vanlig måte.
  68. 5. Konfigurere crypttab.
  69.  
  70. Først, ta en sikkerhetskopi av crypttab.
  71. bash$ sudo cp /etc/crypttab /etc/crypttab.bak
  72.  
  73. Modifiser crypttab slik at den kjører et script for å hente krypteringsnøkkelen:
  74. bash$ sudo vim /etc/crypttab
  75.  
  76. Bytt ut none med root.key og legg til ,keyscript=/usr/local/sbin/crypto-usb-key.sh etter luks slik at linjen blir seende slik ut:
  77. sda5_crypt /dev/disk/by-uuid/ef4af71d-a86c-438d-8tr58-94502caa4582 root.key luks,keyscript=/usr/local/sbin/crypto-usb-key.sh
  78.  
  79. Lagre og lukk filen.
  80. 6. Lage script for montering av minnepinne og hente ut nøkkelen
  81.  
  82. Som du ser i steg 5. vil crypttab lete etter et script på /usr/local/sbin/ ved navnet crypto-usb-key.sh. La oss nå lage dette.
  83.  
  84. bash$ cd /usr/local/sbin
  85.  
  86. bash$ sudo vim crypto-usb-key.sh
  87.  
  88. Legg dette inn i filen:
  89.  
  90. #!/bin/sh
  91. # provides key to encrypted root partition located on external usb keychain
  92. # author: Tor Martin Slåen [tormsl@gmail.com]
  93.  
  94. KEYF="root.key"
  95. MD=/tmp-usb-mount
  96. UUID=ef4af71d-a86c-438d-8tr58-94502caa4582
  97.  
  98. mkdir -p $MD
  99.  
  100. modprobe usb-storage >/dev/null 2>&1
  101. modprobe ext3 >/dev/null 2>&1
  102. sleep 7
  103. OPENED=0
  104.  
  105. echo "Trying to get key from usb keychain." >&2
  106.  
  107. mount /dev/disk/by-uuid/$UUID $MD -t ext3 -o ro >/dev/null 2>&1
  108. if [ -f $MD/$KEYF ]; then
  109. cat $MD/$KEYF
  110. umount $MD 2>/dev/null
  111. OPENED=1
  112. break
  113. fi
  114. if [ $OPENED -eq 0 ]; then
  115. echo "FAILED to find suitable USB keychain ..." >&2
  116. echo -n "Try to enter your password: " >&2
  117. read -s -r A
  118. echo -n "$A"
  119. else
  120. echo "Successfully loaded keyfile from keychain!" >&2
  121. fi
  122.  
  123. NB: Her må du bytte ut UUID verdien med den fra steg 3 (UUID til minnepinnen). Lagre of lukk filen.
  124.  
  125. Gi riktige rettigheter til filen:
  126.  
  127. bash$ sudo chmod 700 crypto-usb-key.sh
  128.  
  129. Test scriptet med kommandoen:
  130.  
  131. bash$ sudo umount /media/keyChain && sudo /usr/local/sbin/crypto-usb-key.sh
  132.  
  133. Hvis alt er i orden vil scriptet skrive ut innholdet i root.key. Hvis ikke, sjekk at din UUID stemmer, hvis du har partisjonert minnepinnen uten å restarte etterpå, kan det hende at /dev/disk/by-uuid/ inneholder en feil UUID – restart og sjekk. Hvis det fortsatt ikke fungerer, sjekk at alle foregående steg er blitt utført.
  134.  
  135. NB: Feilmeldingen som sier read: 31: Illegal option -s er ikke en feil i scriptet
  136. 7. Oppdatere initrd
  137.  
  138. Alt vi nå har igjen å gjøre er å oppdatere initrd. Dette gjøres i Ubuntu ved å bruke update-initramfs
  139.  
  140. bash$ sudo update-initramfs -u all
  141.  
  142. Det vil komme en melding om at initrd blir oppdatert, vent til denne er ferdig. Vi er nå klar til å restarte :D Husk at du har en safe-mode opsjon i grub hvis noe skulle gå galt.
  143. Hvis du har flere krypterte partisjoner i crypttab kan du låse opp disse på en enklere måte; etter du har låst opp / (root). Lag deg en ny nøkkel, legg nøkkelfilen under /etc/ og gi den 0600 rettigheter, samt eierskap til root.
  144. Bruk dette scriptet istedet for det vi laget til minnepinnen:
  145.  
  146. #!/bin/sh
  147. # unlocks encrypted partition during boot
  148. # put your keyfile under /etc and name it partition1.key
  149. exec cat /etc/partition1.key
  150.  
  151. Gi dette scriptet et annet navn og pek crypttab hit.
  152. NB: Siden root er kryptert vil det ikke være en sikkerhetsrisiko å legge partition1.key under /etc/ så lenge den har riktige rettigheter og eierskap.
  153. Merknader / diskusjon
  154.  
  155. * Ta vare på .key filen hvis du er usikker på kvaliteten av din minnepinne…
  156. * Vil du være helt sikker (eller paranoid), sletter du ditt opprinnelige passord ved å bruke bash$ sudo cryptsetup luksDelKey /dev/sda5 0 og legger en kopi av root.key i en bankboks i Sveits.
  157. * Noen hovedkort har vanskelig for å initialisere riktig noen minnepinner under oppstart, noe som vil resultere i at scriptet ikke får montert minnepinnen under kjøring. Det kan fungere i terminal når systemet er startet opp, men ikke under oppstartsprosedyren. Sjekk innstillinger i BIOS hvis du får dette problemet.
Add Comment
Please, Sign In to add comment