Создание шифрованных дисков в Linux. Шифрование жесткого диска в Linux Сеть и экран приветствия Unity Greeter

Настройка 

Как установить Linux из дистрибутива Ubuntu Edgy Eft на полностью шифрованные разделы жёсткого диска с целью защиты от кражи конфиденциальных данных.

В наши дни шифрование всех данных на компьютере уже не является проявлением паранойи, а в некоторых случаях становится и вовсе необходимостью. Например, это очень актуально в случае использования ноутбуков. Едва ли не ежемесячно проскакивают новости о похищениях ноутбуков с конфиденциальной информацией. Если бы данные на таких ноутбуках хранились в зашифрованном виде, утрата компьютеров не имела бы столь широкого резонанса.

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

Однажды мне вернули ноутбук с обнулёнными паролями всех учетных записей, в том числе и учетной записи администратора. Зачем это понадобилось сервис-инженерам, остается только догадываться. С тех пор я стараюсь всю важную информацию держать в зашифрованном виде. Просто на случай утери ноутбука или его ремонта.

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

В данной статье я расскажу, как установить Linux из дистрибутива Ubuntu Edgy Eft (6.10) на полностью шифрованные разделы жёсткого диска. Данная технология подходит для любого дистрибутива, различия будут состоять только в том, как установить необходимый для работы софт и как сформировать образ RAM-диска initrd. В Ubuntu это делается просто установкой соответствующих пакетов и исполнением готовых скриптов. В других дистрибутивах возможны какие-то трудности, но они, я думаю, легко преодолимы.

Идея состоит в установке системы на один шифрованный раздел жёсткого диска, внутри которого с помощью технологии LVM (Linux Volume Management) "нарезаны" разделы для корневой файловой системы (/), домашних каталогов (/home), раздела подкачки (swap) и др. по желанию. При этом загрузочный раздел /boot с файлами ядер остается незашифрованным - специфика, никуда не денешься.

Операция состоит из следующих этапов:

  1. установка минимальной системы на первый нешифрованный раздел
  2. обновление системы, установка необходимого софта (внимание: на этом этапе необходим доступ в интернет, который вам придется настраивать самостоятельно)
  3. создание шифрованных разделов
  4. создание загрузочных скриптов, для монтирования шифрованного раздела на этапе загрузки системы
  5. перенос системы с первого раздела на шифрованные области диска
  6. оформление первого раздела как загрузочного во вновь получившейся системе (/boot)
  7. подготовка менеджера загрузки Grub к загрузке новой системы с шифрованными разделами

Скрипты загрузки были взяты с сайта Ubuntu Wiki . Отличия от данного пошагового руководства заключаются лишь в методе разбивки диска и указании некоторых особенностей, связанных с другим методом разбивки диска.

Первоначальная установка

Для того чтобы сэкономить место на первом разделе, который так и останется нешифрованным, лучше всего взять установочный диск типа "Сервер". Для его установки достаточно всего 600 Мб дискового пространства. Если вы решили устанавливать версию "Десктоп", то для первого раздела потребуется порядка трех гигабайтов. Скачать образ диска "Сервер" (файл ubuntu-6.10-server-i386.iso) можно с FTP-сервера ftp.chg.ru/pub/Linux/ubuntu/releases/edgy.

Итак, во время установки создаём новые Primary-разделы:

/dev/sda1 - 600 Мб (файловая система Ext3, точка монтирования "/")
/dev/sda2 - Вся остальная область диска (файловая система на выбор, точки монтирования нет)

Устанавливаем систему на первый раздел. Второй раздел целиком будет тем шифрованным пространством, внутри которого и будут размещены все остальные разделы будущей системы. Вся процедура займёт менее десяти минут, и после перезагрузки мы получим наш сервер на разделе /dev/sda1.

Установка необходимого софта

Загружаем нашу новую систему и настраиваем сеть и выход в интернет. Этот шаг, к сожалению, необходим, и выполнить его вы должны самостоятельно.

После того как соединение с интернетом установлено, необходимо обновить систему до актуального состояния.

В Ubuntu активно используется sudo, а так как все дальнейшие действия должны выполняться от имени пользователя root, чтобы не мучиться, можно просто на время "стать рутом" или, иначе говоря, администратором системы:

# nano /etc/apt/sources.list

С его помощью нужно раскомментировать строки, указывающие на источники пакетов universe и multiverse:

Deb http://archive.ubuntu.com/ubuntu/ edgy universe
deb http://us.archive.ubuntu.com/ubuntu/ edgy-backports main restricted universe multiverse

Если сомневаетесь - раскомментируйте все предложенные источники. Не забудьте закомментировать источник CD-ROM, с которого вы ставили систему, он будет первым:

#deb cdrom:/ edgy main restricted

# apt-get update
# apt-get dist-upgrade

Тут же можно сменить и ядро:

# apt-get install linux-386

Устанавливаем необходимые для дальнейшей работы пакеты (здесь я еще поставил пакет mc ради редактора mcedit - у каждого свои вкусы):

# apt-get install cryptsetup hashalot initramfs-tools

Система готова к следующему этапу.

Создание шифрованных разделов

Создание шифрованных разделов делится на следующие шаги:

  1. создание нового раздела на жестком диске
  2. создание на его основе шифрованного раздела
  3. инициализация LVM и "нарезка" необходимых разделов в шифрованном пространстве

Для начала загрузим в ядро необходимые для работы модули:

# modprobe dm_crypt
# modprobe aes_i586
# modprobe sha256

Проверим раздел, предназначенный для шифрованного пространства, на наличие поврежденных блоков и попутно заполним его псевдослучайными данными:

# /sbin/badblocks -c 10240 -s -w -t random -v /dev/sda2

Для особо секретных дисков можно заполнить пространство случайным "мусором":

# dd if=/dev/urandom of=/dev/sda2

Но для бытового применения всего этого, как правило, можно не делать, к тому же выполнение операции для больших дисков длится слишком долго.

Теперь создадим шифрованный раздел на основе /dev/sda2:

# cryptsetup -verify-passphrase -verbose -hash=sha256 -cipher=aes-cbc-essiv:sha256 -key-size=256 luksFormat /dev/sda2
# cryptsetup luksOpen /dev/sda2 pvcrypt

Следуйте указаниям на экране. Первая команда попросит вас два раза ввести пароль для шифрованного раздела (внимание: пароль должен вводиться в английской раскладке клавиатуры!). Вторая команда "отображает" содержимое шифрованного раздела в устройство /dev/mapper/pvcrypt. Нешифрованные данные (cleartext) будут отображены как раздел виртуального диска /dev/mapper/pvcrypt, в то время как физически они будут лежать в зашифрованном виде на /dev/sda2. Шифрование/дешифрование будет производиться ядром "на лету" с помощью драйвера device mapper (модуль ядра dm_crypt) и алгоритма AES (модуль ядра aes_i586).

Как показывает практика, такое прозрачное шифрование практически не сказывается на скорости работы с диском. Файлы копируются со скоростью до 30 Мб/с, как и в случае отсутствия шифрования.

# pvcreate /dev/mapper/pvcrypt
Physical volume "/dev/mapper/pvcrypt" successfully created
# vgcreate vgcrypt /dev/mapper/pvcrypt
Volume group "vgcrypt" successfully created
# lvcreate -n lvroot -L 10G vgcrypt
Logical volume "lvroot" created
# lvcreate -n lvswap -L 1G vgcrypt |
Logical volume "lvswap" created
# lvcreate -n lvhome -l 95G vgcrypt
Logical volume "lvhome" created

Таким образом мы создали для будущей системы три раздела:

/dev/mapper/vgcrypt-lvroot 10Gb /
/dev/mapper/vgcrypt-lvswap 1Gb swap
/dev/mapper/vgcrypt-lvhome 95Gb /home

# mkfs.reiserfs /dev/mapper/vgcrypt-lvroot
# mkfs.reiserfs /dev/mapper/vgcrypt-lvhome
# mkswap /dev/mapper/vgcrypt-lvswap

Разделы для будущей системы готовы.

Создание образа initrd

Для тех, кто не знаком с процедурой загрузки ядра Linux, я немного поясню, в чём суть. Первоначально ядро в качестве файловой системы загружает образ виртуального диска (RAM-диск) в котором содержатся необходимые драйверы и скрипты для загрузки основной файловой системы.

Этот образ /boot/initrd.img-2.6.17-10-server уже создан для ядра установленной системы. Нам необходимо его чуть-чуть переделать.

Добавляем в файл /etc/kernel-img.conf строчку

Dm_mod
dm_crypt
sha256
aes_i586

Создаем файл /etc/initramfs-tools/hooks/pvcrypt следующего содержания (этот скрипт будет исполнен во время создания образа initrd):

#!/bin/sh
PREREQ=""
prereqs() { echo "$PREREQ" }
case $1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /sbin/cryptsetup ]; then exit 0 fi
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin

Создаём файл /etc/initramfs-tools/scripts/local-top/pvcrypt следующего содержания (этот скрипт тоже будет исполняться во время загрузки системы):

#!/bin/sh
PREREQ="udev"
prereqs() { echo "$PREREQ" }
case $1 in
prereqs)
prereqs
exit 0
;;
esac
modprobe -Qb dm_crypt
modprobe -Qb aes_i586
modprobe -Qb sha256
then
/bin/chvt 1
fi
echo "Cryptsetup operation."
/sbin/cryptsetup luksOpen /dev/sda2 pvcrypt
if grep -q splash /proc/cmdline;
then
/sbin/usplash -c & sleep 1
fi

/dev/sda2 при запуске команды /sbin/cryptsetup указывает на шифрованный раздел, который мы создали ранее (он может назваться и по другому, всё зависит от особенностей вашей системы), а pvcrypt на имя виртуального устройства в каталоге /dev/mapper/, на которое будет отображено расшифрованное (cleartext) содержимое шифрованного раздела.

Сделаем созданные нами скрипты исполняемыми:

#chmod +x /etc/initramfs-tools/hooks/pvcrypt
#chmod +x /etc/initramfs-tools/scripts/local-top/pvcrypt

И обновим образ RAM-диска initrd командой:

# update-initramfs -u ALL

Теперь настало время следующего этапа - тестирование.

Пробная перезагрузка

Перезагрузите систему, чтобы убедиться, что образ initrd (который был только что создан) сделан правильно и скрипты исполняются.

На этапе загрузки, в самом начале, система запросит у вас пароль к шифрованному разделу. После того как пароль будет введен, и система загрузится, проверьте, доступны ли разделы LVM:

# ls -al /dev/mapper/
total 0
drwxr-xr-x 2 root root 180 2007-02-06 13:10 .
drwxr-xr-x 16 root root 13240 2007-02-06 13:10 ..
crw-rw-- 1 root root 10, 63 2007-02-06 13:09 control
brw-rw-- 1 root disk 254, 0 2007-02-06 13:09 pvcrypt
brw-rw-- 1 root disk 254, 4 2007-02-06 13:10 sda1
brw-rw-- 1 root disk 254, 5 2007-02-06 13:10 sda2
brw-rw-- 1 root disk 254, 3 2007-02-06 13:09 vgcrypt-lvhome
brw-rw-- 1 root disk 254, 1 2007-02-06 13:09 vgcrypt-lvroot
brw-rw-- 1 root disk 254, 2 2007-02-06 13:09 vgcrypt-lvswap

Перенос системы на шифрованные разделы

Теперь нам надо перенести систему с первого раздела на шифрованные области.

Для этого созданные шифрованные разделы (LVM) надо смонтировать и скопировать на них файлы с первого раздела.

# mkdir /mnt/root
# mount /dev/mapper/vgcrypt-lvroot /mnt/root
# mkdir /mnt/root/home
# mount /dev/mapper/vgcrypt-lvhome /mnt/root/home
# cp -ax / /mnt/root
# cp -rp /dev/* /mnt/root/dev/
# rm -rf /mnt/root/boot/*
# mount /dev/sda1 /mnt/root/boot/

Фактически в каталоге /mnt/root/ у нас теперь смонтированы все разделы новой, будущей системы. Все дальнейшие работы мы будем проводить именно в нём.

Подготовка к рестарту системы

После того как система перенесена на шифрованные разделы, первый раздел /dev/sda1 для новой системы будет загрузочным каталогом /boot.

Сперва нам необходимо отредактировать файл /mnt/root/etc/fstab (не забываем, что мы уже перенесли систему на новые разделы и нам уже необходимо редактировать файлы будущей системы). В нашем случае он может выглядеть следующим образом:

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
usbfs /proc/bus/usb usbfs devmode=0666 0 0
/dev/sda1 /boot ext3 defaults 0 0
/dev/mapper/vgcrypt-lvroot / reiserfs defaults 0 0
/dev/mapper/vgcrypt-lvhome /home reiserfs defaults 0 0
/dev/mapper/vgcrypt-lvswap none swap sw 0 0

Так как раздел /dev/sda1 становится каталогом /boot новой системы, но в данный момент времени он является корневым /, то необходимо скопировать все файлы из /boot в корневой каталог:

# cp -r /boot/* /

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

Теперь подготовим менеджер загрузки Grub.

Отредактируем файл /mnt/boot/grub/menu.lst так, чтобы в списке вариантов загрузки, первыми строчками были:

Title Ubuntu, kernel 2.6.17-10-server Default
root (hd0,0)
kernel /vmlinuz-2.6.17-10-server
root=/dev/mapper/vgcrypt-lvroot ro quiet splash
initrd /initrd.img-2.6.17-10-server
quiet
savedefault
boot

Здесь ключевой строчкой является параметр root=/dev/mapper/vgcrypt-lvroot, указывающий ядру, что корневым каталогом (root) в системе будет раздел /dev/mapper/vgcrypt-lvroot.

Не забывайте, что vmlinuz-2.6.17-10-server - файл ядра, которое будет загружаться.

Посмотреть версию текущего загруженного ядра можно командой:

# uname -r
2.6.17-10-server

По аналогии можно (и нужно) добавить другие варианты загрузки, в том числе, как вариант, загрузку с первого раздела, на котором еще осталась копия первоначально установленной системы. Эту операцию читателям предлагаем выполнить самостоятельно.

В том же файле menu.lst еще необходимо найти строчку:

# kopt=root=/dev/sda1 ro

и поменять ее на:

# kopt=root=/dev/mapper/vgcrypt-lvroot ro

Внимание: эта строка должна остаться закомментированной!

Теперь при установке в систему новых ядер автоматически исполняемая команда update-grub будет назначать правильный параметр root= ядра.

Выполним команду:

# grub-install -root-directory=/mnt/root/ /dev/sda

Система готова к перезагрузке, после которой она будет полностью размещена на шифрованных разделах.

Послесловие

Как вы могли заметить, каталог /boot так и остался незашифрованным. Это значит, что ваш компьютер все еще доступен для атаки. Злоумышленник может подменить загрузочные скрипты таким образом, что ваш пароль после ввода будет сохранен в отдельном файле.

Тут я могу дать только один совет: пользуйтесь tripwire или подобными программами. И не забывайте проверять целостность загрузочного раздела. Не мешает также позаботиться о сохранении данных разбивки LVM-разделов, чтобы в случае сбоя можно было попытаться восстановить данные.

Если боитесь забыть пароль, стоит создать специальный дополнительный ключ для расшифровки раздела.

Делается это так:

$ sudo dd if=/dev/random of=/path-to/keyfile bs=1 count=256
$ sudo cryptsetup luksAddKey /dev/sda2 /path-to/keyfile

Теперь можно сохранить keyfile, например, на USB-драйве, и даже если вы забудете пароль, информацию можно будет расшифровать с помощью этого ключевого файла. Однако наличие такого дополнительного ключа повышает риск того, что он однажды достанется злоумышленнику. Выбирать вам.

Шифрование в Windows

В Windows полное шифрование дисков возможно выполнить только с помощью стороннего софта. Примером такого софта является SafeGuard Easy .

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


Я Canonical не понимаю. Вроде, 23 августа мы прошли заморозку новых возможностей FeatureFreeze, а 30 августа пройдена заморозка внешнего вида UserInterfaceFreeze. А что мы видим на деле? В установщике Ubiquity появляется возможность шифровать всю систему и в Unity Greeter добавляется индикатор сети и возможность сетевого входа .

Шифрование всей Ubuntu на этапе установки.

Как вы видите, Canonical реализовала шифрование диска в графическом установщике Ubiquity для укрепления безопасности Ubuntu 12.10 Quantal Quetzal. Подобный функционал ранее был только в Alternate CD, но как вы знаете, Canonical планирует отказаться от альтернативных дисков .

Если вы выберите пункт "Шифровать новую установку Ubuntu для безопасности" ("Encrypt the new Ubuntu installation for security"), то на следующем шаге вам придётся ввести ключи шифрования.

Кроме того, для дополнительной безопасности есть вариант перезаписывать пустое дисковое пространство, но это сделает процесс установки чуть дольше.

Помните, что любые файлы вне установки Ubuntu не шифруются! В дальнейшем, новые диски и новые разделы не будут по умолчанию зашифрованы и это вы должны помнить.

И не путайте шифрование всех разделов Убунту с шифрованием Домашней папки!

Сеть и экран приветствия Unity Greeter.

С Unity Greeter произошли маленькие косметические изменения. Окно приветствия стало шире и ближе к центру. Скругленные углы сделали общий вид визуально мягче. Шрифт, отображающий имя пользователя, чуть уменьшили. Сохраняя общий стиль, поле ввода пароля подсветили тонким оранжевым цветом. Список доступных вам сессий изменился, вместо "простой список" теперь "кнопки".

Наряду с вышеперечисленными изменениями, разработчики добавили сетевой индикатор.

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

Судя по официальным спискам изменений, готовится в ближайшем будущем внедрение в Unity Greeter возможности сетевого входа в систему.

Магическая лампа теперь включена по умолчанию.

Эффект для восстановления окон, известный как Джин (Genie) или Магическая лампа (Magic Lamp), был доступен в Compiz и ранее, но в версии Ubuntu 12.10 он будет включён по умолчанию.

TrueCrypt больше не поддерживается, но dm-crypt и LUKS - отличный вариант с открытым исходным кодом, позволяющий шифровать и использовать шифрованные данные.

Безопасность данных стала одной из самых больших проблем среди интернет-пользователей. Новости о краже данных с веб-сайтов стали очень распространенными, но защита ваших данных - это не только обязанность сайтов, есть многое, что мы, как конечные пользователи, можем сделать для нашей собственной безопасности. Например, только некоторые примеры - использовать надежные пароли, шифровать жесткие диски, которые расположены на наших компьютерах, и использовать безопасные соединения. В частности, шифрования жесткого диска является хорошим способом обеспечения безопасности - оно не только защитит вас от любых троянов, пытающихся украсть ваши данные через сеть, но также и от физических атак.

В мае этого года остановилась разработка приложения TrueCrypt, известного инструментального средства с открытым исходным кодом, предназначенного для шифрования дисков. Как многие из вас знают, это был один из весьма надежных инструментов, предназначенных для шифрования дисков. Прискорбно видеть исчезновение инструмента такого калибра, но величие мира с открытым исходным кодом таково, что есть несколько других инструментов с открытым исходным кодом, которые помогут вам достичь безопасности с помощью шифрования дисков, у которых, к тому же, есть много конфигурационных настроек. Мы рассмотрим два из них - dm-crypt и LUKS - в качестве альтернативы TrueCrypt для платформы Linux. Давайте начнем с краткого рассмотрения dm-crypt, а затем - LUKS.

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

Ресурсы

Шаг 01: Рассматриваем Dm-crypt

Название приложения dm-crypt является сокращением от device mapper- crypt (шифрование при отображении устройства). Как следует из названия, оно базируется на отображении устройств - фреймворке ядра Linux, предназначенном для отображения блочных устройств на виртуальные блочные устройства более высокого уровня. При отображении устройств можно пользоваться несколькими функциями ядра, такими как dm-cache (создает гибридные тома), dm-verity (предназначена для проверки целостности блоков, является частью Chrome OS) и также очень популярным Docker. Для криптографических целей в dm-crypt применяется фреймворк ядра Linux Crypto API.

Итак, если подвести итог, то приложение dm-crypt является подсистемой шифрования на уровне ядра, предлагающее прозрачное шифрование диска: это означает, что файлы доступными сразу после монтирования диска - для конечного пользователя нет видимой задержки. Чтобы шифровать с использованием dm-crypt вы можете просто указать один из симметричных шифров, режим шифрования, ключ (любого допустимого размера), режим генерации IV, а затем в /dev создать новое блочное устройство. Теперь при любой записи на это устройство будет происходить шифрование, а при чтении - расшифровка. Вы можете как и обычно смонтировать на этом устройстве файловую систему, либо можете использовать устройство dm-crypt для создания других конструкций, таких как RAID или том LVM. Таблица соответствия для dm-crypt задается следующим образом:

Здесь значение start-sector (начальный сектор), как правило, равно значению 0, значение size (размер) равно размеру устройства, указываемую в секторах, а target name является именем, которое вы хотите присвоить зашифрованному устройству. Таблица целевого отображения target-mapping table состоит из следующих разделов:

[<#opt_params> ]

Шаг 02: Рассматриваем LUKS

Как мы уже видели на предыдущем шаге, приложение dm-crypt может самостоятельно шифровать / расшифровывать данные. Но у него есть несколько недостатков - если приложением dm-crypt пользоваться непосредственно, то оно не будет создавать на диске метаданные, и это может стать серьезной проблемой в случае, если вы хотите обеспечить совместимость между различными дистрибутивами Linux. Кроме того, приложение dm-crypt не поддерживает использование несколько ключей, тогда как в реальных ситуация очень важно пользоваться несколькими ключами.

Именно по этим причинам на свет появилась методика LUKS (Linux Unified Key Setup - Унифицированная настройка ключей в Linux). LUKS является в Linux стандартом шифрования жестких дисков и стандартизация позволяет обеспечить совместимость различных дистрибутивов. Также поддерживается использование нескольких ключей и парольных фраз. В рамках такой стандартизации к зашифрованным данным добавляется заголовок LUKS и в этом заголовке присутствует вся информация, необходимая для настройки. Когда есть такой заголовок с данными, то пользователи могут легко перейти на любой другой дистрибутив. Сейчас в проекте dm-crypt рекомендуется использовать LUKS в качестве предпочтительного способа настройки шифрования диска. Давайте рассмотрим, как установить утилиту cryptsetup и как ее использовать для создания томов на основе LUKS.

Шаг 03: Установка

Функциональные возможности уровня ядра, которые применяются в dm-crypt, уже есть во всех дистрибутивах Linux; нам нужно к ним только интерфейс. Мы будем пользоваться утилитой cryptsetup, с помощью которой можно создавать тома с использованием dm-crypt, стандарта LUKS, а также старого и доброго приложения TrueCrypt. Для того, чтобы установить cryptsetup на дистрибутивах Debian / Ubuntu, вы можете воспользоваться следующими командами:

$ sudo apt-get update $ sudo apt-get install cryptsetup

Первая команда синхронизирует индексные файлы ракета с содержимым их репозиториев: она получает информацию о последних версиях всех доступных пакетов. Вторая команда загрузит и установит на ваш компьютер пакет cryptsetup. Если вы используете дистрибутив RHEL/Fedora/CentOS, то для установки утилиты cryptsetup вы можете воспользоваться командой yum.

$ yum install cryptsetup-luks

Шаг 04: Создание целевого файла

Теперь, когда утилита cryptsetup успешно установлена, мы должны создать целевой файл, в котором будет храниться контейнер LUKS. Хотя есть много способов создания такого файла, при его создании необходимо выполнить ряд условий:

  • Файл не должен состоять из нескольких частей, расположенных в различных местах диска, т. е. для него при создании следует сразу выделить достаточное количество памяти.
  • Весь файл нужно заполнить случайными данными с тем, чтобы никто не мог сказать, где будут расположены данные, применяемые при шифровании.

В создании файла, который будет удовлетворять вышеуказанным условиям, нам может помочь команда dd, хотя она и будет работать сравнительно медленно. Просто используйте ее вместе с файлом специального устройства /dev/random, указанным в качестве входных данных, и целевого файла, который должен быть указан в качестве выходных данных. Пример команды выглядит следующим образом:

$ dd if=/dev/random of=/home/nitish/basefile bs=1M count=128

В результате в каталоге /home/nitish будет создан файл с именем basefile, имеющий размер в 128 МБ. Однако, учтите, что на выполнение этой команды может потребоваться достаточно большое время; в системе, которой пользовался наш эксперт, на это потребовался час времени.

Шаг 05: Создаем dm-crypt LUKS

После того, как вы создали целевой файл, в этом файле необходимо создать раздел LUKS. Этот раздел служит в качестве основного слоя, на базе которого строится все шифрование данных. Кроме этого, в заголовке этого раздела (LUKS header) содержится вся информация, требуемая для совместимости с другими устройствами. Чтобы создать раздел LUKS применяется команда cryptsetup:

$ cryptsetup -y luksFormat /home/nitish/basefile

После того, как вы согласитесь с тем, что данные, находящиеся внутри файла basefile, будут безвозвратно удалены, введете парольную фразу, а затем - ее подтверждение, будет создан раздел LUKS. Вы можете проверить это с помощью следующей команды file:

$ file basefile

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

Шаг 06: Создаем и монтируем файловую систему

Контейнер LUKS, который мы создали на предыдущем шаге, теперь доступен в виде файла. В нашем примере, это /home/nitish/basefile. Утилита cryptsetup позволяет открывать контейнер LUKS как независимое устройство. Чтобы сделать это, сначала отобразите файл контейнера на имя устройства, а затем смонтируйте устройство. Команда, осуществляющая отображение, выглядит следующим образом:

После того как вы успешно введете парольную фразы, созданную на предыдущем шаге, контейнер LUKS будет отображен на имя volume1. Фактически происходит открытие файла как локального устройства типа loopback, так что остальная часть системы теперь может обрабатывать файл, как если бы это было реальное устройство.

Шаг 07: Файловая система - продолжение

Файл контейнера LUKS теперь доступен в системе в виде обычного устройства. Прежде, чем мы сможем использовать его для обычных операций, мы должны его отформатировать и создать на нем файловую систему. Вы можете пользоваться любой файловой системой, которая поддерживается в вашей системе. В моем примере, мы использовали ext4, поскольку это самая новая файловая система для систем Linux.

$ mkfs.ext4 -j /dev/mapper/volume1

После того, как устройство будет успешно отформатировано, следующим шагом будет его монтирование. Сначала вы должны создать точку монтирования, предпочтительно в /mnt (исходя из здравого смысла).

$ mkdir /mnt/files

Теперь выполняем монтирование:

Для перекрестной проверки воспользуйтесь командой df –h - вы в конце списка смонтированные устройств увидите устройство "/dev/mapper/volume1". Видно, что заголовок LUKS уже занимает в устройстве уже некоторое место.

Благодаря этому шагу, вы теперь можете использовать устройство LUKS с файловой системой ext4. Просто используйте это устройство для хранения файлов - все, что вы будет записывать на это устройство, будет шифроваться, а все, что вы будете читать с него, будет расшифровано и показано вам.

Шаг 08: Использование шифруемого диска

Мы выполнили несколько шагов для того, чтобы достичь этого результата, и если вам не очень понятно, как все это работает, вы, скорее всего, запутаетесь в том, что нужно сделать только один раз (требуется для установки), и в том, что нужно делать регулярно при использовании шифрования. Давайте рассмотрим следующий сценарий: вы успешно выполнили все описанные выше шаги, а затем выключили компьютер. На следующий день, когда вы запускаете ваш компьютер, вы не в состоянии найти смонтированное устройство - куда оно делось? Чтобы со всем этим разобраться, нужно иметь в виду, что после запуска системы нужно смонтировать контейнер LUKS, а перед остановкой компьютера - размонтировать.

Для того, чтобы получить доступ к файлу LUKS, каждый раз, когда вы включаете компьютер, выполняйте следующие действия, а затем прежде, чем выключить компьютер, безопасно закрывайте файл:

Откройте файл LUKS (т.е. /home/nitish/basefile) и введите пароль. Команда выглядит следующим образом:

$ cryptsetup luksOpen /home/nitish/basefile volume1

После того, как файл будет открыт, смонтируйте его (если он не монтируется автоматически):

$ mount /dev/mapper/volume1 /mnt/files

Теперь вы можете использовать смонтированное устройство как обычный диск и читать с него или записывать на него данные.

После того, как все сделаете, размонтируйте устройство следующим образом:

$ umount /mnt/files

После успешного размонтирования, закройте файл LUKS:

$ cryptsetup luksClose volume1

Шаг 09: Резервное копирование

Большинство потерь данных, хранящихся в контейнере LUKS, связаны с повреждением заголовка LUKS или слотов с ключами. Кроме того, что даже из-за случайной перезаписи в память заголовка могут быть повреждены заголовки LUKS, в реальных условиях также возможен полный выход жесткого диска из строя. Лучший способ защититься от таких проблем - это резервное копирование. Давайте посмотрим, какие доступны варианты резервного копирования.

Чтобы создать резервную копию файла заголовка LUKS, укажите в команде параметр luksHeaderBackup:

$ sudo cryptsetup luksHeaderBackup /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Или, если вы хотите восстановить файл из резервной копии, то укажите в команде параметр luksHeaderRestore:

$ sudo cryptsetup luksHeaderRestore /home/ nitish/basefile --header-backup-file /home/nitish/backupfile

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

$ sudo cryptsetup -v isLuks /home/nitish/basefile

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

$ cat /home/nitish/basefile > basefile.img

Шаг 10: Различные настройки

Есть несколько других настроек, которые при использовании шифрования dm-crypt LUKS могут оказаться полезными. Давайте их рассмотрим.

Чтобы сделать дамп заголовка LUKS, в команде cryptsetup есть параметр luksDump. Он позволит вам сделать снимок файла заголовка LUKS того устройства, которое вы используете. Пример команды выглядит следующим образом:

$ cryptsetup luksDump /home/nitish/basefile

В начале данной статьи мы упоминали о том, что LUKS поддерживает работу с несколькими ключами. Давайте сейчас это увидим в действии, добавив новый слот ключа (прим.пер.: слот ключа - место под ключ ):

$ cryptsetup luksAddKey --Key-slot 1 /home/nitish/basefile

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

Вы можете удалить слоты с ключами следующим образом:

$ cryptsetup luksRemoveKey /home/nitish/basefile

В результате будет удален слот с ключом с самым большим номером слота. Будьте аккуратны и не удаляйте все слоты, иначе ваши данные будут навсегда потеряны.

Семененко В.

Когда вы устанавливаете операционную систему Ubuntu, возможно вы не задумываетесь о настройке шифрования данных в ней. Или же может быть такая ситуация, когда вы добавляете пользователя в систему, без шифрования его домашней директории. Но теперь вы передумали и решили настроить защиту данного каталога. Другими словами, вы (или другой пользователь на компьютере) желаете иметь такую возможность, которой на данный момент нет...

Создание шифрованного раздела в Ubuntu

Каким же образом можно добавить возможность шифрования в уже установленной системе Ubuntu Linux?

К счастью, реализовать ее достаточно легко. Для этого достаточно выполнить три основных шага:

  • создать шифрованную копию вашей домашней директории;
  • удалить оригинальную незашифрованную домашнюю директорию;
  • зашифровать раздел подкачки swap (выполняется только один раз, при установке системы Ubuntu или же при пошаговом выполнении данного руководства).

Описанные в этой статье действия производились на полностью обновленной системе Ubuntu Precise 12.04.

Подготовка

Из-за существующей на данный момент ошибки в Ubuntu Linux вы не можете войти в систему, если графическое оформление окна входа находится в зашифрованной домашней папке пользователя. Если пользователь изменил стандартное оформление, убедитесь в том, что оно также не располагается в домашней папке этого пользователя.

Создание шифрованной копии домашней директории пользователя является безопасной процедурой. Однако, стоит обратить внимание, что для ее выполнения необходим определенный объем на жестком диске. Если окажется, что места слишком мало, нужно создать резервную копию данных, затем удалить из нее все большие по объему файлы (например, фильмы) и восстановить их из этой копии после того, как будет выполнено шифрование. Обычно я рекомендую создавать резервную копию всех данных, чтобы предотвратить возможные проблемы.

Используя привычный вам менеджер пакетов, установите программу encrypt-utils .

Шифрование

В данном руководстве я буду использовать логин paddy в качестве имени пользователя, с данными которого будут производиться действия. Вам необходимо заменить его на имя того пользователя, домашняя директория которого будет шифроваться.

Перезагружаем Ubuntu Linux и заходим в "Режим восстановления" (Recovery Mode). Небольшой совет - во время старта загрузки системы нажмите и удерживайте клавишу Shift, чтобы открылось меню Grub. Обычно строка "Режим восстановления" (Recovery Mode) располагается второй сверху в списке этого загрузчика.

В меню режима восстановления, выберите "Drop" для того, чтобы появилась подсказка командной строки для учетной записи root.

Для исправления программной ошибки, о которой говорилось в начале данной статьи, введите две следующие команды:

mount --options remount,rw /
mount --all

Теперь можно создать шифрованную копию домашней директории пользователя paddy . Для этого введем команду, указанную ниже. При этом потрудитесь вспомнить ваш собственный пароль, так как данная утилита потребует его для выполнения операции:

Когда процесс шифрования будет завершен, вы увидите несколько предупреждений. Можете проигнорировать их . Но вам необходимо будет запомнить путь к временной папке, созданной данной командой. Ее вид будет примерно следующим: /home/paddy.ChPzzxqD

При этом восемь последних символов (после точки) являются случайным набором. Эта директория вам потребуется в последующих шагах "Завершение" или "Возвращение к исходному состоянию", о которых будет рассказано дальше.

Перезагрузите систему Ubuntu Linux. Для этого введите команду: reboot now

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

Завершение

Зайдите в систему Ubuntu обычным способом, как вы делали каждый раз. Проверьте, что все работает, как прежде.

Если что-то не так, можете сразу переходить к пункту "Возвращение к исходному состоянию".

Если все в системе работает нормально, выполнил завершающие шаги.

Открываем терминал и вводим команду удаления временной директории. Для этого вам потребуется вспомнить путь к временной папке, которая была создана при шифровании домашней директории.

sudo rm -R /home/paddy.ChPzzxqD

Восстановите данные, которые были вами удалены (если были) в шаге "Подготовка".

Снова откройте терминал и введите команду для шифрования раздела подкачки swap . Если у вас до этого уже имелся пользователь с настроенным шифрованием домашней директории, можете спокойно пропустить данный шаг: sudo ecryptfs-setup-swap

Снова перезагрузитесь.

Возвращение к исходному состоянию

Если процесс шифрования выполнился с ошибками, вам потребуется повторить заново предыдущие шаги.

Запустите команды:

mount --options remount,rw /
mount --all
ecryptfs-migrate-home --user paddy

Затем введите команду для просмотра содержимого временной папки, созданной в процессе шифрования. Для этого вам опять же потребуется вспомнить путь к ней. При этом не должно появиться никаких ошибок. Если же они появились, вам потребуется помощь.

ls -l /home/paddy.ChPzzxqD

Теперь выполните процесс возвращения к исходному состоянию, выполнив три команды:

cd /home
rm -R paddy .ecryptfs/paddy
mv paddy.ChPzzxqD

Снова перезагрузитесь.

Надеюсь, вышеназванные шаги помогли вам. Если у вас возникли неразрешимые проблемы, вы можете оставить запрос на моей ветке форума Ubuntu.

Спящий режим при шифровании

Большинство пользователей часто задаются вопросом, почему в операционной системе Ubuntu нет спящего режима (hibernate) после выполнения предыдущих операций (описанных ранее в этой статье) и как можно восстановить такую возможность. Причина заключается в настроенном шифровании. Если у вас настроено шифрование домашней директории, раздел подкачки при этом также шифруется, но с помощью случайного ключа. Когда вы переводите систему в режим hibernate , данные оперативной памяти сохраняются в разделе подкачки, при этом они шифруются случайным ключом. При восстановлении системы из спящего режима тот ключ, которым производилось шифрование раздела swap , уже потерян безвозвратно и система не может прочитать данный раздел. Соответственно, данные не могут быть извлечены и возвращение к предыдущему состоянию невозможно.

Если в вашей системе не настроено шифрование разделов, то восстановить возможность спящего режима в Ubuntu просто. Для этого достаточно выполнить команды: ls -l /home/paddy.ChPzzxqD
rm -R paddy .ecryptfs/paddy

Но если в системе домашний раздел пользователя и раздел подкачки шифруются, необходимо заменить шифрование раздела swap не случайным ключом, а заранее выбранной ключевой фразой.

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

Мною был опробован данный способ в обоих случаях - как на обычной системе Ubuntu 12.04, так и на системе Ubuntu, установленной на виртуальной машине VirtualBox. В последнем случае были проблемы с отображением экрана при восстановлении из спящего режима. Но на обычной системе все работало прекрасно.

Подготовка

Введите в терминале следующую команду: sudo cryptsetup status cryptswap 1

В результате вы увидите строку, в которой будет обозначено устройство, выглядящее примерно так: /dev/sda1

или /dev/sdb5

Это устройство является разделом подкачки swap в вашей системе. Запомните его, так как оно потребуется вам в дальнейшем.

При каких-либо изменениях в системе я всегда рекомендую выполнять полное резервное копирование данных. В нашем случае оно также будет полезным.

Настройка спящего режима

Введите следующие команды. Удостоверьтесь, что вы заменили устройство /dev/sdXN вашим разделом подкачки swap , созданным в параграфе "Подготовка". При вводе команд вам следует строго придерживаться указанной последовательности:

sudo swapoff /dev/mapper/cryptswap1
sudo cryptsetup luksClose /dev/mapper/cryptswap1
sudo cryptsetup luksFormat cipher aes cbc essiv:sha256 verify passphrase key size 256 /dev/sdXN

WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
sudo cryptsetup luksOpen /dev/sdXN cryptswap1

Введите ключевую фразу для устройства /dev/sda1 (и повторите ее во избежание опечатки):

sudo mkswap /dev/mapper/cryptswap 1
sudo swapon ­­all
swapon ­s

Последняя команда отобразит файловое имя устройства /dev/crypt swap 1 .

Откройте в предпочитаемом редакторе файл настроек /etc/crypttab . Замените в нем строку crypt swap 1 следующей (не забудьте при этом заменить устройство /dev/sdXN на ваше устройство подкачки): cryptswap1 /dev/sdXN none luks

Теперь отредактируйте файл /usr/share/initramfstools/scripts/local-top/cryptroot . В нем найдите строку (обычно она имеет номер 288, но он может измениться): message "cryptsetup: unknown error setting up device mapping"

Перейдите к следующей пустой строке (перед FSTYPE=") и вставьте новую строку (при этом не забыв заменить устройство /dev/sdXN): /sbin/cryptsetup luksOpen /dev/sdXN cryptswap 1

Отредактируйте файл /etc/acpi/hibetnate.sh . В первой пустой строке вставьте значение: DEVICE="/dev/mapper/cryptswap 1"

Отредактируйте файл /etc/initramfstools/conf.d/resume . Замените в нем существующую строку следующей: RESUME=/dev/mapper/cryptswap 1

Затем отредактируйте файл /etc/polkit1/localauthoriyt/50-local.d/com.ubuntu.enable-hibernate.pkla . Файл изначально не существует, поэтому потребуется сначала его создать. Затем добавьте в него строки:
Identity=unixuser:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Наконец, откройте терминал и введите в нем команду: sudo update initramfs u k all

Перезагрузитесь.

Использование спящего режима

При последующем запуске Ubuntu Linux спросит вас о новой ключевой фразе для раздела подкачки. Введите ее и процесс дальнейшего нормального входа в систему продолжится.

: - Русский

Активная разработка страницы завершена

Если есть что добавить, то дополняйте разделы новой информацией. Наши опечатки и ошибки в статье можно править смело, нет необходимости сообщать об этом на почту, просьба соблюдать стилевое оформление этой страницы и использовать разделители разделов (серые линии различной толщины).

Шифрование данных в 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

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

От проблем никто не застрахован и иногда нужно получить доступ к зашифрованному разделу из аварийного LiveCD диска.

Загружаемся, подключаем раздел в систему и монтируем фс:

cryptsetup luksOpen /dev/sda2 sda2_crypt mount -t ext4 /dev/mapper/sda2_crypt /mnt/backup

После работы отмонтируем фс и отключим зашифрованный раздел от системы

umount /mnt/backup cryptsetup luksClose sda2_crypt

Сообщения об ошибках при выключении

Если корневой раздел зашифрован, то при выключении будет выдаваться сообщение

stopping early crypto disks... failed

Это техническая ошибка. При выключении в первую очередь всегда демонтируется файловые системы и лишь потом происходит отключение раздела. В итоге получается что утилита cryptsetup находящаяся на корневом отмонтированном разделе уже недостуна для запуска, о чём нам INIT и сообщает. Без костылей такую проблему не решить, т.к. для этого нужно рассматривать варианты с переносом cryptsetup в RAM диск

Аналогичная ситуация складыватеся и при использовании программного RAID содержащего корневой раздел. 8)

Шифрование при помощи модуля loop-aes

Шифрование раздела винчестера, флешки с помощью пароля

В данном howto описан метод шифрования AES256 , другие методы можно применять аналогично (заменив название метода на соответствующее). Нам понадобятся следующие пакеты:

# apt-get install loop-aes-utils loop-aes-modules-`uname -r`

Примечание : если Вы используете ядро для которого в репозитарии нет нужного loop-aes-modules, Вы можете установить модули следующими командами:

# apt-get install module-assistant loop-aes-source # module-assistant a-i loop-aes

Начальный этап

На начальном этапе мы готовим диск к тому чтобы работать с ним, используя шифрование.

Выберем раздел диска (или флешки) который мы хотим зашифровать, например это будет /dev/sda2 . Введем команду:

# losetup -e AES256 -T /dev/loop0 /dev/sda2

После выполнения данной команды, все обращения к девайсу /dev/loop0 будут шифроваться и в шифрованном виде перенаправляться в девайс /dev/sda2 . Теперь мы имеем одновременно шифрованный и нешифрованный каналы к устройству хранения данных. Шифруются данные при помощи пароля который вы указали при выполнении losetup.

Теперь мы можем например отформатировать девайс:

# mkfs.ext3 /dev/loop0

Можем смонтировать его:

# mount /dev/loop0 /path/to/mount

можем отключить шифрование:

# losetup -d /dev/loop0

и самое главное, можем зашифровать раздел без потери данных :

# dd if=/dev/sda2 of=/dev/loop0

а так же расшифровать, если решаем что шифрование не наш метод:

# dd if=/dev/loop0 of=/dev/sda2

Ну и самое приятное, мы можем делать проверки файловой системы на целостность:

# fsck.ext3 /dev/loop0

Данная возможность доступна далеко не во всех методах шифрования разделов.

Повседневное использование

Если у Вас уже была запись о разделе /dev/sda2 в Вашем /etc/fstab , то Вам нужно просто добавить опции, а если не было то прописать примерно следующее:

/dev/sda2 /path/to/mount ext3 loop,encryption=AES256 0 0

Теперь при загрузке операционной системы у Вас будет запрошен пароль для монтирования.

Если Вы не хотите чтобы процесс загрузки прерывался запросом пароля, то можно добавить опции noauto ,user в запись /etc/fstab :

/dev/sda2 /path/to/mount ext3 loop,encryption=AES256,noauto,user 0 0

Разумеется можно монтировать вручную (или из скрипта):

# mount /dev/sda2 /path/to/mount -o loop,encryption=AES256

Монтирование нескольких файловых систем

Иногда хочется зашифровать одновременно несколько разделов с данными, но так чтобы не вводить море паролей на каждый mount . Например у Вас есть флешка, которую вы таскаете из дома на работу, переносной винчестер и т.п. Или же просто несколько разделов/винчестеров.

Допустим мы имеем зашифрованный раздел /dev/sda2 , который мы при каждой загрузке монтируем в каталог /mnt1 . Появился новый винчестер /dev/sdb1 и мы хотим чтобы он автоматически монтировался в каталог mnt2 при монтировании первого. Можно конечно создать общую систему на чем-то вроде LVM , однако можно и более простым путем пойти:

прописываем в fstab примерно следующую строку:

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,cleartextkey=/mnt1/key.txt 0 0

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

Пароль хранится в виде plain/text это конечно не очень красиво, но он хранится на зашифрованном разделе (который можно и отмонтировать). Можно вместо этого использовать gpg -ключ, однако много безопасности это не добавит (если уж смогут спереть ключ, то большой разницы какой этот ключ не будет), вариант шифрования с gpg -ключом описан в man losetup , здесь я лишь приведу пример записи в fstab :

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,gpgkey=/mnt1/key.gpg 0 0

Примечания

Дополнительную информацию о поддерживаемых алгоритмах шифрования смотри в man losetup , там же можно посмотреть описание других опций программы losetup .

Если у Вас возникнут проблемы при установке модулей AES, то читайте документацию идущую с пакетом loop-aes-source .

GRUB и шифрованный корневой диск

При установке корневого раздела на зашифрованный диск GRUB может в главном меню показывать кракозябры. Это происходит из-за недоступности стандартного шрифта /usr/share/grub/unicode.pf2. Копируем шрифт

cp /usr/share/grub/unicode.pf2 /boot/grub/

Указываем настройку

nano /etc/default/grub GRUB_FONT=/boot/grub/unicode.pf2

Применяем настройку:

update-grub