Şifreli / önyüklemeli Ubuntu tam disk şifrelemesi


15

Ayrı bir /bootbölümle tam şifreli bir disk kurmaya çalışıyorum ve bazı sorunlar yaşıyorum.

Bir Ubuntu 15.04 Live DVD oturumunda izlediğim prosedürü yazacağım.

  • Diski 'rastgele veriler' ile doldurun

    sudo dd if=/dev/urandom of=/dev/sda1 bs=4096   #ok
    
  • Bölümleri oluşturma (gparted kullanarak)

    1. Bölümleme Tablosu Oluştur - gpt 2.
      • / dev / sda1 ext2 1.5GB #boot
      • / dev / sda2 linux-swap 4GB # swap
      • / dev / sda3 ext4 15 GB # kök
      • / dev / sda4 ext4 FREESPACE #home
  • Birimleri şifrele

    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda1
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda2
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda3
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 5000 /dev/sda4
    
  • Açık kriptovolum

    cryptsetup luksOpen /dev/sda1 boot
    cryptsetup luksOpen /dev/sda2 swap
    cryptsetup luksOpen /dev/sda3 root
    cryptsetup luksOpen /dev/sda4 home
    
  • Biçim

    mkfs.ext2 /dev/mapper/boot
    mkswap /dev/mapper/swap
    mkfs.ext4 /dev/mapper/root
    mkfs.ext2 /dev/mapper/home
    
  • Yükle (Ubiquity kullanarak)

    • önyükleme yükleyicisi açık / dev / sda
    • / dev / sda1 - ext2 olarak kullan - bağlama noktası / önyükleme
    • / dev / sda2 - ext2 olarak kullan - bağlama noktası / önyükleme
    • / dev / sda3 - ext2 olarak kullan - bağlama noktası / önyükleme
    • / dev / sda4 - ext2 olarak kullan - bağlama noktası / önyükleme

    Sonunda yükleyici grub-install işleminin başarısız olduğu konusunda uyarır (önyükleme birimi şifreli olduğu için), 'bootloader olmadan devam et'i seçin.

  • Temiz önyükleme birimi

    mkfs.ext2 /dev/mapper/boot
    
  • Montaj hacmi

    mkdir /mnt/root
    mount /dev/mapper/root /mnt/root
    mount /dev/mapper/boot /mnt/root/boot
    
  • Fstab ve crypttab'ı güncelleyin

    sudo blkid
    
    [/dev/sr0: UUID="2015-10-21-16-17-40-00" LABEL="Ubuntu 15.10 amd64"
               TYPE="iso9660" PTUUID="429817b4" PTTYPE="dos"
    /dev/sda1: UUID="...#1" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda2: UUID="...#2" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda3: UUID="...#3" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda4: UUID="...#4" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/mapper/boot: UUID="..." TYPE="ext2"
    /dev/mapper/swap: UUID="..." TYPE="swap"
    /dev/mapper/root: UUID="..." TYPE="ext4"
    /dev/mapper/home: UUID="..." TYPE="ext4"]
    
  • fstab

    #<file system>   <mount point>   <type>   <options>           <dump>   <pass>
    UUID=#1          /boot           ext2     defaults            0        2
    UUID=#2          none            swap     sw                  0        0
    UUID=#3          /               ext4     errors=remount-ro   0        1
    UUID=#4          /home           ext4     defaults            0        2
    
  • crypttab

    boot   UUID=#1   luks,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool, time=3000
    swap   UUID=#2   luks,swap,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool,time=3000
    root   UUID=#3   luks,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool,time=3000
    home   UUID=#4    luks,cipher=twofish-xts-plain64,size=512,
                      hash=whirlpool,time=5000
    
  • İnitramfs resmini güncelle

    cd /mnt
    sudo chroot root
    mount -t proc proc /proc
    mount -t sysfs sys /sys
    mount -t devpts devpts /dev/pts
    update-initramfs -u                      #ok
    
  • Bootloader'ı yapılandır ( /etc/default/grub)

    GRUB_ENABLE_CRYPTODISK=y
    GRUB_PRELOAD_MODULES="luks cryptodisk"
    GRUB_CMDLINE_LINUX="cryptdevice=UUID#3:root root=/dev/mapper/root resume=/dev/mapper/swap 
                        crypto=whirlpool:twofish-xts-plain64:512:0:"
    
  • yapılandırma dosyası oluştur

    $ grub-mkconfig -o /boot/grub/grub.cfg
    [/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/root'.]
    
  • dışarıda dene

    $ exit
    $ grub-mkconfig -o /boot/grub/grub.cfg
    [/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.]
    

Bundan önce herhangi bir hata yaptım mı? Grub'u doğru şekilde yapılandırmaya ve yüklemeye nasıl devam edebilirim?


Q'unuzu "doğru" siteye taşıdıktan sonra hiç kimsenin yardım etmediğini hissediyorum. Ubuntu'da bu düzeyde bir çalışma yapmadım. Ama grubbaşlığınız için Google + 'ya baktım . Şifreleme prosedürünüzü pavelkogan.com/2014/05/23/luks-full-disk-encryption adresinde bulduğunuzu varsayalım (bu konudaki ilk google araması). değilse, belki bu yardımcı olacaktır. İyi soru! ve iyi şanslar!
shellter

Birkaç şey: 1. Her /bootşeyin montaj noktası olarak bahsediyorsunuz . Bunun bir yazım hatası olduğunu umuyorum. 2. /devKromlama sırasında montaj yapmadınız, ancak devpts taktınız. Oo
muru

Başka bir hata, aynı UUID'leri crypttab ve fstab içinde kullanıyor gibi görünüyorsunuz. fstab / dev / mapper / sürücülerinin UUID'lerini kullanmalıdır.
Aleksandr Dubinsky

1
Kasaya bu bir Ubuntu topluluk üyesi tarafından rehber. Ben kullandım ve benim için çok iyi çalışıyor.
kapad

Yanıtlar:


13

Bazı hatalar yaptınız, ancak asıl sorun her yerde ve grubta. Temel olarak, /şifreli bir bölüm olarak ayarladığınızda ve için ayrı bir bölüm oluşturmadığınızda /boot, grub şöyle bir hata mesajı verir:

/bootŞifreli biliyorum . Sen ayarlamanız gerekir GRUB_ENABLE_CRYPTODISK=yyılında /etc/default/grub. Bunu senin için yapmayacağım, bu yüzden başarısız olacağım ve kurulumun duracak.

Sürece genel bakış

  • EFI modunu kullanıyoruz.
  • Standart yükleyiciyi kullanarak şifrelenmemiş bir /bootbölüme ve şifreli bir btrfs yükleriz /.
  • Yükleyici tamamlandıktan sonra, chrootbazı önemli yapılandırma değişiklikleri yaparız ve grubunu EFI Sistem Bölümü'ne yeniden yükler ve initrd dosyasını yeniden oluştururuz.

Detaylı adımlar

  • Ubuntu 16.04 kurulum diskinden önyükleme (Xubuntu ile test edilmiştir).
  • İnternete bağlanın sudo apt update && sudo apt upgradeve yükleyici bileşenlerini güncellemek için çalıştırın
  • Kullanım fdisk, gpartedveya başka bir alet 3 bölümler oluşturmak için:
    • GPT bölümleme tablosu
    • EFI Sistem Bölümü için kullanacağımız 200 MB'lık bir bölüm
    • Sonunda şifreli takas bölümümüz olarak kullanacağımız, ancak geçici şifrelenmemiş olarak işlev gören çok gigabaytlık bir bölüm /boot
    • Alanın geri kalanını kullanan şifreli bir bölüm
  • Şifreli bölümü hazırlayın

    sudo cryptsetup luksFormat /dev/sda3
    sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt
    sudo mkfs.btrfs /dev/mapper/sda3_crypt
    
  • Ubuntu'yu Yükle

    • Yükleme türü sorulduğunda "Başka bir şey" i seçin.
    • Yapılandırma /dev/sda1olarakEFI System Partition
    • Yapılandırma /dev/sda2ext2 olarak, bir bağlama noktası ile biçimlendirilmiş/boot
    • /dev/mapper/sda3_cryptBağlama noktası ile btrfs olarak yapılandır/
    • Kuruluma devam edin.
    • Tamamlandıktan sonra, canlı sistemde kalmayı seçin (yeniden başlatma yok).
  • İçeriğini kopyalayın /bootve birchroot

    sudo mount -o subvol=@ /dev/mapper/sda3_crypt /target
    sudo mount /dev/sda2 /mnt
    # (Watch those trailing slashes! rsync is very sensitive to them.)
    sudo rsync -aXAH /mnt/ /target/boot/
    sudo mount /dev/sda1 /target/boot/efi
    sudo mount --bind /dev /target/dev
    sudo mount --bind /proc /target/proc
    sudo mount --bind /sys /target/sys
    sudo chroot /target
    
  • (Artık her şey chrootyeni sisteminizde olduğu gibi oluyor .)

  • Şuraya satır ekle /etc/default/grub

    GRUB_ENABLE_CRYPTODISK=y
    
  • Şuraya satır ekle /etc/crypttab. (NOT ) sudo blkidöğesinin UUID değerini bulmak için önce çalıştırmanız gerekir ./dev/sda3/dev/mapper/sda3_crypt

    sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard
    
  • İçin /etc/fstabsatırı düzenleyin ve silin /boot. Diğer girişler doğrudur.

  • Grub'u EFI Sistem Bölümü'ne yükleyin, yeni bir grub.cfg oluşturun ve initrd hazırlayın.

    sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck
    sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg
    sudo update-initramfs -c -k all
    
  • Opsiyonel çift kontrol: iki kere kontrol edin /boot/efi/EFI/ubuntu/grub/grub.cfgiçeren satırları içeren insmod luks, cryptomount -u <UUID>vb doğru çizme girişleri, Ve initrd'yi içerdiğini çift kontrollü bir cryptsetupikili. Bu şeyler eksikse, bunun nedeni grub-mkconfig ve / veya update-initrd'nin fstab içinde bağladığınız veya belirttiğiniz birimlerin crypttab'daki şifreli birimle nasıl ilişkili olduğunu anlayamamasıdır. (Yaptıkları çok fazla sihirli otomatik yapılandırma var.) Bu kılavuzdan örneğin ZFS kullanarak veya sda3_crypt'i bölümlemeye çalışarak saparsanız oluşabilir.

  • (Btrfs yerine ZFS kullanılıyorsa) grub-mkconfig ve update-initrd ZFS'yi tanımaz. Geçici düzenleme (grub-mkconfig / güncelleştirme initrd'ye önce, chroot sırasında) içeren /usr/sbin/grub-mkconfigekleme || true(başlar hattı 139 GRUB_DEVICE=,) ilave GRUB_DEVICE="/dev/mapper/sda3_crypt"etmek /etc/default/grubdosyası oluşturma, /usr/share/initramfs-tools/conf-hooks.d/forcecryptsetupiçeriği export CRYPTSETUP=yve dosya /etc/initramfs-tools/conf.d/cryptrootiçeriği ile target=sda3_crypt,source=UUID=<UUID of sda3>,key=none,discard. Tüm bunlar, ZFS bölümünü şifrelemediyseniz atacağınız adımlara ek olarak (hem canlı sisteme hem de chroot sırasında zfs kullanıcı alanı araçlarını yüklemek ve fstab'a bağlanan satırı silmek gibi /).

  • Chroot'tan çıkın ve yeni sisteminizi yeniden başlatın

    exit
    sudo umount /target/boot/efi
    sudo umount /target/dev
    sudo umount /target/proc
    sudo umount /target/sys
    sudo umount /target
    sudo reboot
    
  • Grubun şifrenizi sorduğunu görmelisiniz. Sonra önyükleme menüsünü alırsınız. Ubuntu'yu seçtikten sonra tekrar şifreniz istenecektir. O zaman sisteminizde olacaksınız. Ubuntu'nun BTRFS'yi nasıl kullandığı hakkında daha fazla bilgi edinin .

  • YAPILACAKLAR : Şifreli takas oluşturma (ipucu: crypttab, fstab ve yeniden çalıştırmayı düzenlemeyi içerir update-initrd).

  • YAPILACAKLAR : Şifrenizi yalnızca bir kez gruba girmeniz için kaydedin. Bu burada ayrıntılı .

Yükseltmeler

  • Her yeni çekirdek yüklediğinizde özel grub-mkconfigkomutu çalıştırmalısınız .
  • Grub'u her güncellediğinizde özel grub-installkomutu çalıştırmalısınız .

Diğer notlar

  • Tek bir şifreli birim oluşturmak ve takas bölümünü (ve muhtemelen diğerlerini) oluşturmak için bölümlemek caziptir, ancak bu işe yaramaz. Hem grub-mkconfig hem de update-initrd hatalı davranacaktır. Ancak LVM'yi denemedim.
  • Btrf'lerin üzerinde bir swapfile kullanmak cazip gelebilir , ancak performans nedeniyle muhtemelen kötü bir fikirdir.

Sadece bildiğinizi netleştirmek (yorumunuza göre): fstabve crypttabaslında soruda doğru değil . crypttabişaret etmelidir uuidham /dev/sdxYcihazlar; fstabadresindeki açılan crypt cihazlarını göstermelidir /dev/mapper/label.
Hendy

Bu yanıtı verdiğiniz için teşekkür ederim, bunu ayarlamama yardımcı oldu.
x13

Aslında bu gerçek FDE'nin hiçbirini düşünmüyorum, çünkü sızan bölüm bilgileri var. Gerçek FDE, tüm sektörlerin şifrelenmiş verileri olmasını sağlar (başlangıçta LUKS üstbilgisi hariç, buna teknik olarak ayrılmış bir üstbilgi kullanılmasına gerek yoktur). Ben LUKS içinde LVM kullanarak FDE yapmak, bu yüzden kesinlikle çalışır ve daha sonra bölüm / birim boyutlarını değiştirmeniz gerekirse daha güzel olabilir. İşte bir var eski blog yazısı 12.04 bu yapmayı, ancak daha sonraki sürümlerde çalışması gerekir.
crass

Ayrıca btrfs bir swapfile kullanıyor kesinlikle bir kötü bir fikir ...
dangalak

Senin içinde grub-installtalimat, bir var --bootloader=ubuntuparametreyi. Bu argümanı Ubuntu'nun veya GNU'nun el kitaplarında bulamıyorum . Ne yaptığını veya nerede belgelendiğini açıklığa kavuşturabilir misiniz?
Samuel Harmer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.