Пароли, резервное копирование и восстановление ГОСТ-томов¶
Защищённое хранилище НАЙС.ОС состоит из двух одинаково важных частей: зашифрованных данных и заголовка LUKS2, который содержит метаданные, ключевые слоты и параметры открытия. Потеря одной из этих частей может сделать другую бесполезной. Это руководство посвящено организации безопасного восстановления без изменения алгоритма шифрования полезных данных kuznyechik-xts-plain64.
1. Модель восстановления¶
До ввода реального ГОСТ-тома в эксплуатацию нужно ответить на вопросы:
- Где находится проверенная копия пользовательских данных?
- Есть ли копия LUKS-заголовка вне данного накопителя?
- Кто вправе знать аварийную парольную фразу?
- Каким способом проверяется доступ после смены пароля?
- Есть ли внешний загрузочный образ на случай поломки initramfs?
- Кто отвечает за операции с ключевыми слотами и их журналирование?
Пароль, файл ключа и сохранённый заголовок требуют разных правил хранения; они не заменяют друг друга.
2. Читаем конфигурацию без раскрытия ключей¶
Для примеров используется только ранее созданный учебный файл scratch.img:
IMG="$HOME/gost-storage-lab/scratch.img"
cryptsetup isLuks "$IMG" && echo 'LUKS2 обнаружен'
cryptsetup luksUUID "$IMG"
cryptsetup luksDump "$IMG"
В luksDump раздел Data segments описывает шифр пользовательских данных, Keyslots — способы защиты ключей тома, Digests — параметры контроля соответствующего материала. Для ГОСТ-тома НАЙС.ОС в практическом испытании полезные данные защищались «Кузнечиком», а ключевой слот — AES-XTS и Argon2id. Сама эта комбинация не свидетельствует о неправильном форматировании тома.
3. Создаём резервную копию заголовка¶
umask 077
IMG="$HOME/gost-storage-lab/scratch.img"
BACKUP="$HOME/gost-storage-lab/scratch-luks-header.backup"
cryptsetup luksHeaderBackup "$IMG" --header-backup-file "$BACKUP"
chmod 600 "$BACKUP"
ls -lh "$BACKUP"
Для рабочего диска IMG заменяется на строго проверенный постоянный путь к нужному LUKS-устройству; не снимайте «резервную копию» с произвольного раздела. Файл резервного заголовка необходимо передать в отдельное защищённое хранилище с доступом по роли и учётом выданных копий.
Почему заголовок следует считать чувствительным¶
Резервный файл может содержать зашифрованные ключевые слоты и метаданные, достаточные для независимого перебора пользовательских парольных фраз. Его нельзя хранить в публичном Git-репозитории, отправлять в обычные чаты или помещать в резервную копию, открытую широкому кругу сотрудников.
На корпоративном диске важны как резервная копия заголовка, так и резервирование данных, а также актуальность каждой копии после смены ключей. Заголовок не заменяет содержимое файловой системы.
4. Добавление резервного пароля¶
К существующему LUKS2-устройству можно добавить новый ключевой слот:
Команда попросит текущий действующий пароль и новую парольную фразу. Не помещайте её в аргументы командной строки или переменные, которые могут попасть в системные журналы и историю.
Вторую парольную фразу тестируют отдельным открытием тома под новым временным именем на неиспользуемом устройстве; тест не должен сопровождаться повторным luksFormat или mkfs.
Удаление ключевого слота (luksKillSlot или luksRemoveKey) выполняется только после успешной проверки другой работающей парольной фразы и сохранения резервной копии заголовка. Удаление последнего ключа лишит доступа ко всему тому даже при полностью исправном диске.
5. Если пароль не принимается¶
Сообщение No key available with this passphrase или его локализованный эквивалент не означает неисправность ГОСТ-шифра. Причины включают:
- неверный пароль, раскладку клавиатуры или невидимые пробелы;
- неправильный LUKS-контейнер (система открывает другой loop или другой диск);
- изменённые или удалённые ключевые слоты;
- повреждённый заголовок;
- неправильно переданный файл ключа.
Проверяйте устройство командой cryptsetup luksUUID, сопоставляйте его с задокументированным UUID и не выполняйте повторное форматирование. На реальном диске прежде чем менять метаданные, создайте поблочную копию неисправного носителя средствами утверждённой процедуры восстановления.
6. Восстановление заголовка: только после отдельной подготовки¶
cryptsetup luksHeaderRestore перезаписывает заголовок целевого тома. Это потенциально разрушительная операция: если после резервирования добавлялись или удалялись пароли, восстановление старого заголовка способно вернуть старое состояние ключевых слотов и отменить новые изменения. Нельзя применять её как средство исправления отсутствующего драйвера ядра или неправильного UUID GRUB.
Для обучения сначала создайте отдельную копию лабораторного файла, без выполнения операции на исходном рабочем томе:
IMG="$HOME/gost-storage-lab/scratch.img"
COPY="$HOME/gost-storage-lab/scratch-recovery-copy.img"
cp --reflink=auto -- "$IMG" "$COPY"
ls -lh "$COPY"
Проверка заголовка резервного файла и данных в копии производится на независимом стенде с утверждённой процедурой и резервным паролем. Прежде чем выполнять luksHeaderRestore даже на копии, убедитесь, что резервный заголовок относится к тому же LUKS-контейнеру, а исходник не используется никаким процессом.
Почему не следует сразу перезаписывать заголовок¶
Если причина аварии — ошибочная версия загруженного ядра, неверная запись GRUB2 или отсутствие компонентов открытия LUKS2 в initramfs, заголовок может быть полностью исправен. Встроенный «Кузнечик» не требует собственного файла .ko. Перезапись заголовка в такой ситуации только добавит риски. Сначала разграничьте ошибки доступа к устройству, ошибок криптоалгоритма, ошибки пароля и повреждение метаданных.
7. Если повреждена файловая система¶
Открытый LUKS-том и файловая система — разные уровни. Если cryptsetup open успешен, но mount сообщает об ошибке ext4, проблема может быть на уровне файловой системы, а не ГОСТ.
Сначала сохраните образ и соберите journalctl -k, затем проводите диагностику ФС в размонтированном состоянии. Не запускайте принудительное исправление fsck -y по живому томy, пока нет резервной копии.
8. Если система не загружается с ГОСТ-корнем¶
Перейдите к процедурам dracut/initramfs. Для диагностики нужны внешний загрузочный носитель, пакет модулей точно под установленное ядро, заголовок LUKS и корректные параметры открытия. Удалённый сервер должен иметь консоль гипервизора.
9. План восстановления, который должен быть у администратора¶
- [ ] Есть доступная копия заголовка, защищённая отдельно от тома.
- [ ] Есть независимая проверенная копия данных.
- [ ] Записан LUKS UUID и физический идентификатор диска.
- [ ] Утверждена процедура выдачи аварийного пароля.
- [ ] Установлены ответственные за ротацию и отзыв доступа.
- [ ] После замены пароля резервный заголовок обновляется по регламенту.
- [ ] Проверена возможность открытия копии тома на запасной машине НАЙС.ОС.
- [ ] Записаны версии ядер со встроенным «Кузнечиком», которые прошли проверку открытия тома.
- [ ] Приняты меры против попадания ключей в архивы журналов и резервное хранилище общего доступа.
См. также основное руководство по шифрованию, реальные диски и диагностику.