Go to content Go to navigation Go to search

: Krypteret swap- og root-filsystem med LUKS og Ubuntu

2007-02-09 14:10 af Thomas Damgaard Nielsen -

I dette blogindlæg vil jeg fortælle, hvordan jeg har installeret Ubuntu på min laptop med krypteret swap- og root-filsystem(/). Jeg glemte desværre at tage notater under processen, derfor er denne guide skrevet frit fra hukommelsen.
Jeg håber ikke, at der er alt for mange fejl i guiden. Hvis du kaster dig ud i at følge den, hører jeg meget gerne fra dig. Jeg er naturligvis interesseret i at høre om eventuelle fejl.

Før du begynder
Før du begynder skal du bruge følgende:

Da kryptering af disken ødelægger eventuelle data der måtte eksistere på disken, er det vigtigt, at du tager backup af dine data, før du går i gang!
Hvis du installerer på en helt ny disk, er det en god ide at følge min guide til at gardere sig mod known-plaintext-angreb.

Partitionering af disken
Før vi kan begynde installationen skal harddisken partitioneres. Der skal (minimum) oprettes følgende partitioner:

  1. En /boot-partition på omkring 100M. Denne bliver ikke krypteret og skal bruges til at boot strappe systemet. Denne partition vil jeg i det følgende referere til som /dev/hda2.
  2. En partition på minimum 2500M. Denne partition skal midlertidigt bruges som root (/) til at installere systemet på fra installationscd’en. Partitionen vil ende med at blive swap-partition. Denne partition vil jeg i det følgende referere til som /dev/hda5.
  3. En stor partition som skal ende med at være krypteret root(/). Denne partition vil jeg i det følgende referere til som /dev/hda6.

Altså har du nu en partitionstabel som minder lidt om denne:

/dev/hda2	    /boot            100MB  ext3
/dev/hda5	    (no mount point)  40GB
/dev/hda6	    /               2500MB  ext3

Du kan eventuelt partitionere disken direkte fra installationscd’en.
Husk på, at der kun kan være 4 primære partitioner på en disk.

Installation af systemet
Når disken er partitioneret installeres systemet fra cd’en. Hele systemet installeres på /dev/hda5. Du skal sørge for at vælge at installere uden swap-partition. Installationsprogrammet vil muligvis brokke sig lidt over dette og vise dig en advarsel.
Den kan du blot ignorere.

Når systemet er installeret, booter du op og tilføjer universe til din /etc/apt/sources.list.

Kør apt-get update og installer pakkerne:

cryptsetup hashalot initramfs-tools

Tilføj linierne

dm_mod
dm_crypt
sha256
aes_i586

til filen /etc/initramfs-tools/modules.

Nu skal du opdatere dit initrd-image. Det gør du ved at skrive:

update-initramfs -u all

Oprettelse af krypteret LUKS-partition
Load nødvendіge moduler:

modprobe dm_crypt
modprobe sha256
modprobe aes_i586

Opret LUKS-partition:

cryptsetup luksFormat /dev/hda5

Du vil nu få en meget alvorlig advarsel, om at du er ved at ødelægge al data på /dev/hda5, men det vil du jo gerne, så du svarer YES. Herefter indtaster du en passphrase to gange. Denne skal bruges, hver gang du skal boote dit system fremover. Bemærk:
koden kan til enhver tid ændres.
Når LUKS-partitionen er oprettet afslutter cryptsetup med beskeden Command successful.

Nu åbnes den krypterede partition:

cryptsetup luksOpen /dev/hda5 root

Nu oprettes et nyt device: /dev/mapper/root. Dette device er dit krypterede filsystem.

Nu skal du formatere partitionen for at oprette et filsystem. Her bestemmer du naturligvis selv, hvilket filsystem du vil anvende. Jeg bruger ext3 og formaterer derfor med følgende kommando:

mkfs.ext3 -j -O dir_index -m 0 -v /dev/mapper/root

Mount filsystemet:

mount /dev/mapper/root /mnt

Du skal nu kopiere dit installerede system over på det krypterede filsystem:

cp -avx / /mnt

Når systemet er blevet færdigt med at kopiere, skriver du:

mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt
mount /dev/hda2 /boot

Åbn /etc/fstab og find linien med /. Den ser nogenlunde sådan ud:

/dev/hda6                      /               ext3    defaults,errors=remount-ro 0       1

Den ændrer du til

/dev/mapper/root               /               ext3    defaults,errors=remount-ro 0       1

Åbn filen /etc/crypttab og tilføj linien:

root    /dev/hda5    none    cipher=aes-cbc-essiv:sha256

Konfigurering af GRUB
Åbn /boot/grub/menu.lst og tilføj linierne:

title   Ubuntu, encrypted root
root    (hd0,1)
kernel    /vmlinuz-2.6.17-10-generic root=/dev/mapper/root ro 
initrd    /initrd.img-2.6.17-10-generic
quiet
savedefault
boot

efter linien ### END DEBIAN AUTOMAGIC KERNELS LIST. Du skal muligvis rette kerne-versionen til, så den passer efter din kerne. Jeg bruger 2.6.17.10-generic, hvis du bruger noget andet, skal du naturligvis rette den til det.

Reboot
Nu kan du genstarte og teste dit system ved at skrive reboot.

Når dit system starter op, vil du (forhåbentligt) se, at den stopper ved følgende linie:

Enter LUKS passphrase:

Her skal du indtaste den passphrase, du valgte tidligere. Herefter starter systemet op.

Krypteret swap
Nu har du sådan set et fungerende system med krypteret root-filsystem. Det har bare ikke nogen swap-partition. Hvis du har RAM nok, burde det ikke være det store problem, men hvis du ligesom os andre dødelige ikke har et tocifret antal GB RAM, så vil jeg
anbefale dig at bruge swap. Denne swap-partition skal naturligvis være krypteret. Hvis den ikke er krypteret, kan den ødelægge hele pointen i at køre med krypteret root-filsystem. Når et eller andet program gemmer noget følsomt data i hukommelsen, kan det
til enhver tid “swappes” ud og gemmes på swap-partitionen. Hvis denne er i klartekst, vil fjenden kunne finde dine data her.
Heldigvis er det ret simpelt at opsætte krypteret swap.

Først deaktiverer du swap(dette burde strengt taget ikke være nødvendigt, da du har installeret systemet uden swap. Jeg har blot taget dette skridt med i tilfælde af at nogen følger denne guide delvist):

swapoff -a

Åbn /etc/fstab og tilføj linien:

/dev/mapper/cswap  none         swap    sw            0       0

Åbn /etc/crypttab og tilføj linien:

cswap /dev/hda6 /dev/urandom swap

Skriv:

cryptsetup luksFormat /dev/hda6 

Start dit nye krypterede device:

/etc/init.d/cryptdisks start

Aktiver swap:

swapon -a

Beskyttelse mod klartekst-angreb
For at beskytte dig mod klartekst-angreb, er det en god ide at fylde din root-partition op med tilfældig data. Især hvis det er en hel ny disk!
Dette gøres nemt ved at skrive:

dd if=/dev/urandom of=/root/sletmig

Så lader du bare dd køre, indtil disken løber tør for plads. Når det sker, kan du slette filen sletmig.

Du kan holde øje med, hvor langt den er nået ved at skrive

watch df -h

i en anden terminal.

Opdatering 2007-10-08
pug har gjort mig opmærksom på, at der nu er kommet en officiel HOWTO.

Kommentarer

  1. Hei Thomas.

    Takk for en meget bra guide.

    Jeg fant et par feil..
    I tillegg til cryptsetup hashalot og initramfs-tools, så må man installere aespipe og loop-aes-utils.
    Det er skrivefeil blant modprobe linjene. Det skal være modprobe aes_i586 ikke ars_i586.

    Jeg hadde også problemer med å følge din guide angående swap. Jeg måtte slette partisjonen med parted så den var unallocated for at det skulle gå. Får ellers melding om at den allerede har et filsystem.

    Ellers, en meget god guide. Tusen takk!!

    Med vennlig hilsen
    M.H fra Norge


    — Morten Hersson    2007-03-18 16:59   
    #
  2. Hej Morten

    Min trykfejl i modprobe er hermed rettet. Tak for det :)

    Hvilken Ubuntnu-version bruger du?
    Jeg brugte Kubuntu 6.10. Måske har noget ændret sig i de nyere versioner?
    Jeg husker ikke, at jeg havde brug for at installere pakkerne aespipe og loop-aes-utils.


    Thomas Damgaard Nielsen    2007-03-18 17:06    #
  3. Jeg bruker Ubuntu 6.10.
    jeg er ikke helt sikker på om man trenger begge pakkene, men før jeg installerte de, så gikk ikke modprobe aes_i586 fordi den ikke eksisterte.

    Du vet vel ikke hvorfor jeg måtte slette swap partisjonen for å få alt til å virke?


    — Morten Hersson    2007-03-18 18:40    #
  4. Morten:

    Mit bud på, hvorfor du måtte slette swap-partitionen, er, at partitionstypen var forkert. Den skal sikkert være type 83 (Linux), hvor den tidligere var 82 (Linux swap / Solaris).
    Jeg kan ikke selv huske, at jeg havde dette problem, men det kan jeg meget vel have haft. Jeg har skrevet guiden ud fra min hukommelse. Jeg vil forsøge at følge den igen på et nyt sytem. Så skal jeg sørge for at rette den til.

    Måske vil jeg vente med at prøve den, til den nye Feisty Fawn bliver udgivet i april. Lige nu har jeg installeret Feisty Fawn Herd 5 på et par systemer. Det virker ikke just stabilt endnu.


    Thomas Damgaard Nielsen    2007-03-19 12:02    #
  5. Hej Thomas,

    Jeg har prøvet din guide på Feisty Fawn, men uden den store held. Den vil ikke mounte under boot.

    Jeg har ikke kunnet finde frem til nogle der har fået det til at virke, og jeg har ingen ide om hvad fejlen kan være :) Alt virker som det skal lige indtil reboote, så kommer den bare ikke længere.


    Christoffer Kjølbæk    2007-04-12 22:53    #
  6. Christoffer: Jeg har ikke selv prøvet på Feisty endnu, men jeg mindes da, at Feisty skulle understøtte LUKS direkte fra installeren.
    Jeg vil undersøge dette, når Feisty udkommer (forhåbentligt snart).


    Thomas Damgaard Nielsen    2007-04-13 00:17    #
  7. Det gør den garanteret også, så det er formentligt bare en lille detalje jeg har overset :)

    Jeg har i stedet brugt LUKS og pam_mount, hvilket også virker ganske fint:
    http://ostehamster.dk/wordpress/?p=22


    Christoffer Kjølbæk    2007-04-13 01:27    #
  8. Der er både korrekte og forkerte ting i ovenstående… jeg foreslår at folk følger guiden på

    https://help.ubuntu.com/community/EncryptedFilesystemHowto8

    Måske kan det spare nogen for et par timers spild af tid :-). Ellers tak for forsøget Thomas.


    — pug    2007-10-08 04:34    #
  9. pug: Tak for din kommentar.
    Hvis du har fundet nogle fejl i min guide, vil jeg meget gerne høre, hvor disse er, så jeg kan rette dem.


    Thomas Damgaard    2007-10-08 10:37    #
  10. heh, jeg kan ikke lige huske hvad det var præcist der ikke funkede, men det virkede ihvertfald ikke ;-).

    Jeg fulgte den “officielle” guide, den virkede :-)


    — pug    2007-10-12 17:44    #
  Textile hjælp