LINUX.ORG.RU

Grub


18

2

Всего сообщений: 1

Мечта параноика

Proof-of-concept: зашифрованный /boot! То, чего так не хватало тем людям, которые хотели полностью зашифрованную систему на одном разделе или опасались, что их нешифрованный /boot изменят, засунут в initrd трояна и таким образом получат доступ ко всем остальным данным.

Рецепт:

  • Свежий GRUB, не старше 2011-07-07 (grub-2.00 с официального сайта вполне подошёл)
  • Сборка руками, ничего интересного, но много build-dependencies.
  • grub-install оказался недостаточно умным, чтобы сработать автоматически.
    • Во-первых, эксперимент проводился на /dev/loop0, что у GRUB не было никаких шансов заметить, пришлось править .../boot/grub/device.map:
      dd if=/dev/zero of=luks.img bs=1M count=100
      losetup /dev/loop0 luks.img
      fdisk /dev/loop0
      cruptsetup luksFormat /dev/loop0p1
      cryptsetup luksOpen /dev/loop0p1 test
      mke2fs /dev/mapper/test
      mount /dev/mapper/test /mnt
      mkdir -p /mnt/boot/grub
      echo '(hd0) /dev/loop0' > /mnt/boot/grub/device.map
    • Во-вторых, по умолчанию GRUB даже не пытается открывать зашифрованные устройства:
      # share/grub/grub-mkconfig_lib
        if abstractions="`"${grub_probe}" -t abstraction "$path"`" 2>&1 ; then 
            :
        else
          return 1
        fi
      
        if [ x$GRUB_CRYPTODISK_ENABLE = xy ]; then
            return 0
        fi
        
        for abstraction in $abstractions; do
            if [ "x$abstraction" = xcryptodisk ]; then
                return 1
            fi
        done
      Чтобы он сделал такую попытку, необходимо установить переменную окружения GRUB_CRYPTODISK_ENABLE в «y».
    • В-третьих, разработчики не зря спрятали это за переменную окружения, поскольку получившийся core.img не смог прочитать таблицу разделов и увидеть зашифрованный раздел. Решилось это ручным добавлением модуля к grub-install.
    В итоге команда установки выглядела так:
    sudo env GRUB_CRYPTODISK_ENABLE=y ~/grub2/sbin/grub-install --modules=part_msdos --root-directory=/mnt/ /dev/loop0

Резюме: после обработки напильником уже работоспособно, но без напильника обойтись пока нельзя. Джедаи могут поставить даже на основную систему. Нужно найти время и отправить багрепорты/патчи.

А на самом скриншоте смотреть почти нечего, да.

>>> Просмотр (722x804, 17 Kb)

 

AITap
()