dm-crypt с LUKS – /etc/crypttab с использованием ключевого файла или пароля

Вопрос или проблема

Я зашифровал свой домашний раздел, используя dm-crypt и заголовок LUKS. У меня есть два слота в его заголовке: первый – это пароль, а второй – файл ключа. У меня есть файл ключа на внешнем диске, который я использую только как “устройство для шифрования”. Мой /etc/crypttab выглядит так:

# <имя цели> <устройство источника>  <файл ключа>              <опции>
home            UUID="..."       /dev/sdb1:/home.key     luks,keyscript=/lib/cryptsetup/scripts/passdev,discard

Сейчас все работает хорошо, но я хотел бы, чтобы мой компьютер запрашивал ввод пароля в случае, если он не может найти устройство с файлом ключа. Я пытался добавить home в crypttab дважды. Первая запись была настроена на использование пароля и имела опцию timeout. Вторая была такой, как представлено выше. Это не работает.

Есть ли возможность настроить систему таким образом?

Что вам нужно, так это резервный пароль в слоте 1 – я размещу ссылку на учебник, который я использую с форумов Gentoo, но в общих чертах, направьте stdin (ваш kf) в fifo, что заставит запросить пароль, у вас получится kf + пароль и резервный пароль (в слоте 2)

СЛОТ 1:   файл ключа + пароль
СЛОТ 2:   резервный пароль (если слот 1 недоступен / поврежден или его пароль терпит ту же судьбу)

Ответ или решение

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

Общая конфигурация /etc/crypttab

Ваш текущий файл /etc/crypttab выглядит следующим образом:

# <target name> <source device>  <key file>               <options>
home            UUID="..."       /dev/sdb1:/home.key     luks,keyscript=/lib/cryptsetup/scripts/passdev,discard

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

Как обеспечить резервный ввод пароля

К сожалению, не получится просто добавить строку в /etc/crypttab дважды для одной и той же цели, так как это приведет к конфликтам. Вместо этого вы можете рассмотреть использование комбинации файла ключа и пароля таким образом, чтобы система требовала пароль в случае отсутствия ключа.

Шаги для реализации

  1. Убедитесь, что вы используете два слота в заголовке LUKS. В первом слоте должен быть ключ (файл ключа + пароль), во втором – просто пароль. Это делается путем использования команды cryptsetup luksAddKey.

  2. Прочитайте ключ из файла и заранее подготовьте очередь для команд. Это можно сделать через FIFO (First In First Out) специальный файл, который будет использоваться в качестве интерфейса для передачи данных.

  3. Настройка скрипта: вам понадобится подготовить небольшой скрипт, который будет проверять наличие ключа и при его отсутствии включать запрос пароля. Например, в классе скриптов /lib/cryptsetup/scripts/ вы можете создать свой файл ask_key.sh со следующим содержимым:

    #!/bin/bash
    
    KEYFILE="/dev/sdb1:/home.key"
    
    if [ -e "$KEYFILE" ]; then
       cat "$KEYFILE"
    else
       echo "Введите пароль для шифрования:"
       read -s password
       echo "$password"
    fi

    Не забудьте сделать скрипт исполняемым:

    chmod +x /lib/cryptsetup/scripts/ask_key.sh
  4. Обновление /etc/crypttab: обновите ваш crypttab, чтобы указать на новый скрипт:

    home            UUID="..."       /dev/sdb1:/home.key     luks,keyscript=/lib/cryptsetup/scripts/ask_key.sh,discard

Заключение

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

Для получения более подробных инструкций по конкретным командам и настройкам dm-crypt и LUKS, всегда стоит обращаться к официальной документации и руководству по administrированию.

Оцените материал
Добавить комментарий

Капча загружается...