Шифрование разделов linux. Шифрование разделов. Стек блочных устройств

Шифрование домашнего каталога обеспечивает надежную защиту данных, хранящихся на жёстком диске или ином носителе. Шифрование особенно актуально на переносных ПК, на компьютерах с множественным доступом, а также в любых других условиях. Шифрование домашнего каталога предлагается при установке Linux Mint.

Основная загвоздка при полном шифровании домашнего каталога состоит в том, что необходимо «вынести» каталог с зашифрованными данными за пределы точки монтирования.

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

Не шифровать SWAP при шифрованном домашнем каталоге – потенциально опасно, так как там могут оказаться данные из шифрованных файлов в открытом виде – весь смысл шифрования теряется. Начиная с 14-ой версти Linux Mint, при установке есть возможность выбрать вариант шифрования всего диска. Этот вариант наиболее подходит для сохранения персональных данных на переносных устройствах (у которых, как правило, только один пользователь).

1.3 Шифрование в gnome – Seahorse

В Linux Mint есть встроенная утилита «Пароли и ключи» или же Seahorse. Используя её возможности пользователь может оперировать всеми ключами, паролями, а также сертификатами которые имеются в данной ОС.

По сути Seahorse – это приложение для GNOME (GNOME – свободная среда рабочего стола для Unix-подобных операционных систем), являющееся фронтэндом к GnuPG (свободная программа для шифрования информации и создания электронных цифровых подписей) и предназначенное для управления ключами шифрования и паролями. Пришел на замену GNOME Keyring, которого полностью заменил в GNOME 2.22, хотя был анонсирован еще в GNOME 2.18. Позволяет производить все операции которые ранее необходимо делать в командной строке и объединяя их под едиными интерфесом:

    управлять безопасностью своей рабочей среды и ключами OpenPGP и SSH;

    шифровать, расшировывать и проверять файлы и текст;

    добавлять и проверять цифровые подписи к документам;

    синхронизировать ключи с ключевыми серверами;

    создавать и публиковать ключи;

    резервировать ключевую информацию;

    добавлять к изображениями в любом поддерживаемом GDK как OpenGPG photo ID;

1.4 TrueCrypt

TrueCrypt обладает достаточно удобным графическим интерфейсом, но, к сожалению, разработчики жестко зашили в код интеграцию с файловым менеджером Nautilus.

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

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

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

Создание файл ключа:

truecrypt -create-keyfile /home/user/test/file , где file – название файла-ключа.

Создание контейнера, в данном случае раздела:

sudo truecrypt -k /home/user/test/file -c /dev/sda9

Вместо раздела /dev/sda9 вполне можно указать и файл, например /home/user/test/cryptofile, но в этом случае необходимо будет указать его размер, это делается параметром -size=5G до параметра -c. В указанном примере создастся файл cryptofile размером 5 Гбайт. Иногда TrueCrypt принимает размер только в байтах, для 5 Гбайт можно или высчитать значение заранее и указать -size=5368709120, или же записать следующим образом: -size=`echo 1024^3*5 | bc`.

Для шифрования будет использоваться сделанный уже файл-ключ.

При создании будет предложен выбор типа контейнера (нормальный / скрытый), файловой системы (FAT, ext2/3/4 или без ФС), в данном примере был выбран режим без использования ФС. Также будет предложен выбор алгоритма шифрования (например, AES), а так же hash-алгоритм (например, SHA-1) для шифрования потоков данных.

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

Шифрованный раздел/файл был создан. Теперь, если необходимо его внутреннюю файловую систему (далее ФС) отформатировать под нужную, следует сделать следующее.

Выбрать необходимый раздел используя Truecrypt:

truecrypt -k /home/user/test/file /dev/sda9

По умолчанию будет задействован созданный Truecrypt девайс /dev/mapper/truecrypt0. По обращению к этому девайсу, можно менять, например ФС в шифрованном контейнере. В данном случае это нужно сделать.

sudo mkfs.ext4 -v /dev/mapper/truecrypt0

Этим самым была сделана ФС ext4 внутри данного шифрованного контейнера.

Далее, так как данный контейнер уже «прикреплён» к девайсу /dev/mapper/truecrypt0, то осталось его просто примонтировать к какой-нибудь директории. Эта директория для монтирования должна уже существовать в системе.

sudo mount /dev/mapper/truecrypt0 /mnt/crypto , где /mnt/crypto – директория, к которой примонтирован шифрованный контейнер.

truecrypt -d

Теперь без знания файла-ключа и пароля никто не сможет прочесть спрятанную информацию.

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


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

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

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

В статье будет описана настройка следующих методов криптозащиты:
dm-crypt/LUKS - создание криптоконтейнера с помощью device-mapper и CryptoAPI ядра;
eCryptfs - шифрование на уровне файловых систем;
EncFS - аналогично описанному выше, но не требует загрузки модулей ядра.

DM-CRYPT/LUKS
Существует два вида настройки dm-crypt - plain и LUKS. Отличие в том, что в случае использования LUKS в начале криптотома присутствуют метаданные, позволяющие использовать несколько ключей и изменять их. В то же время наличие подобного заголовка в некоторых случаях само по себе компрометирующе - впрочем, в большинстве подобных случаев будет компрометирующей и область с высокой степенью энтропии. Настройка plain dm-crypt с файлом ключа и парольной фразой Посмотрим, как настроить комбинацию из тома plain dm-crypt, зашифрованного с помощью ключевого файла, в свою очередь содержащегося в LUKS-контейнере. Для начала стоит определиться, как именно будут размещаться разделы. Существует три основных варианта:
просто крипто-том;
сперва крипто-том, затем поверх него LVM;
сперва крипто-том, затем RAID, затем LVM.

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

# dd if=/dev/zero of=/root/key.luks bs=512 count=2057

# cryptsetup --align-payload=1 luksFormat /root/key.luks

# cryptsetup luksOpen /root/key.luks cryptokey

# dd if=/dev/urandom of=/dev/mapper/cryptokey

Первая команда подготавливает файл контейнера, вторая этот контейнер создает, третья подключает, четвертая генерирует ключевую информацию. Стоит заметить, что опция –align-payload=1 нужна для того, чтобы размер метаданных LUKS составлял не 4096 512-байтовых блоков, а всего лишь 2056. Таким образом, на собственно ключевую информацию остается 512 байт.
Затем переходим к созданию криптотома. На этом этапе по желанию можно также заполнить диск псевдослучайными данными, чтобы затруднить криптоанализ, если он будет. Затем уже можно создавать криптотом. Команда для этого выглядит следующим образом (естественно, в иных случаях идентификаторы могут отличаться, так что нужно быть внимательным):

# cryptsetup --cipher=serpent-xts-plain64 --offset=0--key-file=/dev/mapper/cryptokey --key-size=512 open --type=plain/dev/disk/by-id/ata-VBOX_HARDDISK_VB05eadebe-f25e8d59 crypto0


При необходимости надо повторить аналогичную команду и на других устройствах, для которых требуется шифрование. Затем создадим на криптотомах LVM и ФС на нем:

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

И файл /etc/initramfs-tools/scripts/local-top/cryptokeys (служебная часть опять
же опущена):

# <...>

modprobe - b dm_crypt

while ! (/ sbin / cryptsetup luksOpen / etc / crypto / key . luks cryptokey

/ dev / disk / by - id / ata - VBOX_HARDDISK_VB05eadebe - f25e8d59 crypto0

&& / sbin / cryptsetup plainOpen -- key - file = / dev / mapper / cryptokey

/ dev / disk / by - id / ata - VBOX_HARDDISK_VBc2414841 - cfeccde5 crypto1

&& / sbin / cryptsetup luksClose cryptokey

) ; do

echo “Try again . . . ”

done

Эти два файла должны быть исполняемыми. Затем создаем initrd:

# update-initramfs -u -k all -v

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

# cryptsetup --cipher=serpent-xts-plain64 --offset=0--size=2097152 --shared open --type=plain/dev/disk/by-id/ata-VBOX_HARDDISK_VBcda8398f-f1f1deec crypto

# cryptsetup --cipher=serpent-xts-plain64 --offset=2097152--size=2097152 --shared open --type=plain/dev/disk/by-id/ata-VBOX_HARDDISK_VBcda8398f-f1f1deec crypto_shared

Размер и смещение указываются в 512-байтовых блоках.


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

Наконец, добавляем новый ключ в систему:

Рассмотрим и процедуру восстановления томов LUKS. Самый простой вариант, разумеется, когда есть копия заголовка. В этом случае для восстановления требуется всего одна команда:

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

ENCFS
Посмотрим, как настроить EncFS для автоматического монтирования при входе в систему. Для начала поставим нужные пакеты:

При настройке в режиме эксперта будет задан ряд вопросов: тип шифра (доступны только AES и Blowfish), размер ключа, размер блока, как шифровать имена файлов - блочное шифрование (которое полностью скрывает имя файла, в том числе длину), потоковое (которое шифрует с максимально близкой длиной, что иногда удобно, если имена чересчур длинные и при использовании блочного шифра есть достаточно большая вероятность превысить максимально допустимую длину) или вовсе будет отсутствовать… В конце будет запрошен пароль, он должен совпадать с используемым для входа, в противном случае автомонтирование работать не будет.

Следом нужно отредактировать файл /etc/security/pam_encfs.conf:

И файл /etc/fuse.conf:

И добавим пользователя в группу fuse:

$ sudo usermod - a - G fuse $ USER

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

ECRYPTFS
Известно, что eCryptFS применяется в Ubuntu как средство по умолчанию для защиты домашних каталогов. Посмотрим, как оно работает, - создадим шифрованный каталог вручную. Установим пакеты:

СозданиеeCryptFS

И смонтируем ФС (при первом монтировании создаются все необходимые метаданные):

$ sudo mount - t ecryptfs / home / rom / . secret / home / rom / secret

Будет запрошена парольная фраза (всего один раз, повторный ввод не реализован, что выглядит не очень хорошим решением, учитывая, что она должна быть длинной), затем будет запрошен тип шифра (AES, Blowfish, 3DES, Twofish, CAST6 и CAST5), размер ключа, задан вопрос, разрешить или запретить нешифрованные файлы в каталоге с зашифрованными, шифровать ли имена файлов… и в финале спросит, действительно ли желаем подмонтировать и сохранить ли сигнатуру в определенный файл. Вопрос не настолько глупый, как может показаться сначала: в данном ПО при отсутствии сигнатуры не существует возможности отличить правильный пароль от неправильного.

Шифрование домашнего каталога пользователя

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


Предупреждение о необходимости запомнить парольную фразу

Посмотрим, как его восстанавливать. Предположим, что парольная фраза не записана и восстановление идет с Live CD. Подразумевается, что ФС подмонтирована. Переходим в каталог home/.ecryptfs/rom/.ecryptfs и набираем команду:

dm-verify
Модуль dm-verify предназначен для проверки целостности блочных устройств. Верификация ведется с помощью hash tree, где «листья» - хеш-суммы блоков, а «ветви» - хеш-суммы наборов «листьев». Таким образом, для верификации блочного устройства (будь то раздел или диск) достаточно проверить всего одну контрольную сумму.
Этот механизм (вкупе с цифровой подписью) применяется в некоторых Android-устройствах для защиты от модификации системных разделов, а также в Google Chromium OS.

ЗАКЛЮЧЕНИЕ
Linux содержит действительно немало средств для криптографической защиты информации. Из трех описанных средств как минимум одно присутствует во всех современных дистрибутивах Linux. Но что же выбрать?
dm-crypt/LUKS стоит применять в тех случаях, когда есть возможность быстро отключить зашифрованный том и когда резервные копии либо не нужны, либо засекречиваются иным путем. В этом случае данное решение более чем эффективно, особенно с учетом того, что шифровать можно каскадом произвольной вложенности и типа (например, AES-Twofish-AES), - настоящий рай
для параноиков.
eCryptFS подходит в тех случаях, когда нужно шифрованные данные куда-то сохранять - к примеру, в облако. Она обеспечивает довольно надежноешифрование (хотя в 128-битном варианте, используемом по умолчанию, есть возможность снижения криптостойкости на два бита) и для конечного пользователя прозрачна.
EncFS же - старичок примерно десятилетней давности, базирующийся на еще более древних работах. К настоящему времени не рекомендован к использованию из-за потенциальных дыр в безопасности, но может применяться в качестве кросс-платформенного средства для защиты несенситивных данных в облаках.

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

Диска (a la TrueCrypt). Я знаю, что была работа по добавлению поддержки шифрования в GRUB2, но пока это пока не готово. Любые другие варианты?

(Обратите внимание, что я действительно имею в виду полное шифрование диска здесь, в том числе /boot)

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

Не вдаваясь в дискуссию о том, почему мне действительно нужно / boot быть зашифрованным, вот статья, которая точно описывает, что мне нужно, на основе модифицированной версии GRUB2:

  • http://xercestech.com/full-system-encryption-for-linux.geek

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

8 Solutions collect form web for “Linux-загрузчики, поддерживающие полное шифрование диска?”

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

Обновление (2015) : последняя версия GRUB2 (2.00) уже содержит код для доступа к зашифрованным разделам LUKS и GELI. (Ссылка xercestch.com, которую предоставили OP, упоминает первые исправления для этого, но теперь они включены в последнюю версию).

Однако, если вы пытаетесь зашифровать весь диск по соображениям безопасности, обратите внимание, что незашифрованный загрузчик (например, TrueCrypt, BitLocker или модифицированный GRUB) не обеспечивает больше защиты, чем незашифрованный /boot раздел (как указано СП в комментарии выше). Любой, у кого есть физический доступ к компьютеру, может так же легко заменить его на пользовательскую версию. Это даже упоминается в статье на xercestech.com, которую вы связали:

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

Обратите внимание, что все программные продукты для полного шифрования диска имеют эту слабость, независимо от того, используют ли они незашифрованный загрузчик или незашифрованный раздел boot / preboot. Даже продукты с поддержкой чипов TPM (Trusted Platform Module), таких как BitLocker, могут быть внедрены без изменения оборудования.

Лучшим подходом было бы:

  1. расшифровывать на уровне BIOS (в материнской плате или на адаптере диска или на внешнем оборудовании [смарт-карта], с чипом TPM или без него), или
  2. нести код авторизации PBA (preboot authorization) (раздел /boot в этом случае) на съемном устройстве (например, смарт-карте или USB-накопителе).

Чтобы сделать это вторым способом, вы можете проверить проект Linux Full Disk Encryption (LFDE) по адресу: http://lfde.org/ , который предоставляет сценарий после установки, чтобы переместить раздел /boot на внешний USB-накопитель, зашифровав ключ с GPG и хранение его на USB тоже. Таким образом, слабая часть загрузочного пути (незашифрованный /boot раздел) всегда с вами (вы будете единственным с физическим доступом к расшифровке кода и ключу). (Примечание : этот сайт был потерян, и блог автора также исчез, однако вы можете найти старые файлы на https://github.com/mv-code/lfde , просто отметив, что последняя разработка была выполнена 6 лет назад). В качестве более легкой альтернативы вы можете установить незашифрованный загрузочный раздел на USB-накопителе при установке ОС.

С уважением, М.В.

Сделайте свой первый RAMdisk и / boot папку не использующим шифрование.

Это вызовет «минимальное» ядро ​​с драйверами и поддержкой для переключения на «настоящую» корневую файловую систему, которая зашифрована.

Прежде чем вы заявите «это взломать», помните – большинство (если не все) дистрибутивов Linux загружаются по умолчанию сегодня. Это явно позволяет вашей системе загружать и загружать корневую FS, используя модули, которые необходимо загрузить из файловой системы. (Вид проблемы с курицей и яйцом). Например, если ваша корневая файловая система была на томе аппаратного RAID-массива, и вам нужно было загрузить его драйвер, прежде чем вы сможете смонтировать корневой FS.

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

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

У Ubuntu есть хорошая страница с инструкциями по созданию зашифрованных разделов, LMVP, папок и т. Д., Просто ваша версия вашего дистрибутива …

Нет, я думаю, что нет.

Вам действительно нужно шифровать / загружать? Я подозреваю, что нет. Остальная часть файловой системы может быть зашифрована обычным программным обеспечением Linux, которое находится в initramfs in / boot и запрашивает пользователя соответственно.

Кажется, вы просите что-то, что невозможно сделать, и сравнивая его с решением Windows, которое скрывает реализацию от вас, но на самом деле делает то же самое, что делает Linux.

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

Ответ намечен статьей. «Теперь это возможно с расширениями к загрузочному загрузчику следующего поколения GRUB2, который был исправлен, чтобы поддерживать не только« и «мы хотим установить новое изображение с поддержкой luks grub2 позже», и «Теперь мы скомпилируем источник GRUB2 с поддержкой LUKS. " Кажется, есть исправление или расширение, которое вам нужно получить и включить с GRUB2 или разветвленным источником GRUB2.

Grub2 версии 2.02 ~ beta3 может многое сделать, что Grub2 версии 2.02 ~ beta2 не может сделать, проверено мной:

  1. Загрузка с использованием диска Super Grub 2
  2. Введите «c», чтобы перейти в командную строку
  3. Введите команды для монтирования зашифрованного раздела, который я хочу
    • insmod luks
    • cryptomount (hd0, #) // где # представляет зашифрованный раздел
  4. Введите ключевую фразу и введите несколько команд
    • multiboot (crypto0) /grub/i386-pc/core.img
    • ботинок

Это загрузит еще один Grub2, который находится внутри зашифрованного раздела, злая сумасшедшая атака здесь не имеет места … Я загружаюсь с компакт-диска (только для чтения), а затем монтирует зашифрованный раздел (а не кодовую фразу, что-нибудь!), затем загрузка изнутри зашифрованного раздела и загрузка Grub2 со своим меню и т. д.

Предупреждение: Grub2 версии 2.02 ~ beta2 не может сделать то же самое, поскольку имеет некоторые ошибки (которые, по-видимому, исправлены на Grub2 версии 2.02 ~ beta3), связанные с командой cryptomount …

beta2 ошибки, о которых я говорю, являются:

  1. На самом деле он не монтирует зашифрованный раздел, поэтому он не позволяет вам получить доступ (crypto0) / *
  2. Если существует более одного зашифрованного раздела, использование cryptomount -a требует только одной кодовой фразы
  3. После запуска cryptomount один раз он запускается снова, ничего не делает

на бета-версии 3:

  1. Он действительно монтирует зашифрованный раздел и позволяет вам получать доступ к файлам через (crypto0) / * или (crypto1) / * и т. Д., Если более одного установленного одновременно
  2. Он запрашивает каждую кодовую фразу (по одному за зашифрованный раздел)
  3. Это позволяет вам запускать его столько раз, сколько вам нужно, вы можете установить один, затем другой и т. Д.

Боковое примечание: я не понял, как их размонтировать, кроме перезагрузки или загрузки другого или одного загрузочного загрузчика grub2 / other и т. Д.

Надеюсь, это поможет прояснить ситуацию, и надеюсь, что версия Grub2 2.02 ~ beta3 будет интегрирована в LiveCD, поэтому мы можем установить ее без необходимости компилировать ее сами.

PD: С диском Super Grub 2 я не вижу способа установить Grub2 версии 2.02 ~ beta3 на раздел MBR / boot и т. Д.

Хотите спрятать свои данные от посторонних глаз? Мы научим вас приемам шифрования жёсткого диска.

За последний год тема безопасности интернет-данных всплывала часто: сначала в связи с откровениями Сноудена, потом - с уязвимостью в OpenSSL (Heartbleed bug). Незадолго до последней была обнаружена и менее заметная ошибка в GnuTLS. В результате мы стали уделять больше внимания безопасности удалённых данных; но как насчёт тех, что хранятся у нас на диске?

Стек блочных устройств

Прежде чем рассматривать шифрование, важно осознать, как работают блочные устройства. Они являются системными интерфейсами для устройств хранения данных, например, /dev/sda! Внутри блочного устройства находится аппаратный драйвер, например, SATA, и собственно оборудование. Затем операционная система взаимодействует с блочным устройством для создания на нем файловой системы.

Блочные устройства обычно рассматриваются именно в этом качестве, хотя у них есть и другие функции. В частности, подобное устройство может быть интерфейсом для ряда других блочных устройств - они могут составлять стек. И вы такое уже делали: у вас есть файловая система на /dev/sda1 (раздел диска), а это блочное устройство ссылается на /dev /sda (весь диск).

Такие технологии, как RAID и LVM (Logical Volume Management), также представляют собой стеки блочных устройств. У вас может быть LVM поверх массива RAID, который, в свою очередь, также расположен на блочных устройствах отдельных дисков или их разделов.

Шифрование всего устройства с помощью dm-crypt работает следующим образом: на базе вашего носителя информации создаётся блочное устройство, которое шифрует данные при сохранении и дешифрует при чтении. Затем вы монтируете стандартную файловую систему поверх зашифрованного устройства, и она функционирует так же, как и на обычном разделе диска.

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

Всё делается за счёт ядра, но на уровне пользователя нам необходимо программное обеспечение для создания устройств dm-crypt и управления ими; таким стандартным инструментом выступает cryptsetup. Вероятно, он уже установлен в вашем дистрибутиве; а если нет, то уж точно будет в основных репозиториях.

Шифрование

Значений по умолчанию, как правило, более чем достаточно, а все доступные опции можно просмотреть с помощью cryptsetup -help Эти параметры необходимы только с LuksFormat. При создании защищенного устройства cryptsetup автоматически использует правильные настройки для его открытия.

Лучше всего придерживаться популярных шифров и хэшей, если только у вас нет более веской причины выбрать что-то другое. У методов, используемых реже, могут быть скрытые недостатки, просто потому, что они менее протестированы, что и произошло недавно с реализацией хэша Whirlpool в библиотеке libcgrypt, используемой cryptsetup. При внесении исправлений пострадали те системы, где уже использовались дефектные хэши.

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

LUKS

LUKS — Linux Unified Key Setup был создан ради предоставления стандартного, кросс-платформенного (несмотря на название) формата хранения шифрованных данных на дисках. Он касается не методов шифрования, а способа хранения информации о них.

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

Безопасность и конфиденциальность очень важны, для тех, кто хранит важные данные на компьютере. Ваш домашний компьютер находится в безопасности, но с ноутбуком или другими переносными устройствами ситуация очень сильно меняется. Если вы носите свой ноутбук с собой почти везде и к нему могут иметь доступ посторонние лица, возникает вопрос - как защитить свои данные от чужого вмешательства. Именно от физических атак, где каждый желающий может попытаться получить данные из 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.
  • Работает в том числе и с разделом подкачки, так что ваш ноутбук может использовать функцию спящего режима, или гибернации полностью безопасно.