Как зашифровать GRUB

Photo Ubuntu: pdf-шифрование и дешифрования pdf-файла при помощи qpdf

GRUB (GRand Unified Bootloader) загружает ОС и даёт доступ к параметрам ядра, recovery и командной строке. Если физический доступ к машине возможен, без пароля кто угодно может подменить root или загрузиться с live-носителя через правки menuentry. Пароль PBKDF2 на superuser в GRUB не шифрует диск, но закрывает правку меню и shell до входа в систему.

Что именно защищается

После настройки GRUB запрашивает логин и пароль при попытке:

  • редактировать пункты меню (клавиша e);
  • войти в командную строку GRUB (c);
  • при полной защите пунктов – иногда и при выборе загрузки, если не сделать исключения через --unrestricted.

Это дополнение к шифрованию диска (LUKS) и паролю BIOS/UEFI, а не замена им.

Пакеты

На Debian и Ubuntu обычно достаточно grub-common (утилита grub-mkpasswd-pbkdf2):

sudo apt update
sudo apt install grub-common

На RHEL/Alma/Rocky пакеты другие (grub2-tools), пути конфигов тоже. Ниже – схема для Debian/Ubuntu с update-grub.

Хеш пароля PBKDF2

sudo grub-mkpasswd-pbkdf2

Дважды введите пароль. На выходе строка вида:

PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.<hash>

Скопируйте целиком фрагмент grub.pbkdf2.sha512.10000.... – его вставите в конфиг. Исходный пароль в открытом виде в файлы не пишите.

Конфиг: /etc/grub.d/40_custom

Правки в 40_custom переживут update-grub, в отличие от ручной правки только /boot/grub/grub.cfg.

sudo nano /etc/grub.d/40_custom

В конец файла (после заголовка exec tail) добавьте, подставив свой хеш:

set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.<hash>

Имя superuser здесь условное (root – просто логин GRUB, не системный root). Можно задать другое имя и несколько пользователей.

Если нужно, чтобы обычная загрузка ОС шла без пароля, а защита срабатывала только на edit/shell, в сгенерированных menuentry обычно добавляют --unrestricted (через правки скриптов в /etc/grub.d/ или патч шаблонов). Без этого GRUB может спрашивать пароль и при выборе пункта загрузки – заранее продумайте сценарий, особенно на удалённых серверах с IPMI/KVM.

Применение

sudo update-grub

На части дистрибутивов эквивалент – grub2-mkconfig -o /boot/grub2/grub.cfg. После перезагрузки проверьте: e на пункте меню должно запросить учётку GRUB.

Если забыли пароль

Без доступа к загрузочному меню правка GRUB с live-USB или recovery (если оно не закрыто) всё ещё возможна: смонтировать корень, поправить 40_custom / grub.cfg, пересобрать конфиг. Поэтому пароль GRUB – барьер от случайного и «быстрого» вмешательства, а не полная защита от владельца live-диска. Храните пароль в менеджере секретов; перед экспериментами сделайте копию /etc/grub.d/40_custom.

Краткий чеклист

  • бэкап 40_custom и понимание, как откатиться с live-среды;
  • сложный пароль, только PBKDF2-хеш в конфиге;
  • update-grub и проверка edit/shell;
  • отдельно – шифрование диска и пароль UEFI, если угроза – физический доступ.

Итог: пароль superuser в GRUB – быстрый и стандартный шаг для рабочих станций и bare-metal, где меню загрузки доступно локально. На VPS с консолью провайдера смысл тот же, но восстановление проще через панель хостера.

Источники и ссылки


Комментарии загружаются…