Добавление шифрования в Ubuntu

Источник: rus-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. Для этого введем команду, указанную ниже. При этом потрудитесь вспомнить ваш собственный пароль, так как данная утилита потребует его для выполнения операции: 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<tt>swap</tt>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: [type your new passphrase]
Verify passphrase: [type your new passphrase again]
sudo cryptsetup luksOpen /dev/sdXN cryptswap1

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

sudo mk<tt>swap</tt> /dev/mapper/crypt<tt>swap</tt>1
sudo swapon ­­all
swapon ­s

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

Откройте в предпочитаемом редакторе файл настроек /etc/crypttab. Замените в нем строку cryptswap1 следующей (не забудьте при этом заменить устройство /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<tt>swap</tt>1

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

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

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

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

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

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

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

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

Разблокирование шифрованного раздела подкачки

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=31055