Як створити зашифрований файл підкачки в Linux?


15

2017 ПОПЕРЕДЖЕННЯ! Здається, прийнята відповідь спрацює, але з недавніми ядрами я виявив, що система зависне, як тільки вона почне мінятись. Якщо ви намагаєтесь зашифровувати файл підкачки, переконайтесь, що він фактично заміняється належним чином. Мені знадобилося багато часу, щоб зрозуміти, чому моя система не замикалася без видимих ​​причин. Я повернувся до використання зашифрованого розділу swap, який працює правильно.


Як створити зашифрований файл swap (не розділ) в Linux? Чи можливо це навіть? Усі знайдені в нас посібники розповідають про зашифровані розділи swap, але я не маю swap-розділів, і я краще не повинен перерозподіляти свій диск.

Мені не потрібна підтримка призупинення на диск, тому я хотів би використовувати випадковий ключ для кожного завантаження.

Я вже використовую для своїх даних том, розміщений у файлі TrueCrypt , але я не хочу вставляти своп у цей том. Я не налаштований на використання TrueCrypt для файлу swap, якщо є краще рішення.

Я використовую Arch Linux з ядром за замовчуванням, якщо це має значення.


У чому саме буде сенс цього? Під час використання його потрібно було б розшифрувати, і воно буде порожнім, коли не використовується.
tkbx

1
Коли ви шукаєте encrypted swapfileперший результат, це призводить до žarlinux.blogspot.de
2011/

@ott, незважаючи на те, що в заголовку сказано "файл swap", якщо ви читаєте вказівки в цій публікації, вони чітко описують розділ swap.
cjm

@tkbx, справа в тому, щоб не допустити відновлення чутливих даних із файлу своп після того, як я вимкнув комп'ютер. (Або хтось не зміг відгадати мій пароль, тому вони перезавантажуються на живий компакт-диск чи інший.)
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 зазначає: "Файли, які підтримуються файлами, не можна використовувати для заміни." Це неправда (чи справедливо лише для циклу AES)?
cjm

Тобто без картографічного пристрою.
ott--

Я переглянув вашу команду cryptsetup, щоб використовувати openзамість create(про що в manpage написано, що застаріла), а також використовувати випадковий ключ замість запиту пароля. Здається, це працює.
cjm

Схоже, це не зберігається при перезавантаженні: "swapon: не можна відкрити / dev / mapper / swapfile: Немає такого файлу чи каталогу"
therobyouknow

6

Ця конфігурація використовує випадково згенеровані ключі під час завантаження і не підтримує сплячку на жорсткому диску! Ви повинні вимкнути сплячку через свою утиліту DE Power Management Utility та встановити її на Вимкнення критично, щоб уникнути втрати даних!

Переконайтеся, що ви запустили sudo -sабо suперед тим , як виконати наступне.

  1. Вимкнути заміну:

    # swapoff -a
    
  2. Знайдіть існуючий розділ Swap

    # lsblk
    

    У вас вийде щось подібне:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Перепишіть старий своп

    # 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. Налаштування криптовалюти

    # 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. Активний зашифрований своп

    # 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, у вас має працювати робоча свопфайл у вашій кореневій файловій системі. (ми використовуємоdd для того, щоб у свопіфіларі не було отворів)

Це обходиться з необхідністю возитися з петлевими пристроями та / або криптовалютою і просто розміщує свопфайл всередині вашої вже зашифрованої файлової системи. (Ми припускаємо, що ви тут використовуєте шифрування для всього диска/swapfile параметр разом із контуром до зашифрованого каталогу, якщо він знаходиться деінде)

Див. man mkswapТа man swaponдля отримання додаткової інформації.


Я спробував створити подібний файл swapfile в моєму зашифрованому домашньому каталозі, і він
вийшов з ладу так

Ваш домашній каталог розблокований під час завантаження системи чи під час входу? Якщо він розблоковується лише під час входу, ви не можете мати там свопфайл. Свід повинен бути розблокований і доступний для завантаження системи. Крім того, ви не хочете системних речей у домашньому каталозі користувача. Це зарезервовано для користувачів.
Міо Рін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.