membuka kunci rootfs melalui login ssh di initramfs
Anda dapat membuka kunci rootfs Anda saat bootup dari jarak jauh, menggunakan ssh untuk masuk ke sistem booting saat sedang berjalan dengan initramfs yang terpasang.
Mempersiapkan
Untuk membuka kunci jarak jauh agar berfungsi, paket-paket berikut harus diinstal sebelum membangun initramfs: dropbear
busybox
File tersebut /etc/initramfs-tools/initramfs.conf
menyimpan opsi konfigurasi yang digunakan saat membangun initramfs. Seharusnya berisi BUSYBOX=y
(ini ditetapkan sebagai default ketika paket busybox diinstal) untuk memiliki busybox diinstal ke dalam initramfs, dan tidak boleh berisi
DROPBEAR=n
, yang akan menonaktifkan instalasi dropbear ke initramfs. Jika diatur ke DROPBEAR=y
, dropbear akan dipasang dalam hal apa pun; jika
DROPBEAR
tidak disetel sama sekali, maka dropbear hanya akan dipasang jika ada pengaturan cryptroot yang ada.
Kunci host yang digunakan untuk initramfs adalah dropbear_dss_host_key
dan
dropbear_rsa_host_key
, keduanya terletak di /etc/initramfs-tools/etc/dropbear/
. Jika mereka tidak ada ketika initramf dikompilasi, mereka akan dibuat secara otomatis. Berikut ini adalah perintah untuk membuatnya secara manual:
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
Karena initramfs tidak akan dienkripsi, otentikasi publickey diasumsikan. Kunci yang digunakan untuk itu akan diambil dari
/etc/initramfs-tools/root/.ssh/authorized_keys
. Jika file ini tidak ada ketika initramf dikompilasi, file itu akan dibuat dan
/etc/initramfs-tools/root/.ssh/id_rsa.pub
akan ditambahkan ke dalamnya. Jika file yang terakhir tidak ada, itu akan dihasilkan secara otomatis - Anda akan menemukan kunci privat yang cocok yang nantinya akan Anda butuhkan untuk masuk ke initramfs di bawah /etc/initramfs-tools/root/.ssh/id_rsa
(atau id_rsa.dropbear
jika Anda memerlukannya dalam format dropbear). Berikut ini adalah perintah untuk melakukan langkah masing-masing secara manual:
Untuk membuat kunci (dalam format dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Untuk mengonversi kunci dari format dropbear ke format openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Untuk mengekstrak kunci publik:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Untuk menambahkan kunci publik ke file otor_keys:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
Dalam kasus Anda ingin beberapa antarmuka untuk mendapatkan dikonfigurasi menggunakan dhcp, pengaturan
DEVICE=
di /etc/initramfs-tools/initramfs.conf
harus memadai. Initramfs juga harus menghormati ip=
parameter kernel. Jika Anda menggunakan grub, Anda mungkin ingin mengaturnya /boot/grub/menu.lst
, baik di baris ' # kopt=
' atau ditambahkan ke kernel
baris ' ' tertentu . The ip=
parameter kernel didokumentasikan dalam Documentation/nfsroot.txt
dalam source kernel.
Masalah
Jangan lupa untuk menjalankan update-initramfs
ketika Anda mengubah konfigurasi untuk membuatnya efektif!
Mengumpulkan cukup entropi untuk daemon ssh terkadang tampaknya menjadi masalah. Startup ssh daemon mungkin tertunda sampai cukup banyak entropi telah diambil. Ini bukan pemblokiran untuk proses startup, jadi ketika Anda berada di konsol Anda tidak perlu menunggu sshd untuk menyelesaikan startupnya.
Prosedur membuka kunci
Untuk membuka kunci dari jarak jauh, Anda dapat melakukan sesuatu seperti ini:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
Contoh ini mengasumsikan bahwa Anda memiliki known_hosts
file tambahan " ~/.ssh/known_hosts.initramfs
" yang menyimpan kunci host sistem cryptroot, bahwa Anda memiliki file " ~/id_rsa.initramfs
" yang memegang kunci-resmi untuk sistem cryptroot, bahwa nama sistem cryptroot adalah " initramfshost.example.com
", dan bahwa frasa sandi cryptroot adalah " secret
"
- < debian@x.ray.net
>, Rab, 30 Sep 2009
zless /usr/share/doc/cryptsetup/README.remote.gz