วิธีการหลีกเลี่ยงพรอมต์รหัสผ่านพาร์ติชันสำหรับบูตที่เข้ารหัสใน LVM- arch linux


1

ฉันใช้ LVM กับ Arch Linux กรุณาหาโครงสร้างดิสก์ด้านล่าง

NAME              MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                 8:0    0   50G  0 disk  
|-sda1              8:1    0  512M  0 part  
| `-cryptboot     254:3    0  510M  0 crypt 
|   `-vgboot-boot 254:4    0  508M  0 lvm   /boot
`-sda2              8:2    0 49.5G  0 part  
  `-cryptlvm      254:0    0 49.5G  0 crypt 
    |-vgos-swap   254:1    0    4G  0 lvm   [SWAP]
    `-vgos-root   254:2    0 45.5G  0 lvm   /
sr0                11:0    1  560M  0 rom   

เมื่อฉันบูตเข้าสู่ระบบฉันจะได้รับพรอมต์รหัสผ่านสำหรับพาร์ติชันสำหรับเริ่มระบบของฉันเพราะมันถูกเข้ารหัส แต่ฉันต้องการหลีกเลี่ยงพรอมต์รหัสผ่านนี้และพาร์ทิชันสำหรับบูตของฉันควรอยู่ใน LVM โปรดแจ้งให้เราทราบหากใครทำสิ่งนี้

หากคุณเห็นแผนภาพข้างต้นรากของฉันยังอยู่ใน LVM หลังจากเลือก kernal แล้วจะมีการถามรหัสผ่าน แต่มันไม่ใช่ปัญหา

คำตอบ:


1

คุณได้รับพรอมต์รหัสผ่านสองครั้งเพราะ /boot พาร์ทิชันถูกเข้ารหัส ก่อนอื่น GRUB จะขอรหัสผ่านเนื่องจากจำเป็นต้องโหลดเคอร์เนลจากการเข้ารหัส /boot. จากนั้นเคอร์เนลจะขอรหัสผ่านอีกครั้งเพื่อถอดรหัส /.

มีสองวิธีในการแก้ไขปัญหานี้:

  1. อย่าใช้การเข้ารหัส /boot. ด้วงจะไม่ถามรหัสผ่าน วิธีนี้จะช่วยให้ผู้ใดก็ตามที่มีเคอร์เนลและไฟล์ initramfs . ตัวอย่างหนึ่งสามารถแทนที่เคอร์เนลด้วยอันที่เป็นอันตรายที่เข้าถึงการเข้ารหัสของคุณ / เมื่อคุณป้อนรหัสผ่าน

  2. สร้างคีย์ถอดรหัสและเพิ่มลงในสล็อต LUKS ฟรี /จากนั้นฝังคีย์นั้นใน initramfs นี่จะทำให้เคอร์เนลเข้าถึง / ไม่มีรหัสผ่าน

การตั้งค่าสำหรับ # 2 ค่อนข้างซับซ้อนดังนั้นฉันจะไปกับแนวทางก่อนหน้านี้ ฉันพิมพ์สิ่งนี้จากส่วนบนของหัวของฉันโดยไม่มีการทดสอบใด ๆ ทำการสำรองข้อมูลและดำเนินการอย่างระมัดระวัง ฉันจะไม่รับผิดชอบต่อการสูญหายของข้อมูลและปัญหาอื่น ๆ ที่เกิดจากกระบวนการนี้

คุณจะต้องมีสื่อ Linux ที่สามารถบู๊ตได้ด้วย cryptsetup และ resize2fs. ฉันแนะนำให้ใช้ Ubuntu แฟลชไดรฟ์ นอกจากนี้คุณยังสามารถแทนที่หลังด้วย partclone. คุณจะต้องมีพื้นที่ว่างบนดิสก์ประมาณ 500 MB เพื่อจัดเก็บการถอดรหัสระดับกลาง /boot ภาพ.

บูตจากสื่อ Linux ของคุณ เข้าถึง LVM (ตรงไปตรงมาฉันไม่เคยจัดการเลยดังนั้นฉันจึงไม่มีความคิดว่าจำเป็นต้องมีขั้นตอนเพิ่มเติมใด ๆ - มีความเป็นไปได้ที่ Ubuntu จะจัดการเรื่องนี้โดยอัตโนมัติ) เปิดการเข้ารหัส /boot:

cryptsetup open /dev/<boot> cryptboot

สร้างอิมเมจสำหรับการบูทที่ไม่ได้เข้ารหัส: (เพื่อดูการใช้งานที่ก้าวหน้า pv แทน cat )

cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img

ปิด /boot:

sync
cryptsetup close cryptboot

เขียนโดยไม่เข้ารหัส /boot ไปที่พาร์ติชันและปรับขนาดระบบแฟ้ม:

cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot>
resize2fs /dev/<boot>

รับ UUID จาก /boot (จดบันทึก):

blkid /dev/<boot>

เปิดและเมานต์ /อัปเดต fstab:

cryptsetup open /dev/<root> cryptroot
mkdir -p /mnt/root
mount /dev/mapper/cryptroot /mnt/root
cd /mnt/root
vi etc/fstab

ปรับบรรทัดที่เมาท์ /boot เพื่อใช้ UUID ใหม่แทน /dev/mapper/... การเข้า คุณอาจต้องลบ /boot สายจาก etc/crypttab.

อัปเดต initramfs (อันนี้อาจผิดพลาดใน Ubuntu หากระบบปฏิบัติการหลักของคุณคือ Arch ... ฉันไม่แน่ใจดังนั้นโปรดระมัดระวัง):

cd /mnt/root
mount -t sysfs sysfs sys
mount -t tmpfs tmp tmp
mount -t proc proc proc
mount --bind /dev dev
mount /dev/<boot> boot
mount --bind /boot/efi boot/efi
chroot
update-initramfs -u -k all
exit

เท่าที่ฉันจำได้ว่าควรจะพอเพียง คุณสามารถทำให้การกำหนดค่า GRUB ง่ายขึ้นโดยการปิดใช้งานการบูตที่เข้ารหัสในไฟล์การกำหนดค่า มันสามารถเพิ่มความเร็วในการบูทเล็กน้อย แต่ไม่จำเป็น

ทำความสะอาดตัวเองหลังจาก:

umount boot/efi boot dev proc tmp sys
cd ..
umount root
cryptsetup close cryptroot

ขอบคุณสำหรับการตอบกลับและข้อมูลที่มีประโยชน์มาก แต่ฉันไม่ต้องการให้บูตของฉันย้ายออกจากพาร์ทิชันเข้ารหัส
Vipin

1
จากนั้นคุณต้องไปกับ # 2 นี่คือแนวทาง .
gronostaj

ขอบคุณสำหรับลิงค์ เพียงหนึ่งการชี้แจง เมื่อเราปล่อยไฟล์กุญแจใน initramfs ไฟล์คีย์นี้ช่วยให้เราปลดล็อคระบบไฟล์รูท แต่ / boot ถูกเข้ารหัสเรายังต้องใส่รหัสผ่านทุกครั้ง ไม่มีวิธีฝังเป็นไฟล์คีย์หรือไม่
Vipin

1
คุณสามารถเพิ่มรหัสเดียวกันได้ / และ /boot. คุณจะต้องป้อนรหัสผ่านเพียงครั้งเดียวเพื่อให้ด้วงสามารถโหลดเคอร์เนลและ initramfs ได้ /boot. จากนั้นเคอร์เนลจะใช้ keyfile เพื่อเปิด / และ keyfile เดียวกันอีกครั้งเพื่อเปิดและเมานต์ /boot. ส่วนหัวของ LUKS สามารถเก็บคีย์ / รหัสผ่านได้สูงสุด 8 คีย์ดังนั้นการเปิดด้วยรหัสผ่าน (สำหรับ GRUB) และด้วยคีย์ (สำหรับเคอร์เนล) ไม่ได้ จำกัด เฉพาะ
gronostaj

ขอบคุณ keyfile จะถูกเพิ่มเข้าไปใน initramfs ถ้าเข้าใจถูกต้อง แต่มันรู้ได้อย่างไรว่าพาร์ติชั่นใดที่เราควรใช้ไฟล์คีย์นั้น
Vipin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.