Вконтакте Facebook Twitter Лента RSS

Добавление шифрования в Ubuntu. Шифрование дисков в Linux Установка LVM на жесткий диск

Как установить 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 .

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

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

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

Шифрование на уровне файловой системы:

  • 1. eCryptfs - это криптографическая файловая система Linux. Она хранит криптографические метаданные для каждого файла в отдельном файле, таким образом, что файлы можно копировать между компьютерами. Файл будет успешно расшифрован, если у вас есть ключ. Это решение широко используется для реализации зашифрованной домашней директории, например, в Ubuntu. Также ChromeOS прозрачно встраивает эти алгоритмы при использовании сетевых устройств для хранения данных (NAS).
  • 2. EncFS - обеспечивает шифрованную файловую систему в пространстве пользователя. Она работает без каких-либо дополнительных привилегий и использует библиотеку fuse и модуль ядра для обеспечения интерфейса файловой системы. EncFS - это свободное программное обеспечение и она распространяется под лицензией GPL.

Блочное шифрование на уровне устройства:

  • Loop-AES - быстрая и прозрачная файловая система, а также пакет для шифрования раздела подкачки в Linux. Исходный код программы давно не изменялся. Она работает с ядрами 4.x, 3.x, 2.2, 2.0.
  • TrueCrypt - это бесплатное решение с открытым исходным кодом для шифрования диска в операционных системах Windows 7 / Vista /XP / Mac OS X, а также в Linux.
  • dm-crypt+LUKS - dm-crypt - это прозрачная подсистема для шифрования диска в ядре 2.6 и более поздних версиях. Поддерживается шифрование целых дисков, съемных носителей, разделов, томов RAID, программного обеспечения, логических томов и файлов.

В этой инструкции мы рассмотрим шифрование жесткого диска на Linux с помощью алгоритма Linux Unified Key Setup-on-disk-format (LUKS).

Как работает LUKS?

LUKS (Linux Unified Key Setup - протокол шифрования блочного устройства. Но мы забежали далеко наперед, чтобы понять как это работает, нужно скачала разобраться с другими технологиями, используемыми в этом способе.

Чтобы выполнить шифрование диска linux используется модуль ядра dm-crypt. Этот модуль позволяет создавать в каталоге /dev/mapper виртуальное блочное устройство с прозрачным для файловой системы и пользователя шифрованием. Фактически все данные лежат на зашифрованном физическом разделе. Если пользователь пытается записать данные на виртуальное устройство, они на лету шифруются и записываются на диск, при чтении с виртуального устройства, выполняется обратная операция - данные расшифровываются с физического диска и передаются в открытом виде через виртуальный диск пользователю. Обычно для шифрования используется метод AES, потому что под него оптимизированы большинство современных процессоров. Важно заметить, что вы можете шифровать не только разделы и диски, но и обычные файлы, создав в них файловую систему и подключив как loop устройство.

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

Утилита Cryptsetup

Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.

В Debian или Ubuntu, для этого используйте такую команду:

apt-get install cryptsetup

В дистрибутивах, основанных на Red Hat это будет выглядеть так:

yum install cryptsetup-luks

Синтаксис запуска команды такой:

$ cryptsetup опции операция параметры_операции

Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:

  • luksFormat - создать зашифрованный раздел luks linux
  • luksOpen - подключить виртуальное устройство (нужен ключ)
  • luksClose - закрыть виртуальное устройство luks linux
  • luksAddKey - добавить ключ шифрования
  • luksRemoveKey - удалить ключ шифрования
  • luksUUID - показать UUID раздела
  • luksDump - создать резервную копию заголовков LUKS

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

Шифрование диска Linux

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

Создание раздела

В этом примере мы будем шифровать раздел /dev/sda6, но вместо него вы можете использовать целый жесткий диск или просто один файл, заполненный нулями. Создаем шифрованный раздел:

cryptsetup -y -v luksFormat /dev/sda6

WARNING!
========
This will overwrite data on /dev/sda6 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Эта команда выполнит инициализацию раздела, установит ключ инициализации и пароль. Указывайте такой пароль, чтобы его потом не забыть.

Выполните такую команду чтобы открыть только что созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось шифрование luks linux:

Enter passphrase for /dev/sda6

Теперь вы можете увидеть новое виртуальное устройство /dev/mapper/backup2 созданное с помощью команды luksFormat:

ls -l /dev/mapper/backup2

Чтобы посмотреть состояние устройства выполните:

cryptsetup -v status backup2

/dev/mapper/backup2 is active.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sda6
offset: 4096 sectors
size: 419426304 sectors
mode: read/write
Command successful.

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

cryptsetup luksDump /dev/sda6

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

Форматирование раздела

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

dd if=/dev/zero of=/dev/mapper/backup2

Работа утилиты может занять несколько часов, чтобы иметь возможность наблюдать за процессом, используйте pv:

pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M

Когда процесс завершится мы можем отформатировать устройство в любую файловую систему. Например, отформатируем в ext4:

mkfs.ext4 /dev/mapper/backup2

Как видите, все команды cryptsetup применяются к физическому разделу, в то время как остальные команды для работы с дисками - к нашему виртуальному.

Монтирование раздела

Теперь можно примонтировать только, что созданную файловую систему:

$ mount /dev/mapper/backup2 /backup2

Отключение раздела

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

cryptsetup luksClose backup2

Повторное монтирование

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

cryptsetup luksOpen /dev/sda6 backup2

Теперь можем монтировать:

mount /dev/mapper/backup2 /backup2

Проверить файловую систему luks

Поскольку после открытия раздела с помощью luks linux, этот раздел воспринимается системой, как и все другие, вы можете просто использовать утилиту fsck:

sudo umount /backup2

$ fsck -vy /dev/mapper/backup2

$ mount /dev/mapper/backup2 /backu2

Изменить парольную фразу luks

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

cryptsetup luksDump /dev/sda6

Затем создадим новый ключ:

cryptsetup luksAddKey /dev/sda6

Enter any passphrase:

Enter new passphrase for key slot:
Verify passphrase:

И удалим старый:

cryptsetup luksRemoveKey /dev/sda6

Сейчас вам придется ввести еще старый пароль.

Выводы

Вот и все теперь вы знаете как зашифровать раздел в Linux, а также понимаете как все это работает. Кроме того, шифрование дисков в Linux по алгоритму LUKS открывает широкие возможности для полного шифрования устанавливаемой системы.

Плюсы:

  • LUKS шифрует все блочное устройство, и поэтому очень хорошо подходит для защиты содержимого переносных устройств, таких как мобильные телефоны, съемные носители или жесткие диски ноутбуков.
  • Вы можете использовать на серверах NAS для защиты резервных копий
  • Процессоры Intel и AMD с AES-NI (Advanced Encryption Standard) имеют набор команд, которые могут ускорить процесс шифрования на основе dm-crypt в ядре Linux начиная с 2.6.32.
  • Работает в том числе и с разделом подкачки, так что ваш ноутбук может использовать функцию спящего режима, или гибернации полностью безопасно.

Автор: Paddy Landau
Дата публикации: сентябрь 2012 г.
Перевод: Семененко В.
Дата публикации перевода: 13 ноября 2012 г.

Когда вы устанавливаете операционную систему 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 . Для этого введем команду, указанную ниже. При этом потрудитесь вспомнить ваш собственный пароль, так как данная утилита потребует его для выполнения операции:

Ecryptfs-migrate-home --user 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 crypt swap 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 mk swap /dev/mapper/crypt swap 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 crypt swap 1

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

DEVICE="/dev/mapper/crypt swap 1"

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

RESUME=/dev/mapper/crypt swap 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 спросит вас о новой ключевой фразе для раздела подкачки. Введите ее и процесс дальнейшего нормального входа в систему продолжится.

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

Теперь вы обнаружите режим "Hibernate" в меню выключения Ubuntu Linux и сможете им пользоваться. Если вы хотите переходить в спящий режим из командной строки, достаточно набрать в терминале следующую команду.

Семененко В.

Когда вы устанавливаете операционную систему 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 cryptswap1

В результате вы увидите строку, в которой будет обозначено устройство, выглядящее примерно так: /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/cryptswap1
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 cryptswap1

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

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

Затем отредактируйте файл /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 спросит вас о новой ключевой фразе для раздела подкачки. Введите ее и процесс дальнейшего нормального входа в систему продолжится.


Я 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 он будет включён по умолчанию.

© 2024 Компьютерные для начинающих