Bagaimana kita bisa membuka kunci sistem Ubuntu 11.10 terenkripsi penuh melalui SSH saat boot?

8

Di versi Ubuntu sebelumnya, dan versi Debian saat ini, Anda dapat membuka kunci sistem yang sepenuhnya terenkripsi (menggunakan dmcrypt dan LUKS) pada saat booting melalui SSH.

Semudah:

  1. Menginstal sistem terenkripsi menggunakan disk pemasang alternatif Ubuntu atau disk pemasang Debian normal dan memilih untuk mengenkripsi sistem.
  2. Setelah sistem diinstal, tambahkan paket dropbear dan busybox.
  3. Memperbarui initram-fs untuk mengesahkan kunci ssh Anda.

Pada saat boot, Anda hanya ssh ke mesin, dan lakukan:

echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Mesin kemudian akan membuka dan mem-boot sistem terenkripsi.

Menggunakan langkah-langkah yang sama persis di Ubuntu 11.10, saya bisa ssh ke mesin, tetapi /lib/cryptsetup/passfifotidak ada.

Tampaknya tidak ada cara untuk membuka kunci sistem melalui ssh. Saya tidak yakin ke mana harus mencari untuk melihat apakah fungsi ini berubah atau jika itu dihapus.

Jeff
sumber
Pada sistem yang bekerja dengan cara lama, dapatkah Anda melakukannya dpkg -S /lib/cryptsetup/passfifo? Saya tidak dapat menemukan paket di paket.ubuntu.com untuk Natty atau Maverick yang berisi file ini.
maco

Jawaban:

4

Baru saja melakukan beberapa googling dan tampaknya plymouth menghalangi. Jika plymouth ada di sana maka saat boot maka cryptsetup akan meminta kata sandi plymouth dan itu berarti tidak menggunakan passfifo.

Solusi terbaik tampaknya menempatkan skrip berikut dalam direktori /usr/share/initramfs-tools/hooks/Setelah Anda meletakkannya di sana Anda bisa chmod +xdan kemudian Anda harus melakukannya update-initramfs -u. Anda kemudian harus dapat menggunakan unlockperintah (yang dibuat oleh skrip di bawah).

Ini bergantung pada Anda menggunakan kunci ssh untuk masuk. Jika Anda ingin menggunakan password maka Anda harus menempatkan SSHUSERPASS=<username>ke/etc/initramfs-tools/initramfs.conf

#!/bin/sh

PREREQ="dropbear"

prereqs() {
    echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac

. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions

if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
    cat > "${DESTDIR}/bin/unlock" <<-EOF
        #!/bin/sh
        if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot
        then
            /sbin/pkill cryptroot
            /sbin/pkill -f "plymouth ask-for-pass"
            /sbin/pkill cryptsetup
            exit 0
        fi
        exit 1
    EOF
    chmod 755 "${DESTDIR}/bin/unlock"

    mkdir -p "${DESTDIR}/lib/unlock"
    cat > "${DESTDIR}/lib/unlock/plymouth" <<-EOF
        #!/bin/sh
        [ "\$1" == "--ping" ] && exit 1
        /bin/plymouth "\$@"
    EOF
    chmod 755 "${DESTDIR}/lib/unlock/plymouth"

    # Enable password login
    if [ -n "$SSHUSERPASS" ]
    then
        sed -n "s/^${SSHUSERPASS}:/root:/p" /etc/shadow > "${DESTDIR}/etc/shadow"
        chmod 640 "${DESTDIR}/etc/shadow"
    fi
fi

Anda dapat membaca lebih lanjut di posting ini di ubuntuforums , bug launchpad ini dan postingan Jerman yang paling banyak saya kutip dari ini .

Hamish Downer
sumber
1

sampai bug ini teratasi, Anda dapat mencoba untuk membunuh plymouth terlebih dahulu. Sayangnya, tidak ada cara mudah untuk menentukan PID dari plymouthd. Tapi plymouth tahu cara keluar sendiri :-) Jadi, berikut ini sudah cukup.

plymouth --quit; echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Frederick Nord
sumber