LINUX.ORG.RU

Автомаунт шифрованного раздела

 ,


1

2

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

Целевой компьютер в Усть-Зажопинске, после первичной установки доступ к нему только удаленный.

Есть еще внешний сервер, который можно каким-либо образом использовать.

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

Не криминал.


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

держать ключ на флешке, всегда носить с собой

потому что если он хранится на нешифрованном разделе для автомаунта

this

whoami-neo ()

Encryption is not a crime

Правильно, шифрование не криминал.

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

Camel ★★★★★ ()
Ответ на: комментарий от PPP328

Есть еще внешний сервер, который можно каким-либо образом использовать.

а к этому внешнему доступ с флешкой есть? очевидно, можно в него флешку втыкать

PtiCa ★★★★★ ()
Ответ на: комментарий от PPP328

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

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

KillTheCat ★★★★ ()
Ответ на: комментарий от PPP328

Раздел с системой зашифрован?

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

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

Только вот есть одна проблема - раз сервер далеко, могут скопировать всё, пока он включен и расшифрован.

whoami-neo ()

Шифруется вся система целиком? Если нет, то нужно организовать при загрузке подключение к какой-то шаре по ssh-ключу, разумеется включать/выключать шару ты будешь сам, вручную. Раздел монтируется по ключу с шары, соединение отрывается, ключ удаляется. Делать такое можно при помощи systemd-юнитов, копировать ключ по scp...

Pyzia ★★★ ()
Ответ на: комментарий от PPP328

Рыбку съесть

Как сделать так, чтобы при буте системы он автоматом маунтился, но при этом если кто-то получит в руки компьютер со всеми жесткими дисками то не смог бы его расшифровать?

блин, забыл дополнить - сервер в Усть-Зажопинске, по принципу install-once, never touch.

Что за бред? Вы хотите и рыбку съесть и на ёлку залезть? Шифрование не может быть never touch. Собственно каждый раз когда нужно расшифровать данные нужно сделать этот самый touch, показать, что это именно вы имеете ключ, знаете пароль и т.п.

Предлагаю вам отказаться от полнодискового шифрования. Ценные данные хранятся, например, в /var, вот его и шифруйте.

Другой вариант: вставить openssh или dropbear в initrd, но после каждой перезагрузки вам надо будет достучаться до сервера и ввести в нём пароль.

Невозможно хранить ключ локально в открытом виде и рассчитывать на какую-то защищённость.

Camel ★★★★★ ()
Ответ на: комментарий от KillTheCat

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

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

StReLoK ★☆ ()
Ответ на: Рыбку съесть от Camel

Суть - на удаленном сервере хранится наш код (python/perl/lua/bash etc). Мы хотим чтобы его не сперли, ибо машина в аренде. В штатном режиме он работает. Хотим чтобы в случае если арендодатель скажет «ша» и заберет сервер код оттуда выковырять не смог. О том что там находится наш код он осведомлен.

PPP328 ()
Ответ на: комментарий от PPP328

Новые подробности

1500 удаленных серваков

Таки сколько у вас серваков, один или 1500?

Вы понимаете, что либо вы храните данные в виде эквивалентном открытому, либо секаетесь каждый раз с открытием их?

Camel ★★★★★ ()
Ответ на: Новые подробности от Camel

Серваков много, на пальцах ситуацию пытался объяснить на одном.

Вы понимаете, что либо вы храните данные в виде эквивалентном открытому, либо секаетесь каждый раз с открытием их?

Что, до сих пор ничего лучше security via obscurity не придумали чтоли? 2017й год, все дела.

PPP328 ()
Ответ на: комментарий от PPP328

Логин по ключу - не? Запихнуть всё это в скрипт... Я тебе рабочую схему предлагаю: сервер врубается, на него через scp копируется ключ, примонтируется раздел, ключ удаляется. И так в цикле, сколько у вас там серверов...

Pyzia ★★★ ()
Последнее исправление: Pyzia (всего исправлений: 1)
Ответ на: комментарий от Pyzia

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

PPP328 ()
Ответ на: комментарий от PPP328

Ключ предполагалось засылать вручную, контролируя этот процес удалённо, чтобы «санкционировать» включения. Или тебе надо прям совсем автомаунт? Чтоб вообще не париться а просто включать? Импоссибль!

Pyzia ★★★ ()

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

У меня два диска. До объединения в linear raid, я шифровал их разными ключами. Один диск был под /, дешифрация по паролю, а на нем уже лежал ключ для дешифровки второго. Еще можно таскать на флешке.

Meyer ★★ ()

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

Ну и смысл этим заморачиваться? Смысл шифровать FS на сервере? В работающем состоянии и так кто угодно сможет получить к нему доступ через другие способы или не сможет вообще.

Если боишься маски-шоу только. Тогда man 8 geli. Там написано, как всё делать. Перед приездом делаешь geli kill. Только не думай, что сначала тебе доступ к серваку отключат, а потом приедут

anonymous ()

Без физического доступа тоже смысла нет. Вдруг что-то пойдет не так. Короче, ТС занимается ерундой и не продумал модель угроз. Какая у тебя модель угроз?

anonymous ()
Ответ на: комментарий от anonymous

Какая у тебя модель угроз?

Арендодатель разрывает договор и забирает себе сервер. Расшифровывает диск и получает исходники.

Арендодатель разрывает договор и забирает себе сервер. Запускает скрипты расшифровки, те получают ключ от сервера и расшифровывают диск.

PPP328 ()
Ответ на: комментарий от Meyer

На ёлку залезть

Тогда мутить специальную initramfs, чтобы получать ключ по сети.

ТС хочет и рыбку съесть, и на ёлку залезть, и попу не уколоть.

Лучшее что можно сделать в таком случае это security by obscurity и надеяться на тупость арендодателя (и что он сейчас не читает это обсуждение на L.o.r.'е).

Предложение: Раздел шифруется, ключ вытаскивается по scp на этапе работы initramfs (да, ключи для scp в initramfs будут лежать в открытом виде). Кроме того настраивается выключение всех серверов одной командой (man orchestration). Если арендодатель разрывает договор, то удаляется ключ LUKS, выключаются все серверы. Включить их арендодатель без ключа не сможет.

Атака на такую схему очевидна. Арендодатель выключает один из серверов, копирует с него initramfs, вытаскивает ключ scp, копирует себе ключ LUKS, включает сервер. Получасовую недоступность одного сервера из полутора тыщь списывает на сетевые проблемы.

Camel ★★★★★ ()
Ответ на: Внезапно от Camel

Provisioning Provisioning is the process whereby the encrypted host is enabled for automatic decryption at boot. This process presumes that the disk is already encrypted at install time using a recovery key. Alternatively, the provisioning process can be cooked into Anaconda directly.

Generate a random key
Add the random key to LUKS
Encrypt the random key to the Petera server's encryption certificate (online or offline operation)
Store the encrypted random key on the local (encrypted) disk
Copy the encrypted random key into the initramfs

No data is ever stored on the Petera server. This entire procedure can be performed offline if the Petera server's encryption certificate is known.

Acquisition These are the steps that occur in the initramfs in order to decrypt the root volume.

Bring up the network Connect to the Petera server and validate the TLS certificate (including stapled OCSP)
Send the encrypted random key to the Petera server
Receive the (decrypted) random key from the Petera server
Use the random key to decrypt the disk

This process is entirely automated and the random key can only ever be decrypted by the Petera server. This requires network connectivity, but no authentication is needed.

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

PPP328 ()
Последнее исправление: PPP328 (всего исправлений: 1)

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

anonymous ()

на удаленном сервере хранится наш код

Это же диалектика: Что знают 2е, знает и свинья. Твой код у клиента - это общий код.

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

bass ★★★ ()
Последнее исправление: bass (всего исправлений: 1)
Ответ на: комментарий от bass

Это нереально - слишком большой пинг (доходит до 1500+ в пределах россии), плюс не 100% возможный аптайм - рубанули у нас инет\свет и вся страна осталась без кино.

PPP328 ()
Ответ на: комментарий от bass

У нас 79 000 строк кода на перле. Как вы предлагаете его обфусцировать так чтобы он точно так же работал и чтобы его можно было каждый день модифицировать?

PPP328 ()
Ответ на: комментарий от PPP328

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

Предложу perlcompile. Освойте инкрементное обновление для медленных интернетов. Ваш клиент готов на дезассемблирование? Научитесь в бинарник добавлять шум.

bass ★★★ ()

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

pekmop1024 ★★★★★ ()