id: Гость   вход   регистрация
текущее время 10:32 19/04/2024
Автор темы: Гость, тема открыта 25/02/2014 02:12 Печать
Категории: софт, инфобезопасность, защита дисков, свободный софт
https://www.pgpru.com/Форум/UnixLike/ВведениеНовыхДисковВРаботуИLUKS
создать
просмотр
ссылки

Введение новых дисков в работу и LUKS


Есть абсолютно НОВЫЙ hdd, который нужно ввести в работу в linux x64. Необходимо надежно защитить данные на этом hdd.
Для этого предполагается приготовить его с помощью dm-crypt/LUKS.
Планируется выполнить следующие действия:


1. Создать один раздел на диске с помощью
.


2. Отформатировать LUKS.

как указано здесь
https://www.pgpru.com/faq/zaschitadiska#h42-18


3. Открыть его


4. Отформатировать с помощью и смонтировать.


Всё.


Теперь что хотелось бы узнать:
а.) Для абсолютно нового диска имеет ли смысл заполнение случайными числами, как это указано здесь
https://www.pgpru.com/faq/zaschitadiska#h42-15
?


б.) Какова рекомендуемая минимальная длина пароля?


в.) Так ли уж нужны ключевые файлы? Для чего они в случае довольно мощного подхода, предлагаемого линукс?


г.) Покритикуйте вышеуказанные действия или добавьте что-то еще в эту последовательность.


Спасибо.



 
На страницу: 1, 2 След.
Комментарии
— cyber_beard (02/03/2014 14:13)   <#>
По поводу скорости haveged и скорости заполнения luks нулями.
Было экспериментально проделано и то, и другое. Сравнивались процедуры:

и

Скорость оказалась примерно одинаковая: от 150Mb/s до 250Mb/s.
haveged оказался даже быстрее по субъективным оценкам.
— unknown (02/03/2014 18:52)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
По поводу LVM, вроде в общем виде правильно, но может быть масса вариантов, как именно удобно и правильно для вас. Можно вообще использовать двойное шифрование — и снаружи (на уровне устройства), и внутри (для логических томов LVM). Ни к каким конфликтам это не приводит. В современных компьютерах это практически никак не сказывается на быстродействии для большинства обычных задач. Надёжность хранения тоже особо не падает: при сбоях с шифрованием следует надеяться лишь на бэкапы, а не на попытки восстановить данные с побитого носителя.


Померяйте теперь с перенаправлением в /dev/null. Если там будет быстрее, значит у вас лимитируется скоростью записи на носитель. При шифровании нулей ещё имеет значение, задействована ли аппаратная поддержка криптоалгоритма со стороны процессора.
— Гость (03/03/2014 00:23)   <#>
cyber_beard (02/03/2014 13:59)
а попробуйте посмореть через графический иyсталятор Debian как создается шифрованный раздел и затем в нем lvm, в т.ч. дальнейшая настройка логических томов. имхо, будет больше понимания. все это можно попробовать в вирт машине (очень удобно и быстро).
— Гость (03/03/2014 03:31)   <#>

Вроде правильна (за -l 100%FREE TestStorage не поручусь, консультируйтесь с how-to в интернетах и мануалами). В любом случае, я бы вам посоветовал следующее: не надо стремиться сразу разбить весь диск. Сколько вам надо места под текущие данные и сколько вам надо разделов — столько и выделите. Потом размер разделов всегда можно увеличить (расширив и файловую систему соответственно) или досоздать новые из имеющегося «пула». Т.е. смысла загонять всё оставшееся место в какой-то третий логический том на уровне «лишь бы создать» — подумайте, надо ли это вам. И, как говорил unknown, лучше создавать разделы (логические тома) поменьше, а потом их увеличивать по мере надобности, т.к. это более безболезненная ситуация, чем ужимать уже существующие (но не до конца заполненные) разделы (логические тома), но не до конца заполненные.


Настоятельно рекомендуется делать LUKS снаржи + LUKS внутри. Т.е. вместо вашего шага №6
mkfs.ext4 /dev/mapper/TestStorage-test0
надо сделатьСмысл понятен? Весь диск — LUKS-раздел, внутри него — LVM-структура с логическими томами, которые, в свою очередь, сами являются LUKS-разделами (в общем случае, с другими пассфразами). И внутри этих LUKS-разделов сидят файловые системы. Пока для простоты можете пассфразу везде одинаковую поставить, т.к. она «уничтожается» из оперативной памяти сразу после подсоединения LUKS-раздела. Позже пассфразы на LUKS можно будет сменить, это элементарно делается.


Одинаково. Предлагаемая структура (куча LVM-LUKS-томов внутри одного большого LUKS на весь диск), кстати, очень похожа на то, как можно сделать полнодисковое шифрование в Debian при его выборе при инсталляции. Можно создать LUKS-раздел, а внутри нарезать LVM-тома, на каждом томе будет своя файловая система и своя точка монтирования. При загрузке система будет спрашивать пароль на внешний LUKS и грузиться, а загрузившись, вы можете подсоединять уже собственные LVM-тома, несистемные (для /home и прочего), внутри которых будет LUKS в качестве прокладки между LVM-томом и файловой системой; т.е., не введя дополнительных паролей, к объёму данных противник доступ не получит, даже если сможет загрузить систему]. Ну, и общая идеология, стоящая за такой разбивкой — рассортировать данные по степени нужности в работе так, чтобы держать подключенными те и только те объёмы данных, которые вам в данный момент нужны, а не вообще все.


Не советую, это только запутает. Из инсталлятора можно сделать всё очень по-разному, а чтобы понять, как надо делать, надо уже знать матчасть. Сам инсталлятор тоже запутанный, и там много слишком контринтуитивных вещей. Общая схема такая, когда речь доходит до дележа дискового пространства (пишу по памяти, могу ошибаться в деталях):
  1. Выделить отдельный дисковый раздел под точку монтирования /boot и не шифровать его ничем.
  2. Пометить, что мы используем другие дисковые разделы (их может быть один или несколько), как контейнеры для LUKS.
  3. Выбрать «сконфигурировать LUKS-разделы» (никто не догадается, что это надо обязательно сделать именно на этом этапе!).
  4. После конфигурирования появится виртуальное блочное устройство /dev/mapper/NAME, где NAME — то, как вы его назвали + учёт внутренней номенклатуры. Этот новый LUKS-раздел будет виден в списке блочных устройств на дальнейшее разбиение и/или создание файловых систем.
  5. Вот только теперь можно заняться LVM: выбираем этот NAME и делаем «использовать его, как LVM-том/раздел».
  6. Появившуюся группу логических томов (LVM) разбиваем на «логические тома» — тут всё как с дисками, выделаем пространство и назначаем имя.
  7. Каждый логический том форматируем и назначаем ему точку монтирования (типа /usr, корень / и т.д.).
Собственно, всё. Лучше на системные разделы всё NAME не бить, а оставить место для собственных /home/pupkin и т.п. После успешной инсталляции можно будет загрузиться и в командной строке досоздать руками те «логические тома», какие было необходимо, сделав их LUKS-контейнерами. Т.е. часть LVM-томов будут просто файловыми системами, а другая часть — LUKS-разделами, требующими ввода дополнительной пассфразы, чтобы их смонтировать. Недавно на эту тему целый топик был.
— unknown (03/03/2014 09:52, исправлен 03/03/2014 09:53)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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


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


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

— Гость (04/03/2014 20:47)   <#>
На тему LVM, если что: после подключения внешнего LUKS разделы LVM не всегда становятся доступными автоматически. Если их нет, надо сделать vgchange -ay NAME, где NAME выцепляется из вывода vgdisplay. Соответственно, чтобы закрыть внешний LUKS (luksClose), который на весь диск, придётся делать принудительный vgchange -an NAME, иначе не сработает. В неоторых юзерофильных системах автодетект LVM происходит сам по себе, и там vgchange -ay можно не делать.
— unknown (04/03/2014 21:51)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
А можно сделать vgchange -ay безо всякого NAME. На уже открытые группы томов это никак не повлияет, а все неоткрытые просканируются. А вот закртие vgchange -a n NAME уже только с именем группы.
— cyber_beard (05/03/2014 12:07)   <#>
Вот как раз хотелось бы спросить:
после открытия luks группа томов приводится в активное состояние с помощью:

И далее происходит монтирование логических томов.
А чтобы выключить, то наоборот: размонтируем тома и делаем:


Вопрос в том, достаточно ли этих операций для стандартного подключения lvm on luks, или, м.б., что-то пропущено?
— Гость (05/03/2014 13:02)   <#>
Подключение всех LVM-разделов:
# cryptsetup luksOpen /dev/sdb1 sdb1_crypt
# vgchange -ay mygroup
# cryptsetup luksOpen /dev/mygroup/LVname1 LVname1
# cryptsetup luksOpen /dev/mygroup/LVname2 LVname2
...
# mount /dev/mapper/LVname1 /path/to/LVname1
# mount /dev/mapper/LVname2 /path/to/LVname2
Отключение всех LVM-разделов и внешнего LUKS (например, чтобы вытащить диск из системы):
# umount /path/to/LVname1
# umount /path/to/LVname2
...
# cryptsetup luksClose LVname1
# cryptsetup luksClose LVname2
...
# vgchange -an mygroup
# cryptsetup luksClose sdb1_crypt
Чтобы так сделать, надо предварительно убить все программы/процессы, которые используют эти разделы. Например, -an не сработает, если хотя бы один из внутренних LUKS-контейнеров используется. Иногда возникают глюки, из-за которых файловые системы удаётся отмонтировать, а внутренние LUKS-контейнеры закрыть, но при этом какой-то процесс, типа ssh-agent'а, остаётся запущенным. В этом случае, хотя ничего не мешает, не удаётся сделать -an и/или luksClose для внешнего LUKS. Проще всего лечить перезагрузкой, хотя можно попробовать подмонтировать проблемные разделы, а потом их снова отмонтировать (не пробовал, поэтому не знаю, поможет ли).

Если нужно подключить/отключить только конкретный LVM-раздел («группу логических томов») при условии, что диск уже подключен, а LVM на нём уже активирован, то:
# cryptsetup luksOpen /dev/mygroup/LVnameN LVnameN
# mount /dev/mapper/LVnameN /path/to/LVnameN
Чтобы отключить только конкретный LVM-том (но не все остальные) при этих же обстоятельствах:
# umount /path/to/LVname1
# cryptsetup luksClose LVname1
umount отмонтирует файловую систему (она более недоступна всем, кроме root'а, который её может примонтировать вновь, не требуя пассфразы). luksClose удаляет ключ шифрования раздела из оперативной памяти (т.е. без повторного ввода пассфразы доступ к данным не вернуть). Что при этом происходит с самими данными с раздела, которые были ранее в оперативке — вопрос дискуссионный.
— cyber_beard (08/03/2014 14:55)   <#>
Из его вопроса можно только предположить, что он хочет аккуратно затереть носитель

Речь шла о простых hdd, на которых не установлена система.
Хочу так же подтвердить, что всё, указанное в faq (а так же рекомендации из данной темы относительно lvm) работают отлично.
Способы из faq (нули и haveged) действительно быстрые, так что в случае необходимости их можно использовать даже вместе без существенных потерь времени.
Что касается haveged, то в сети встречал непроверенную информацию относительно того, что демон потребляет значительное количество ресурсов при запуске. Посему на всякий случай данный пакет был удален.
— Гость (08/03/2014 23:16)   <#>

Ну вот и хорошо.
— pgprubot (18/07/2015 15:06, исправлен 13/10/2015 20:49)   профиль/связь   <#>
комментариев: 511   документов: 2   редакций: 70

Имя группы томов можно узнавать динамически, сравнивая вывод vgscan до и после подключения соответствующих разделов. Будет выглядеть примерно так:

#!/bin/zsh
 
[some commands] && \
VG_before=$(vgscan |grep Found) && \
[cryptsetup opening commands] && \
VG_after=$(vgscan |grep Found) && \
VG_new=$(diff <(echo $VG_before) <(echo $VG_after) |grep Found) && \
VG_name=$(echo $VG_new |sed 's/\(^.* "\)\([^"]*\)\(" .*\)$/\2/') && \
[some commands] && \
С /bin/sh diff-строка не заработает, нужен хотя бы bash. VG_name — название новой появившейся Volume Group.

— pgprubot (13/10/2015 21:17, исправлен 13/10/2015 21:32)   профиль/связь   <#>
комментариев: 511   документов: 2   редакций: 70

В случае, когда внутри криптотома (к примеру, /dev/mapper/sd{b,c,d}_crypt) содержится VG с (дополнительно) шифрованными LV, иногда возникает проблема: из-за плохих контактов в USB-разъёме или из-за вашей ошибки (нечайно выдернули диск до корректного отмонтирования и отключения всего нужного) ядро решило, что диск более недоступен. Все попытки чтения диска приводят к I/O-ошибкам.


В этой ситуации выглядит логичным принудительно всё отмонтировать и отключить, выдернуть диск, если он ещё не было выдернут, а потом подсоединить заново и всё подключить. Однако, это не работает, т.к. даже после принудительного отмонтирования ФС и отключения шифрованных LV-устройств vgchange -an mygroup отказывается выполняться, а опции сделать -an для конкретной VG принудительно нет. Более того, если подключить этот же диск снова, то не удастся на нужной стадии выполнить vgchange -ay mygroup, потому что эта VG считается недоступной.


Здесь может помочь грязный хак: диск вынимаем, подключаем снова; после подключения делаем переименование: vgrename mygroup mygroup_new; теперь шифрованные LV могут быть подключены (несмотря на сыпящиеся в консоль предупреждения). Но главное тут то, что ссылки на старую VG становятся неактивными после переименования VG, т.е. VG как бы исчезает, и становится возможным сделать cryptsetup remove sd{b,c,d}_crypt для того диска, на котором находилась эта VG.



Можно делать по аналогии с предлагаемым в Tails для завершения работы системы — после отмонтирования криптотомов запускать sdmem.


P.S. Кстати, vgrename помогает и в других случаях — например, при коллизиях имён.

На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3