Шифрование данных в Debian

Шифрование данных в Debian


Многим кажется что шифровать свои данные не нужно. Однако в повседневной жизни мы часто сталкиваемся с такими ситуациями как «потерялась флешка» или же «ноутбук сдан в ремонт» итп. В случае если ваши данные зашифрованы, то можно за них совершенно не беспокоиться: никто не опубликует их в интернете, или не воспользуется каким-то другим способом.


Шифрование при помощи cryptsetup


Установим необходимые компоненты:

# apt-get install cryptsetup

Стандартный синтаксис


Выберем раздел диска (или флешки) который мы хотим зашифровать, например это будет /dev/sda2. Введем команду:
# cryptsetup create sda2_crypt /dev/sda2
Данная команда создаст шифрованное подключение к нашему диску. В каталоге /dev/mapper появится новое устройство с запрошенным нами именем: /dev/mapper/sda2_crypt, обращаясь к которому мы используем шифрованный доступ к диску. В случае с LUKS имя будет /dev/mapper/sda2_crypt
Если на диске уже была файловая система и мы хотели бы сохранить данные на ней то необходимо выполнить их шифрование для последующего их использования:
# dd if=/dev/sda2 of=/dev/mapper/sda2_crypt
Если же создается новый диск на пустом разделе, то можно отформатировать его:
# mkfs.ext3 /dev/mapper/sda2_crypt
В последствии можно будет смонтировать этот диск куда угодно:
# mount /dev/mapper/sda2_crypt /path/to/mount/point
Проверить целостность данных (как обычно, лучше использовать только в размонтированном состоянии):
# fsck.ext3 /dev/mapper/sda2_crypt
И даже расшифровать обратно, если мы больше не хотим использовать шифрование:
# dd if=/dev/mapper/sda2_crypt of=/dev/sda2

LUKS синтаксис


Вышеуказанные действия можно выполнить в соответствии со стандартом LUKS
Инициализируем раздел:
cryptsetup luksFormat /dev/sda2
Подключаем в систему:
cryptsetup luksOpen /dev/sda2 sda2_crypt
Форматируем:
mkfs.ext4 -v -L DATA /dev/mapper/sda2_crypt
Монтируем:
mount /dev/mapper/sda2_crypt /mnt/data
Раздел можно вручную отключить о системы
cryptsetup luksClose sda2_crypt

Подключение при запуске


Для этой цели используется файл crypttab.
Для нашего диска пропишем в него следующую строку:
nano /etc/crypttab

# имя mapper  устройство   ключ    параметры/опции
# При стандартном синтаксисе
sda2_crypt    /dev/sda2    none    aes-cbc-plain:sha256
# иили под стандарту LUKS
sda2_crypt    /dev/sda2    none    luks
По умолчанию используется шифрование по паролю введенному пользователем. Таким образом каждый раз когда Вы загружаете Ваш компьютер система будет спрашивать каждый раз у Вас пароль для подключения каждого зашифрованного раздела. Даже если в fstab эти разделы не прописаны.
Если хотим монтировать вручную, то добавляем опцию noauto в поле «параметры/опции».
Подключение шифрованного раздела вручную по данным из /etc/crypttab
cryptdisks_start msda2_crypt
И отключение с заранее отмонтированной фс.
cryptdisks_stop sda2_crypt
Для автоматического монтирования фс на подключённом зашифрованном разделе добавляем строку в /etc/fstab
/dev/mapper/sda2_crypt /mnt/data ext4 defaults 0 0

Работа с ключами в LUKS


Раздел LUKS поддерживает 8 различных ключей, каждый из которых помещается в свой слот.
Cмотрим список используемых ключей
cryptsetup luksDump /dev/sda2
В LUKS могут использоваться 2 вида ключей – ключевые фразы и файлы.
Можно добавить ключевую фразу
cryptsetup luksAddKey /dev/sda2
Можно добавить ключевой файл (2048 bit) и выставить права доступа к нему.
dd if=/dev/urandom of=/root/ext2.key bs=512 count=4
cryptsetup luksAddKey /dev/sda2 /root/ext2.key
chmod 400 /root/sda2.key
Далее следует подключить раздел в систему по ключу:
cryptsetup -d /root/sda2.key luksOpen /dev/sda2 sda2_crypt
Для подключения при запуске по ключу правим /etc/crypttab
nano /etc/crypttab

sda2_crypt    /dev/sda2    /root/sda2.key    luks
Можно удалить ключевую фразу или ключ из раздела
cryptsetup luksKillSlot /dev/sda2 1

Аварийное монтирование в «чужом» дистрибутиве


От про