Как настроить зашифрованный файл подкачки в Linux?

15

2017 ВНИМАНИЕ! Принятый ответ, кажется, работает, но с последними ядрами я обнаружил, что система зависнет, как только она начнет меняться. Если вы пытаетесь использовать зашифрованный файл подкачки, убедитесь, что он действительно правильно поменяется. Мне потребовалось много времени, чтобы понять, почему моя система блокировалась без видимой причины. Я вернулся к использованию зашифрованного раздела подкачки, который работает правильно.


Как настроить зашифрованный файл подкачки (не раздел) в Linux? Это вообще возможно? Все руководства, которые я нашел, говорят о зашифрованных разделах подкачки, но у меня нет раздела подкачки, и я бы предпочел не перераспределять диск.

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

Для своих данных я уже использую том с файлами TrueCrypt , но не хочу помещать в него том подкачки. Я не настроен на использование TrueCrypt для файла подкачки, если есть лучшее решение.

Я использую Arch Linux с ядром по умолчанию, если это имеет значение.

CJM
источник
Какой именно смысл в этом? Он должен быть расшифрован во время использования, и он будет пустым, когда он не используется.
tkbx
1
При поиске encrypted swapfileпервый результат приводит к raylinux.blogspot.de/2011/01/…
ott--
@ott, несмотря на то, что в заголовке говорится «файл подкачки», если вы прочитаете инструкции в этом посте, они четко описывают раздел подкачки.
cjm
@tkbx, суть в том, чтобы кто-то не смог восстановить конфиденциальные данные из файла подкачки после того, как я выключил компьютер. (Или кто-то не смог угадать мой пароль, поэтому он перезагружается на live CD или что-то подобное.)
cjm
2
@tkbx, я так не считаю. Это потребует записи гигабайт данных каждый раз, когда вы выключаете компьютер. Данные в файле подкачки не используются при перезагрузке, но это не значит, что они удалены с диска.
cjm

Ответы:

14

На самом деле, страница описывает настройку раздела, но это похоже на файл подкачки:

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 являются реальными разделами.

ott--
источник
loop-AES.README говорит в разделе 7.1: «Циклы с файловой поддержкой не могут быть использованы для подкачки». Это не соответствует действительности (или только верно для loop-AES)?
cjm
Это без устройства отображения.
ot--
Я изменил вашу команду cryptsetup, чтобы использовать openвместо нее create(которая на странице руководства устарела) и использовать случайный ключ вместо запроса пароля. Кажется, это работает.
cjm
Похоже, что это не сохраняется при перезагрузке: «swapon: невозможно открыть / dev / mapper / swapfile: нет такого файла или каталога»
therobyouknow
6

Эта конфигурация использует случайно сгенерированные ключи при загрузке и не поддерживает гибернацию на жесткий диск! Вы должны отключить режим гибернации с помощью соответствующей утилиты DE Power Management Utility и установить для нее значение «Выключить при критическом уровне», чтобы избежать потери данных!

Обязательно запустите sudo -sили suперед запуском следующее.

  1. Отключить своп:

    # swapoff -a
    
  2. Найдите существующий раздел подкачки

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

    # 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чтобы убедиться, что в файле подкачки нет отверстий)

Это избавляет от необходимости возиться с петлевыми устройствами и / или crypttab и просто помещает файл подкачки в уже зашифрованную файловую систему. (Мы предполагаем, что вы используете шифрование для всего диска. Добавьте /swapfileпараметр к пути к вашему зашифрованному каталогу, если он где-то еще)

Смотрите man mkswapи man swaponдля получения дополнительной информации.

Мио Рин
источник
Я попытался создать подобный файл подкачки в моем зашифрованном домашнем каталоге, и он упал, как зашифрованный файл подкачки ...
fifaltra
Ваш домашний каталог разблокирован при загрузке системы или при входе в систему? Если он разблокируется только при входе в систему, тогда у вас не может быть файла подкачки. Своп должен быть разблокирован и доступен при загрузке системы. Кроме того, вам не нужны системные компоненты в вашем домашнем каталоге пользователя. Это зарезервировано для пользовательских вещей.
Мио Рин