ใน Debian 12 พาร์ติชั่น swap เฉพาะสามารถเข้ารหัสด้วยคีย์สุ่มใหม่ทุกครั้งที่ระบบเริ่มต้น เพิ่มการแมปคีย์สุ่มในไฟล์ `.py` /etc/crypttabจากนั้นชี้/etc/fstabไปยังอุปกรณ์ที่แมปไว้ การตั้งค่าด้านล่างใช้พาร์ติชั่นที่มีอยู่แล้วและไม่จำเป็นต้องติดตั้ง Debian ใหม่
ขั้นตอนนี้ใช้สำหรับการสลับข้อมูลทั่วไป ไม่ใช่สำหรับการพักเครื่องเพื่อบันทึกลงดิสก์ (ไฮเบอร์เนชั่น) เนื่องจากคีย์จะถูกทิ้งเมื่อปิดเครื่อง ภาพไฮเบอร์เนชั่นจึงไม่สามารถถอดรหัสได้ในการบูตครั้งถัดไป หากคุณต้องการไฮเบอร์เนชั่น ให้ใช้การออกแบบคีย์ถาวรที่มีการตั้งค่าการกู้คืนของตัวเองแทน
ก่อนที่คุณจะเปลี่ยนการตั้งค่าการสลับข้อมูล
ตรวจสอบให้แน่ใจว่าคุณมีพาร์ติชันแยกต่างหากที่มีประเภทระบบไฟล์เป็นswap. อย่าใช้พาร์ติชันรูท พาร์ติชันข้อมูล หรือดิสก์ที่มีไฟล์ที่คุณต้องการ ตัวอย่างชื่ออุปกรณ์ด้านล่างเป็นเพียงตัวอย่างเท่านั้น โปรดแทนที่ด้วยค่าจากระบบของคุณเอง
ตรวจสอบพื้นที่สวอปที่ใช้งานอยู่และจับคู่กับรายการอุปกรณ์บล็อก:
swapon --show --output=NAME,TYPE,SIZE,USED,PRIO
lsblk -o NAME,PATH,TYPE,FSTYPE,UUID,PARTUUID,SIZE
ค้นหาแถวที่TYPEและpartคือFSTYPEบันทึกswapค่าของมันPARTUUIDและยืนยันว่าเป็นพาร์ติชันเดียวกันกับที่แสดงโดย ค่าswapon --showA PARTUUIDระบุพาร์ติชันนั้นเองและจะคงที่เมื่อพื้นที่สวอปถูกสร้างขึ้นใหม่ UUID ของระบบไฟล์สวอปอาจเปลี่ยนแปลงได้เนื่องจากการแมปที่เข้ารหัสจะถูกเริ่มต้นใหม่อีกครั้งเมื่อเริ่มต้นระบบ
เอาต์พุตจากเทอร์มินัลจะระบุอุปกรณ์สวอปที่ใช้งานอยู่ และแยกแยะแถวพาร์ติชันของอุปกรณ์สวอปออกจากระบบไฟล์รูทและระบบไฟล์ข้อมูล
สำรองข้อมูล/etc/fstabก่อนแก้ไข หากพาร์ติชั่นกำลังใช้งานอยู่ ให้ปิดเฉพาะพื้นที่สวอป (swap area) นั้น:
sudo cp -a /etc/fstab "/etc/fstab.before-cryptswap.$(date +%s)"
sudo swapoff /dev/nvme0n1p3
แทนที่/dev/nvme0n1p3ด้วยอุปกรณ์ที่ได้รับการตรวจสอบแล้ว การปิดใช้งาน swap จะย้ายหน้าข้อมูลที่จัดเก็บไว้ที่นั่นกลับไปยังหน่วยความจำหลัก หากคำสั่งล้มเหลวหรือเครื่องมีภาระหน่วยความจำสูง ให้หยุดที่นี่ ปิดโปรแกรมที่ใช้หน่วยความจำมาก และลองใหม่อีกครั้งเมื่อมี RAM ว่างเพียงพอ
ปิดใช้งานพาร์ติชั่นสวอปที่ได้รับการยืนยันแล้ว ก่อนที่จะเปลี่ยนการตั้งค่าขณะบูตเครื่อง
กำหนดค่าการแมปที่เข้ารหัสด้วยคีย์แบบสุ่ม
เปิดไฟล์ crypttab ด้วยโปรแกรมแก้ไขข้อความระดับรูท:
sudoedit /etc/crypttab
เพิ่มบรรทัดใหม่หนึ่งบรรทัด โดยแทนที่YOUR-PARTUUIDด้วยตัวระบุพาร์ติชันจริง รักษาชื่อการแมปให้cryptswapสอดคล้องกันในขั้นตอนถัดไป
cryptswap PARTUUID=YOUR-PARTUUID /dev/urandom plain,cipher=aes-xts-plain64,size=256,hash=sha1,swap
/etc/crypttabคำสั่ง นี้จะบอก Debian ว่าควรสร้างอุปกรณ์บล็อกที่เข้ารหัสใดเมื่อเริ่มต้นPARTUUID=ระบบ แหล่งที่มาจะชี้ไปยังพาร์ติชันแบบ raw; /dev/urandomระบุคีย์ใหม่; plainเลือก dm-crypt โดยไม่มีส่วนหัว LUKS แบบถาวร; และswapขอให้ตัวช่วย crypttab เริ่มต้นอุปกรณ์ที่แมปไว้เป็น swap มีการระบุรหัสเข้ารหัส ขนาดคีย์ และแฮชอย่างชัดเจน ตามตัวอย่าง crypttab ของ Debian Bookwormการแมปจะปรากฏเป็น ตัวเลือก /dev/mapper/cryptswapนี้swapจะทำงานmkswapบนอุปกรณ์ที่แมปไว้เมื่อเริ่มต้นระบบ ดังนั้นเนื้อหาจะถูกเริ่มต้นใหม่ทุกครั้งที่บูต ชี้แหล่งที่มาไปยังพาร์ติชัน swap เฉพาะที่คุณตรวจสอบแล้วเท่านั้น ตัวเลือกนี้จะทำให้เกิดความเสียหายหากชี้ไปยังพาร์ติชันที่มีไฟล์อยู่
รายการใน crypttab ใช้ตัวระบุพาร์ติชันที่เสถียรและคีย์สุ่มใหม่สำหรับแมปปิ้งที่มีชื่อว่า cryptswap
ตอนนี้เปิด/etc/fstabไฟล์ . ลบหรือคอมเมนต์บรรทัดเก่าที่เปิดใช้งานพาร์ติชั่นสวอปแบบดิบ รวมถึงบรรทัดใดๆ ที่อ้างอิงถึง UUID สวอปปัจจุบัน แล้วเพิ่มรายการนี้แทน:
/dev/mapper/cryptswap none swap sw 0 0
อย่าเปิดใช้งานทั้งสองรายการพร้อมกัน: เพราะอาจทำให้พาร์ติชันที่ไม่ได้เข้ารหัสทำงานควบคู่ไปกับการแมปที่เข้ารหัสได้fstabไฟล์นี้อธิบายถึงพื้นที่สวอปที่เปิดใช้งานระหว่างการเริ่มต้นระบบ ในขณะที่ตัวสร้าง cryptsetup ของ systemd ใน Debian จะอ่าน/etc/crypttabและสร้างหน่วยที่เกี่ยวข้อง ดูคู่มือตัวสร้าง cryptsetup ของ systemd จาก Bookwormและคู่มือfstab ของ Debian
หลังจากสร้างแผนที่เสร็จแล้ว fstab จะเปิดใช้งานการสลับข้อมูลผ่านทาง /dev/mapper/cryptswap แทนที่จะใช้พาร์ติชันดิบ
รีบูตเครื่องและตรวจสอบไฟล์สวอปที่เข้ารหัส
บันทึกไฟล์ทั้งสองไฟล์แล้วรีบูตเครื่อง เพื่อให้ Debian สร้างการแมปในระหว่างการเริ่มต้นระบบ:
sudo reboot
หลังจากล็อกอินอีกครั้ง ให้ตรวจสอบทั้งเส้นทางสวอปที่ใช้งานอยู่และการแมป dm-crypt:
swapon --show
sudo cryptsetup status cryptswap
รายการสวอปควรระบุชื่อ/dev/mapper/cryptswapไม่ใช่พาร์ติชันดิบ ผลลัพธ์สถานะ cryptsetup ควรแสดงการแมปแบบธรรมดาที่ใช้งานอยู่และพาร์ติชันพื้นฐานที่คาดหวัง การตรวจสอบครั้งที่สองนี้มีความสำคัญ: รายการสวอปที่ปรากฏในswapon --showเพียงอย่างเดียวไม่ได้พิสูจน์ว่ามีการเข้ารหัส
หากไม่พบการแมป ให้ตรวจสอบการสะกดคำPARTUUIDและlsblkตรวจสอบบันทึกการบูตด้วยคำสั่ง `boot log` sudo journalctl -b -u systemd-cryptsetup@cryptswap.serviceยืนยันว่ารายการ raw-device เก่าไม่ได้ใช้งานอยู่ใน ` boot log` อีกต่อไป /etc/fstabอย่ารันmkswapคำสั่ง `boot log` โดยตรงบนพาร์ติชัน raw หลังจากตั้งค่าการแมปแล้ว
โปรดทราบว่าการเปลี่ยนแปลงนี้ช่วยปกป้องอะไรบ้าง
ด้วยการสร้างคีย์ใหม่ทุกครั้งที่บูตเครื่อง ข้อมูลที่เขียนลงในพื้นที่สวอปในระหว่างเซสชันนั้นจะถูกเข้ารหัสบนอุปกรณ์บล็อก และคีย์ของเซสชันก่อนหน้าจะไม่ถูกเก็บไว้หลังจากปิดเครื่อง ซึ่งมีประโยชน์ในกรณีที่อุปกรณ์อาจถูกปิดเครื่องและมีการตรวจสอบพื้นที่จัดเก็บข้อมูล อย่างไรก็ตาม วิธีนี้จะไม่เข้ารหัสส่วนที่เหลือของดิสก์ ป้องกันข้อมูลขณะที่ Debian กำลังทำงาน หรือลบข้อความธรรมดาที่อาจหลงเหลืออยู่ในพาร์ติชันก่อนการแปลงโดยอัตโนมัติ หากข้อมูลสวอปเก่ามีความละเอียดอ่อน ควรดำเนินการล้างข้อมูลเหล่านั้นเป็นงานเฉพาะสำหรับพื้นที่จัดเก็บข้อมูลนั้นๆ การฟอร์แมตใหม่ในระดับระบบไฟล์ไม่รับประกันการลบข้อมูลอย่างปลอดภัย โดยเฉพาะอย่างยิ่งบน SSD
คู่มือการติดตั้ง Bookworm ของ Debian อธิบายว่าการเข้ารหัสแบบสุ่มคีย์นั้นเหมาะสมสำหรับ swap และระบุว่าการเข้ารหัสแบบนี้จะป้องกันการกู้คืนภาพจำศีลหลังจากการรีบูต โปรดดูส่วน encrypted-volume ในคู่มือการติดตั้ง Debian 12สำหรับอุปกรณ์ที่ใช้งานอยู่ ให้ใช้คำสั่งตรวจสอบสองคำสั่งข้างต้น: mapper ควรทำงานอยู่ และอุปกรณ์ที่รองรับควรตรงกับพาร์ติชันที่คุณเลือก