ฉันจะตั้งค่าไฟล์สลับที่เข้ารหัสใน Linux ได้อย่างไร


15

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


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

ฉันไม่ต้องการการสนับสนุน suspend-to-disk ดังนั้นฉันต้องการใช้ปุ่มสุ่มในการบูตแต่ละครั้ง

ฉันใช้ไดรฟ์ข้อมูลที่โฮสต์ไฟล์TrueCryptอยู่แล้วสำหรับข้อมูลของฉัน แต่ฉันไม่ต้องการใส่การแลกเปลี่ยนลงในโวลุ่มนั้น ฉันไม่ได้ตั้งค่าโดยใช้ TrueCrypt สำหรับไฟล์ swap หากมีวิธีแก้ไขที่ดีกว่า

ฉันใช้Arch Linuxกับเคอร์เนลเริ่มต้นถ้าเป็นเช่นนั้น


อะไรคือประเด็นของสิ่งนั้น มันจะต้องมีการถอดรหัสในขณะที่ใช้มันและมันจะว่างเปล่าเมื่อไม่ได้ใช้งาน
tkbx

1
เมื่อคุณค้นหาencrypted swapfileผลลัพธ์แรกจะนำไปสู่rayslinux.blogspot.de/2011/01/…
ott

@ott แม้จะมีคำว่า "swap file" อยู่ในชื่อเรื่องหากคุณอ่านคำแนะนำในโพสต์นั้นพวกเขาจะอธิบายถึงพาร์ทิชัน swap อย่างชัดเจน
cjm

@tkbx ประเด็นก็คือเพื่อป้องกันไม่ให้ใครบางคนกู้คืนข้อมูลที่สำคัญจากไฟล์ swap หลังจากที่ฉันปิดคอมพิวเตอร์ (หรือคนที่ได้รับไม่สามารถที่จะคาดเดารหัสผ่านของฉันดังนั้นพวกเขากำลังรีบูตเครื่องลงในแผ่นซีดีสดหรือเช่น.)
CJM

2
@tkbx ฉันไม่เชื่อเช่นนั้น นั่นจะต้องมีการเขียนข้อมูลกิกะไบต์ทุกครั้งที่คุณปิดคอมพิวเตอร์ ข้อมูลในไฟล์ swap จะไม่ถูกใช้เมื่อคุณรีบูท แต่นั่นไม่ได้หมายความว่าจะถูกลบออกจากดิสก์
cjm

คำตอบ:


14

อันที่จริงหน้าอธิบายการตั้งค่าพาร์ทิชัน แต่มันคล้ายกับ swapfile:

dd if=/dev/urandom of=swapfile.crypt bs=1M count=64
loop=$(losetup -f)
losetup ${loop} swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

ผลลัพธ์:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/swap0                       partition       4000176 0       -1
/dev/mapper/swap1                       partition       2000084 0       -2
/dev/mapper/swapfile                    partition       65528   0       -3

swap0 และ swap1 เป็นพาร์ติชันที่แท้จริง


loop-AES.READMEกล่าวในหัวข้อ 7.1: "ลูปที่สำรองไฟล์ไม่สามารถใช้สำหรับการสลับได้" เป็นเรื่องจริง (หรือเป็นจริงสำหรับ loop-AES) เท่านั้น
cjm

นั่นคือไม่มีผู้ทำแผนที่อุปกรณ์
ott--

ฉันแก้ไขคำสั่ง cryptsetup ของคุณเพื่อใช้openแทนcreate(ซึ่ง manpage บอกว่าล้าสมัย) และใช้คีย์สุ่มแทนการถามรหัสผ่าน ดูเหมือนว่าจะทำงาน
cjm

ดูเหมือนว่าจะยังไม่มีการรีบูต: "swapon: ไม่สามารถเปิด / dev / mapper / swapfile: ไม่มีไฟล์หรือไดเรกทอรี"
therobyouknow

6

การกำหนดค่านี้ใช้คีย์ที่สร้างแบบสุ่มในการบูตและจะไม่สนับสนุนการไฮเบอร์เนตไปยังฮาร์ดดิสก์! คุณควรปิดใช้งานการจำศีลผ่านโปรแกรมอรรถประโยชน์การจัดการพลังงาน DE ของคุณและตั้งค่าเป็นปิดระบบที่สำคัญเพื่อหลีกเลี่ยงการสูญเสียข้อมูล!

ตรวจสอบให้แน่ใจว่าได้รันsudo -sหรือsuก่อนรัน

  1. ปิดการใช้งาน Swap:

    # swapoff -a
    
  2. ค้นหา Swap Partition ที่มีอยู่

    # lsblk
    

    คุณจะได้รับสิ่งนี้:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. เขียนทับ Swap เก่า

    # dd if=/dev/zero bs=1024000 of=/dev/sda<#>
    

    ตัวอย่างเช่น:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab ติดตั้ง

    # vim /etc/fstab
    

    แทนที่อุปกรณ์ SWAP เก่าด้วยชื่อผู้ทำแผนที่ crypttab: /dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. การตั้งค่า Crypto

    # ls -lF /dev/disk/by-id
    

    ตัวอย่างเช่น:

    ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
    
    # vim /etc/crypttab
    
    # <name>    <device>                            <password>  <options>
      cswap     /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3   /dev/urandom    swap,cipher=aes-cbc-essiv:sha256,size=256
    
  6. Active Encrypted Swap

    # reboot
    
  7. ตรวจสอบการดำเนินการแลกเปลี่ยนที่ถูกบล็อก

    ตัวอย่างเช่น:

    # dmsetup -C info 
    cswap      253   0 L--w    2    1      0 CRYPT-PLAIN-cswap  
    # lsblk
    ├─sda3                8:3    0     8G  0 part  
    │ └─cswap             253:0    0     8G  0 crypt [SWAP]
    # cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-0               partition   8385532 0       -1
    

1

หากคุณใช้dd if=/dev/zero of=/swapfile bs=8G count=1ตามด้วยmkswap /swapfileและswapon /swapfileคุณควรมี swapfile ที่ใช้งานได้ในระบบไฟล์รูทของคุณ (เราใช้ddเพื่อให้แน่ใจว่าไม่มีช่องโหว่ใน swapfile)

สิ่งนี้ทำให้เกิดปัญหากับอุปกรณ์วนรอบและ / หรือ crypttab และเพียงแค่วาง swapfile ไว้ในระบบไฟล์ที่เข้ารหัสของคุณแล้ว (เราสมมติว่าคุณกำลังใช้การเข้ารหัสสำหรับไดรฟ์ทั้งหมดที่นี่เตรียม/swapfileพารามิเตอร์พร้อมเส้นทางไปยังไดเรกทอรีที่เข้ารหัสของคุณหากเป็นที่อื่น)

ดูman mkswapและman swaponสำหรับข้อมูลเพิ่มเติม


ฉันพยายามสร้าง swapfile เช่นนี้ในโฮมได
เร็กตอรี่

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