Bagaimana cara mengatur file swap terenkripsi di Linux?

15

2017 PERINGATAN! Jawaban yang diterima tampaknya berfungsi, tetapi dengan kernel baru-baru ini saya menemukan bahwa sistem akan hang segera setelah mulai bertukar. Jika Anda mencoba menggunakan file swap terenkripsi, pastikan itu benar-benar bertukar dengan benar. Butuh waktu lama untuk mencari tahu mengapa sistem saya terus terkunci tanpa alasan yang jelas. Saya kembali menggunakan partisi swap terenkripsi, yang berfungsi dengan benar.


Bagaimana cara mengatur file swap terenkripsi (bukan partisi) di Linux? Apakah itu mungkin? Semua panduan yang saya temukan berbicara tentang partisi swap terenkripsi, tetapi saya tidak memiliki partisi swap, dan saya lebih suka tidak perlu mempartisi ulang disk saya.

Saya tidak perlu dukungan penskorsan ke disk, jadi saya ingin menggunakan kunci acak pada setiap boot.

Saya sudah menggunakan volume host-file TrueCrypt untuk data saya, tetapi saya tidak ingin memasukkan swap saya ke volume itu. Saya tidak ingin menggunakan TrueCrypt untuk file swap jika ada solusi yang lebih baik.

Saya menggunakan Arch Linux dengan kernel default, jika itu penting.

cjm
sumber
Apa sebenarnya gunanya hal itu? Itu harus didekripsi saat menggunakannya, dan itu akan kosong ketika tidak digunakan.
tkbx
1
Ketika Anda mencari encrypted swapfilehasil pertama mengarah ke rayslinux.blogspot.de/2011/01/...
ott--
@ott, meskipun mengatakan "file swap" di judul, jika Anda membaca petunjuk di posting itu mereka jelas menggambarkan partisi swap.
cjm
@ tkbx, intinya adalah untuk mencegah seseorang memulihkan data sensitif dari file swap setelah saya mematikan komputer saya. (Atau seseorang tidak dapat menebak kata sandi saya, jadi mereka me-reboot ke live CD atau semacamnya.)
cjm
2
@ tkbx, saya tidak percaya begitu. Itu akan membutuhkan penulisan gigabytes data setiap kali Anda mematikan komputer. Data dalam file swap tidak digunakan ketika Anda reboot, tetapi itu tidak berarti itu dihapus dari disk.
cjm

Jawaban:

14

Memang, halaman tersebut menjelaskan pengaturan partisi, tetapi mirip dengan 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

Hasil:

# 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 dan swap1 adalah partisi nyata.

ott--
sumber
loop-AES.README mengatakan di bagian 7.1: "Loop yang didukung file tidak dapat digunakan untuk swap." Apakah itu tidak benar (atau hanya berlaku untuk loop-AES)?
cjm
Itu tanpa perangkat mapper.
ott--
Saya merevisi perintah cryptsetup Anda untuk digunakan openalih-alih create(yang dikatakan halaman manual sudah usang), dan untuk menggunakan kunci acak alih-alih meminta kata sandi. Tampaknya berhasil.
cjm
Ini sepertinya tidak bertahan pada reboot: "swapon: tidak dapat membuka / dev / mapper / swapfile: Tidak ada file atau direktori"
therobyouknow
6

Konfigurasi ini menggunakan kunci yang dibuat secara acak saat boot dan tidak akan mendukung Hibernasi ke hard disk! Anda Harus Menonaktifkan Hibernasi melalui DE Utilitas Manajemen Daya hormat Anda dan mengaturnya untuk Shutdown pada Kritis untuk menghindari Kehilangan Data!

Pastikan untuk menjalankan sudo -satau susebelum menjalankan yang berikut ini.

  1. Nonaktifkan Tukar:

    # swapoff -a
    
  2. Temukan Partisi Swap yang ada

    # lsblk
    

    Anda akan mendapatkan sesuatu seperti ini:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Timpa Tukar Lama

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

    sebagai contoh:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab mempersiapkan

    # vim /etc/fstab
    

    Ganti perangkat SWAP lama dengan nama map crypttab: /dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. Pengaturan Crypto

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

    Sebagai contoh:

    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. Swap Terenkripsi Aktif

    # reboot
    
  7. Verifikasi Operasi Swap yang Diperkirakan

    Sebagai contoh:

    # 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
    
Timothy Butterworth
sumber
1

Jika Anda menggunakan dd if=/dev/zero of=/swapfile bs=8G count=1, diikuti oleh mkswap /swapfiledan swapon /swapfile, Anda harus memiliki swapfile yang berfungsi pada sistem berkas root Anda. (kami gunakan dduntuk memastikan tidak ada lubang di swapfile)

Hal ini berhasil mengacaukan perangkat loop dan / atau crypttab dan hanya menempatkan swapfile di dalam sistem file yang sudah terenkripsi. (Kami berasumsi bahwa Anda menggunakan enkripsi untuk seluruh drive di sini. Sertakan /swapfileparameter dengan jalur ke direktori terenkripsi Anda jika ada di tempat lain)

Lihat man mkswapdan man swaponuntuk informasi lebih lanjut.

Mio Rin
sumber
Saya mencoba membuat swapfile seperti ini di direktori home terenkripsi saya seperti itu, dan itu crash seperti halnya file swap terenkripsi lakukan ...
fifaltra
Apakah direktori rumah Anda tidak dikunci saat boot sistem atau ketika Anda masuk? Jika hanya membuka ketika Anda masuk, maka Anda tidak dapat memiliki swapfile di sana. Swap harus dibuka dan disediakan pada boot sistem. Selain itu, Anda tidak ingin hal-hal sistem dalam direktori home pengguna Anda. Itu disediakan untuk barang-barang pengguna.
Mio Rin