Защита опций загрузчика GRUB паролём
Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!
Показать
Настройка пароля на загрузку системы и на редактирование опций загрузки
От имени пользователя root генерируется хеш пароля:
sudo grub-mkpasswd-pbkdf2
Будет показана примерно такая строка:
Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7
Пример показан на рисунке 1:
Рисунок 1. Пример генерации хеша пароля загрузки.
Из выведенных данных скопировать строку «grub.pbkdf2.sha512.10000………….» (полностью) и дописать в файл /etc/grub.d/40_custom:
set superusers="<имя>" password_pbkdf2 <имя> grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...
Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя root:
sudo chmod 711 /etc/grub.d/40_custom
Создание нового конфигурационного файла загрузчика:
sudo grub-mkconfig -o /boot/grub/grub.cfg
После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина <имя> и пароля, используемого в команде grub-mkpasswd-pbkdf2, если учётные данные верны, система продолжит загрузку.
N. B. Логин <имя> в файле /etc/grub.d/40_custom можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл каталога /etc/grub.d, если этот файл включён в grub.cfg. Файл /etc/grub.d/40_custom выбран потому, что он не перезаписывается при обновлении пакета GRUB.
P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле /etc/grub.d/10_linux и добавить опцию:
--unrestricted
Пример показан на рисунке 2:
Рисунок 2. Пример добавления опции класса загрузки в файл /etc/grub.d/10_linux.
В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.
P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле /etc/grub.d/30_os-prober вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки
--unrestricted
Пример показан на рисунке 3:
Рисунок 3. Пример добавления опции класса загрузки в файл /etc/grub.d/30_os-prober для всех найденных типов операционных систем.