Подробный гайд по использованию пакета mokutil в операционной системе Astra Linux

Полный гайд по mokutil для Astra Linux 1.8: генерация ключей MOK, регистрация в UEFI, подпись модулей ядра при включённом Secure Boot.

2026.07.24                  


Подробный гайд по использованию пакета mokutil в операционной системе Astra LinuxПодробный гайд по использованию пакета mokutil в операционной системе Astra Linux Astra Linux 1.8 (как и другие современные дистрибутивы на базе Debian) поддерживает Secure Boot. Если этот режим включен, ядро системы будет загружать только те модули и драйверы, которые подписаны доверенными ключами. Если вам нужно установить сторонний драйвер (например, NVIDIA, VirtualBox, специфические Wi-Fi адаптеры) или собрать своё ядро, система его заблокирует.

Утилита mokutil позволяет добавить ваш личный ключ (Machine Owner Key — MOK) в базу доверенных ключей UEFI, чтобы система принимала подписанные вами модули.

Ниже представлен подробный пошаговый гайд.


Шаг 1. Установка необходимых пакетов

Откройте терминал и установите mokutil и openssl (он понадобится для генерации ключей):

sudo apt update
sudo apt install mokutil openssl

Проверьте, включен ли Secure Boot:

mokutil --sb-state

Если вывод показывает SecureBoot enabled, значит, вам действительно нужно использовать MOK для загрузки неподписанных модулей.


Шаг 2. Генерация пары ключей MOK

Нам нужно создать приватный ключ (для подписи модулей) и публичный ключ (для добавления в UEFI).

1. Создайте директорию для ключей и перейдите в нее:

   mkdir -p ~/mok-keys
   cd ~/mok-keys

2. Создайте конфигурационный файл для openssl. Откройте его в текстовом редакторе (например, nano):

   nano request.conf

Вставьте туда следующий текст (можете изменить CN на свое имя):

   [ req ]
   default_bits = 2048
   distinguished_name = req_distinguished_name
   prompt = no
   string_mask = utf8only
   x509_extensions = myexts

   [ req_distinguished_name ]
   CN = Denis Sergeevich MOK

   [ myexts ]
   basicConstraints=critical,CA:FALSE
   keyUsage=digitalSignature
   subjectKeyIdentifier=hash
   authorityKeyIdentifier=keyid

Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano).


3. Сгенерируйте сами ключи:

   openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -config request.conf

В результате у вас появятся два файла: MOK.priv (приватный, храните его в секрете!) и MOK.der (публичный, его мы будем регистрировать).


Шаг 3. Импорт ключа в очередь MOK

Теперь передадим публичный ключ в утилиту mokutil.

sudo mokutil --import MOK.der

Важный момент: Утилита попросит вас создать пароль для подтверждения операции.

  • Ограничения UEFI: Придумайте простой пароль, состоящий только из букв латинского алфавита и цифр (например, AstraMok2024).
  • Некоторые BIOS/UEFI имеют лимит на длину пароля (часто максимум 16 символов) и не поддерживают спецсимволы.
  • Введите пароль, а затем повторите его для подтверждения.

Проверьте, что ключ добавлен в очередь:

mokutil --list-new

Вы должны увидеть информацию о вашем ключе CN = Denis Sergeevich MOK.


Шаг 4. Регистрация ключа в UEFI (Самый важный шаг!)

Ключ пока не работает, его нужно подтвердить на уровне материнской платы.

1. Перезагрузите компьютер:

   sudo reboot
  1. Сразу после старта (до загрузки Astra Linux) появится синий экран Perform MOK management (MOK Manager).
  2. Используйте стрелки на клавиатуре и выберите Enroll MOK, нажмите Enter.
  3. Выберите Continue, нажмите Enter.
  4. Выберите Yes, нажмите Enter.
  5. Система попросит ввести пароль, который вы задали на Шаге 3.

Внимание:

Раскладка клавиатуры в UEFI почти всегда английская (QWERTY), даже если в BIOS выбрана другая. Если у вас клавиатура с русской гравировкой, набирайте пароль вслепую или ориентируйтесь на английские буквы. Цифры на цифровой клавиатуре (Numpad) обычно работают.


  1. После ввода пароля выберите Reboot.

Шаг 5. Проверка регистрации

После загрузки Astra Linux снова откройте терминал и проверьте список доверенных ключей:

mokutil --list-enrolled

Если в выводе есть ваш ключ (CN = MOK), значит, всё прошло успешно! Очередь новых ключей теперь должна быть пуста:

mokutil --list-new

Шаг 6. Практическое применение: Подпись модуля ядра

Теперь, когда ключ зарегистрирован, вы можете подписывать модули ядра. В Astra Linux для этого используется утилита kmodsign (или sign-file из исходников ядра). Допустим, вам нужно подписать модуль vboxdrv.ko (для VirtualBox).

Найдите путь к модулю:

modinfo -n vboxdrv

(Допустим, путь: /lib/modules/$(uname -r)/updates/dkms/vboxdrv.ko)


Подпишите его вашим приватным ключом:

sudo kmodsign sha512 ~/mok-keys/MOK.priv ~/mok-keys/MOK.der /lib/modules/$(uname -r)/updates/dkms/vboxdrv.ko

Проверьте подпись:

modinfo vboxdrv | grep sig

Вы должны увидеть строку signer: CN = MOK. Теперь модуль можно загружать (sudo modprobe vboxdrv), и Secure Boot его не заблокирует.


Дополнительные полезные команды mokutil

* Удалить ключ из доверенного списка:

  sudo mokutil --delete MOK.der

(Потребуется перезагрузка и подтверждение в синем меню UEFI).


* Сбросить все пользовательские ключи (очистить MOK):

  sudo mokutil --reset

(Также потребует подтверждения в UEFI при перезагрузке).


* Посмотреть состояние Secure Boot:

  mokutil --sb-state

* Отключить/Включить Secure Boot через mokutil (требует поддержки со стороны UEFI):

  sudo mokutil --sb 0  # Отключить
  sudo mokutil --sb 1  # Включить

Примечание:

В некоторых реализациях UEFI (особенно на серверах или в защищенных контурах Astra) изменение этого флага через mokutil может быть заблокировано на уровне прошивки, и менять его придется только через настройки BIOS.


Совет для работы с DKMS (Драйверы NVIDIA, VirtualBox и т.д.)

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

1. Скопируйте ключи в защищенную системную директорию:

   sudo mkdir -p /usr/local/share/mok-keys
   sudo cp ~/mok-keys/MOK.priv /usr/local/share/mok-keys/
   sudo cp ~/mok-keys/MOK.der /usr/local/share/mok-keys/
   sudo chmod 600 /usr/local/share/mok-keys/MOK.priv

  1. В Astra Linux (и Debian) обычно достаточно создать скрипт-хук для DKMS. Создайте файл /etc/dkms/framework.conf (если его нет) или добавьте в него настройку пути к ключам, либо используйте стандартный механизм signing_key.pem, который DKMS ищет в /var/lib/dkms/.

Самый надежный способ в Astra — создать скрипт /etc/kernel/postinst.d/sign-modules, который будет автоматически подписывать все новые модули в папке /lib/modules/$(uname -r)/updates/dkms/ вашим ключом MOK.priv при обновлении ядра.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Денис Аверко @Nymexis г. Омск

Комментарии

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