Работа с зашифрованными дисками при помощи Calculate Access
Обновлено 30 мая 2022
Calculate Access - утилиты для работы с шифрованными дисками с поддержкой удалённого хранения ключей и заголовков разделов. Особенностью утилит является то, что сам скрипт монтирования и отмонтирования раздела также хранится удалённо. При отсутствии доступа к серверу ключей не остаётся никакой информации о использовании разделов диска.
Создание шифрованного раздела
Создайте директорию /root/cryptdata и подготовьте файлы заголовка шифрованного раздела и ключа шифрования:
mkdir /root/cryptdata
cd /root/cryptdata
1+0 записей получено 1+0 записей отправлено 2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00229696 s, 913 MB/s
1+0 записей получено 1+0 записей отправлено 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.00050282 s, 4.1 MB/s
Добавьте шифрование к разделу:
WARNING!
========
This will overwrite data on /root/cryptdata/header irrevocably.
Are you sure? (Type uppercase yes): YES
Вместо /dev/sda5 укажите раздел, подлежащий шифрованию. Подтвердите действие, набрав "YES" заглавными буквами.
Подключите шифрованный раздел в систему:
cryptsetup --header header -d key luksOpen /dev/sda5 sda5_crypt
Вместо sda5_crypt и /dev/sda5 используйте свои значения.
Отформатируйте раздел:
mkfs.btrfs /dev/mapper/sda5_crypt
Настройка сервера ключей
Для первоначальной настройки сервера ключей установите пакет sys-apps/calculate-access с включенным USE-флагом server.
echo sys-apps/calculate-access server >> /etc/portage/package.use/custom
emerge -a calculate-access
Инициализируйте сервис, выполнив:
Access configured successful in /var/calculate/access!
Подключение шифрованного раздела с использованием сервера ключей
На системе с шифрованным разделом установите пакет sys-apps/calculate-access:
emerge -a calculate-access
Сгенерируйте ssh-ключ для подключения к серверу ключей:
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/calculate/access_key. Your public key has been saved in /var/lib/calculate/access_key.pub. The key fingerprint is: SHA256:XFT3YqCScoAFeLmnzpfDO5BWSKiRQAKOcDkSHFBitT0 root@calculate The key's randomart image is: +---[RSA 2048]----+ |#B==.=o ..o . | |X+= B . o . o . | |.= = E. + o o .| |. o ++ o . . | | = S | | = | | + o . | | o * | | ..+ | +----[SHA256]-----+
Важно
Не задавайте пароль на закрытый ключ, иначе вы не сможете автоматически подключаться к сервису
Настройте параметры подключения к серверу хранения ключей:
/etc/conf.d/access
ACCESSHOST="access.example.org"
Вместо access.example.org укажите адрес сервера ключей. В случае указания нескольких серверов ключей службка access будет обращаться к ним по очереди, в порядке указания.
Добавьте открытый ключ сервера ключей:
access | Permanently added 'access.verevo.calculate.ru,10.3.0.4' (ECDSA) to the list of known hosts.
Перенесите на сервер ключей файл с заголовком раздела /root/cryptdata/header, ключ шифрования /root/cryptdata/key и открытый ключ подключения /var/lib/calculate/access_key.pub:
Password: header 100% 2048KB 60.1MB/s 2.0MB/s 00:00 key 100% 2048 3.3MB/s 2.0MB/s 00:00 access_key 100% 1675 2.4MB/s 2.0MB/s 00:00
Вместо access.example.org укажите адрес сервера ключей.
Добавьте данные шифрованного раздела на сервере ключей:
* All OK!
Вместо client1 укажите имя сервера зашифрованного раздела. PARTUUID устройства можно узнать, выполнив на клиенте:
/dev/sda5: PARTUUID="da958374-f891-4280-8c15-6e20b6cdd8f7"
Проверьте на клиенте, что сервер возвращает необходимые данные:
access | * Host: access.example.org ... [ ok ]
Смонтируйте шифрованный раздел:
access | * Caching service dependencies ... access | * Starting access ... access | * Host: access.example.org ... [ ok ]
Добавьте монтирование шифрованного раздела в автозагрузку:
rc-update add access
Не забудьте сделать копию директории /root/cryptdata на флешке, после чего удалите директорию с ключами:
rm -r /root/cryptdata