暗号化された/ bootを使用したUbuntuフルディスク暗号化


15

別の/bootパーティションで完全に暗号化されたディスクをセットアップしようとしていますが、いくつかの問題があります。

Ubuntu 15.04 Live DVDセッションで従ってきた手順を書き留めます。

  • ディスクを「ランダムデータ」で埋める

    sudo dd if=/dev/urandom of=/dev/sda1 bs=4096   #ok
    
  • パーティションを作成します(gpartedを使用)

    1. パーティションテーブルの作成-gpt 2。
      • / dev / sda1 ext2 1.5GB #boot
      • / dev / sda2 linux-swap 4GB #swap
      • / dev / sda3 ext4 15 GB #root
      • / dev / sda4 ext4 FREESPACE #home
  • ボリュームを暗号化する

    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
    
  • 暗号ボリュームを開く

    cryptsetup luksOpen /dev/sda1 boot
    cryptsetup luksOpen /dev/sda2 swap
    cryptsetup luksOpen /dev/sda3 root
    cryptsetup luksOpen /dev/sda4 home
    
  • フォーマット

    mkfs.ext2 /dev/mapper/boot
    mkswap /dev/mapper/swap
    mkfs.ext4 /dev/mapper/root
    mkfs.ext2 /dev/mapper/home
    
  • インストール(ユビキタスを使用)

    • / dev / sdaのブートローダー
    • / dev / sda1-ext2として使用-マウントポイント/ boot
    • / dev / sda2-ext2として使用-マウントポイント/ boot
    • / dev / sda3-ext2として使用-マウントポイント/ boot
    • / dev / sda4-ext2として使用-マウントポイント/ boot

    最後に、インストーラはgrub-installが失敗したことを警告します(ブートボリュームが暗号化されているため)。「ブートローダなしで続行」を選択します。

  • クリーンブートボリューム

    mkfs.ext2 /dev/mapper/boot
    
  • マウントボリューム

    mkdir /mnt/root
    mount /dev/mapper/root /mnt/root
    mount /dev/mapper/boot /mnt/root/boot
    
  • fstabとcrypttabを更新する

    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
    
  • initramfsイメージを更新する

    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
    
  • ブートローダーの構成(/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:"
    
  • 設定ファイルを作成する

    $ grub-mkconfig -o /boot/grub/grub.cfg
    [/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/root'.]
    
  • 外で試す

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

この前に間違いを犯しましたか?grubを正しく設定およびインストールし続けるにはどうすればよいですか?


Qを「正しい」サイトに移動させた後、誰も助けてくれなかったのが残念です。Ubuntuでこのレベルの作業を行ったことはありません。しかし、Googleでgrub+タイトルを探しました。pavelkogan.com/2014/05/23/luks-full-disk-encryptionで暗号化の手順を見つけたと思います(このトピックに関する最初のGoogle検索です)。そうでない場合は、おそらくそれが役立ちます。良い質問!そして成功を祈る!
シェルター

いくつかの点:1 /boot.すべてのマウントポイントとして言及します。私はそれがタイプミスであることを望んでいます。2. /devchroot中にマウントしませんでしたが、devptsをマウントしました。Oo
muru

もう1つの間違いは、crypttabとfstabで同じUUIDを使用しているように見えることです。fstabは、実際には/ dev / mapper /ドライブのUUIDを使用する必要があります。
アレクサンドルドゥビンスキー

1
Ubuntuコミュニティのメンバーがこのガイドをチェックしください。私はそれを使用しましたが、私にとっては非常にうまく機能します。
kapad

回答:


13

あなたはいくつかの間違いを犯しましたが、主な問題はユビキタスとグラブにあります。基本的に、/暗号化されたパーティションに設定し、に別のパーティションを作成しない場合/boot、grubは次のようなエラーメッセージを出します:

私が知っている/boot暗号化されています。あなたは、設定する必要がGRUB_ENABLE_CRYPTODISK=y/etc/default/grub。私はあなたのためにそれをしませんので、私は失敗するつもりです、そして、あなたのインストールは止まります。

プロセスの概要

  • EFIモードを使用します。
  • 標準インストーラーを使用して/boot、暗号化されていないパーティションと暗号化されたbtrfsに/インストールします。
  • インストーラーが終了しchrootたら、いくつかの重要な設定変更を行い、grubをEFIシステムパーティションに再インストールし、initrdを再作成します。

詳細な手順

  • Ubuntu 16.04インストールディスクから起動します(Xubuntuでテスト済み)。
  • インターネットに接続して実行sudo apt update && sudo apt upgradeし、インストーラーコンポーネントを更新します
  • 使用fdiskgpartedまたは3つのパーティションを作成するための別のツール:
    • GPTパーティションテーブル
    • EFIシステムパーティションに使用する200MBのパーティション
    • 最終的に暗号化されたスワップパーティションとして使用するマルチギガバイトパーティションですが、一時的な暗号化されていないパーティションとして機能します /boot
    • 残りのスペースを使用する暗号化されたパーティション
  • 暗号化されたパーティションを準備する

    sudo cryptsetup luksFormat /dev/sda3
    sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt
    sudo mkfs.btrfs /dev/mapper/sda3_crypt
    
  • Ubuntuをインストールする

    • インストールの種類について尋ねられたら、「その他」を選択します。
    • /dev/sda1として設定EFI System Partition
    • /dev/sda2ext2として構成し、フォーマットし、マウントポイントを/boot
    • /dev/mapper/sda3_cryptマウントポイントを使用してbtrfsとして構成します/
    • インストールを続行します。
    • 終了後、ライブシステムにとどまることを選択します(再起動なし)。
  • の内容をコピー/bootしてchroot

    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
    
  • (すべてがchroot新しいシステム内で発生しています。)

  • 行を追加 /etc/default/grub

    GRUB_ENABLE_CRYPTODISK=y
    
  • に行を追加し/etc/crypttabます。(NOT )のsudo blkidUUIDを見つけるには、最初に実行する必要があります。/dev/sda3/dev/mapper/sda3_crypt

    sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard
    
  • /etc/fstabの行を編集および削除し/bootます。他のエントリは正しいです。

  • EFIシステムパーティションにgrubをインストールし、新しいgrub.cfgを生成して、initrdを準備します。

    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
    
  • オプションのダブルチェック:ダブルチェック/boot/efi/EFI/ubuntu/grub/grub.cfgなどが行が含まれているinsmod lukscryptomount -u <UUID>などの正しいブートエントリ、そして、あなたのinitrdが含まれていることをダブルチェックcryptsetupバイナリを。これらが欠落しているのは、fstabでマウントまたは指定したボリュームがcrypttabの暗号化ボリュームとどのように関連しているかをgrub-mkconfigおよび/またはupdate-initrdが判断できなかったためです。(多くの魔法の自動設定があります。)これは、たとえばZFSを使用したり、sda3_cryptをパーティション分割しようとしたりして、このガイドから分岐した場合に発生する可能性があります。

  • (btrfsの代わりにZFSを使用する場合) grub-mkconfigおよびupdate-initrdはZFSを認識しません。回避策には、(chrootの間、grub-mkconfig / update-initrdの前に)139行目(これはで始まる)に追加する編集/usr/sbin/grub-mkconfig、追加、コンテンツ付きファイルおよびコンテンツ付きファイルの作成が含まれます。これはすべて、ZFSパーティションを暗号化していない場合に実行する手順に追加されます(ライブシステムとchrootの両方でzfsユーザー空間ユーティリティをインストールし、fstabにマウントする行を削除するなど)。|| trueGRUB_DEVICE=GRUB_DEVICE="/dev/mapper/sda3_crypt"/etc/default/grub/usr/share/initramfs-tools/conf-hooks.d/forcecryptsetupexport CRYPTSETUP=y/etc/initramfs-tools/conf.d/cryptroottarget=sda3_crypt,source=UUID=<UUID of sda3>,key=none,discard/

  • chrootを終了し、新しいシステムで再起動します

    exit
    sudo umount /target/boot/efi
    sudo umount /target/dev
    sudo umount /target/proc
    sudo umount /target/sys
    sudo umount /target
    sudo reboot
    
  • パスワードを求めるgrubが表示されます。次に、ブートメニューが表示されます。Ubuntuを選択すると、パスワードの再入力を求められます。その後、あなたのシステムになります。UbuntuがBTRFSを使用する方法について詳しく読む。

  • TODO:暗号化されたスワップを作成します(ヒント:crypttab、fstabの編集、および再実行を伴いますupdate-initrd)。

  • TODO:パスワードを保存して、grubに一度だけ入力するだけで済みます。これはここで詳細です

アップグレード

  • 新しいカーネルをインストールするたびに、カスタムgrub-mkconfigコマンドを実行する必要があります。
  • grubを更新するたびに、カスタムgrub-installコマンドを実行する必要があります。

その他の注意事項

  • 単一の暗号化されたボリュームを作成し、パーティションを作成してスワップパーティション(およびその他のパーティション)を作成するのは魅力的ですが、これは機能しません。grub-mkconfigとupdate-initrdの両方が誤動作します。ただし、LVMは試していません。
  • btrfsの上でswapfileを使用するのは魅力的かもしれませんが、パフォーマンスのためにおそらく悪い考えです。

私があなたがすでに知っていると思うことを明確にするだけです(あなたのコメントごとに):fstabそしてcrypttab実際には質問で正しくありません。RAW デバイスcrypttabを指す必要がuuidあり/dev/sdxYます。fstabで開かれた暗号化デバイスを指す必要があります/dev/mapper/label
ヘンディ

この答えをありがとう
X13

パーティション情報が漏洩しているため、実際にはこの真のFDEを考慮していません。真のFDEでは、すべてのセクターが暗号化されたデータになっています(先頭のLUKSヘッダーを除きますが、技術的には切り離されたヘッダーを使用する必要はありません)。LUKS内でLVMを使用してFDEを実行しているため、パーティション/ボリュームサイズを後で変更する必要がある場合は、確実に機能し、より良いものになります。これは、12.04でこれを行うための古いブログ投稿ですが、それ以降のバージョンでも機能するはずです。
ひどい

また、BTRFS上のスワップファイルを使用することで、間違いなく悪いアイデア ...
粗野

あなたにgrub-install指示、あなたが持っている--bootloader=ubuntuパラメータを。UbuntuGNUのマニュアルいずれかでその議論を見つけることができないようです。それが何をするのか、どこに文書化されているのかを明確にしていただけますか
サミュエルハーマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.