Как защитить загрузчик GRUB паролем


В статье «Как в Linux сбросить забытый пароль входа» показано, что пароль для входа в Linux можно сбросить очень быстро и просто. Причём это может быть пароль root или любого пользователя.

Суть описанного в той статье метода заключается в редактировании опций загрузчика GRUB для загрузки в однопользовательский режим. Возможно кого-то такой простой способ обхода пароля root заставил задуматься: можно ли защитить Linux от смены пароля при загрузке? Точнее говоря, можно ли запретит менять опции загрузки в GRUB?

С одной стороны, — да, можно установить пароль на редактирование опций загрузчика GRUB, в данной статье будет показано как это настроить. Но, с другой стороны, нужно помнить — настройка делается в текстовых конфигурационных файлах GRUB и при физическом доступе к компьютеру с возможностью загрузки с LIVE дистрибутива можно обойти и эту защиту по смене пароля. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое на другой системе. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!

Рекомендуется: смотрите также статьи

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

Защиту паролем GRUB можно организовать двумя способами:

  1. Необходимо ввести пароль как на загрузку системы, так и на редактирование опций загрузки
  2. Загрузиться может любой пользователь без пароля, а для редактирования опций загрузки необходимо ввести пароль.

Рассмотрим оба этих варианты.

Примечание: если вы используете пароль загрузки для GRUB2, то экран заставки во время загрузки не будет отображаться.

Настройка пароля на загрузку системы и на редактирование опций загрузки

От root выполните следующие команды для установки пароля загрузки:

С помощью утилиты grub-mkpasswd-pbkdf2 сгенерируйте хеш пароля:

sudo grub-mkpasswd-pbkdf2

Введите и подтвердите пароль:

Введите пароль:
Повторно введите пароль:

Будет показана примерно такая строка:

Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.479775BC85F7B0D174D53F85338955DA8B79E35A641C7B814387D2E8CB3353DBB0925E9E2AB7D5986C2B995AD6E96A793D92F17CC1438AB226249AEDC629FDD0.867369FB465ED73F5CB495A375FCF294C1F39B8E0D481B33F4F5C4D245E140CD11D9135CBAE646DD5CC168C037EF4D5F6B935A2A32D1103F9A7ADB81AA9101D4

Из выведенных данных нужно взять всю строку «grub.pbkdf2.sha512.10000………….».

Теперь откройте файл /etc/grub.d/40_custom

sudo gedit /etc/grub.d/40_custom

и добавьте в него:

set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.479775BC85F7B0D174D5...


Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменения всеми, кроме пользователя root:

sudo chmod 711 /etc/grub.d/40_custom

Примечание: смотрите также «Команда chmod: как поменять права доступа к файлам и директориям».

Теперь запускаем создание нового конфигурационного файла загрузчика:


sudo grub-mkconfig -o /boot/grub/grub.cfg

После перезагрузки при попытке выбрать любой пункт меню вам будет предложено ввести имя пользователя и пароль. Введите root и пароль, который вы ввели в команде grub-mkpasswd-pbkdf2. Если учётные данные верны, система продолжит загрузку.

На самом деле, имя пользователя на этом этапе неважно — оно используется только как учётные данные для входа в загрузчик. Например, имя пользователя на моём компьютере mial, даже при вводе имени root и установленного пароля, я всё равно загружусь как пользователь mial. По этой причине в файл /etc/grub.d/40_custom можно указать любое имя пользователя, главное, не забудьте его.

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

С помощью утилиты grub-mkpasswd-pbkdf2 сгенерируйте хеш пароля:

sudo grub-mkpasswd-pbkdf2

Введите и подтвердите пароль:

Введите пароль:
Повторно введите пароль:

Будет показана примерно такая строка:

Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.479775BC85F7B0D174D53F85338955DA8B79E35A641C7B814387D2E8CB3353DBB0925E9E2AB7D5986C2B995AD6E96A793D92F17CC1438AB226249AEDC629FDD0.867369FB465ED73F5CB495A375FCF294C1F39B8E0D481B33F4F5C4D245E140CD11D9135CBAE646DD5CC168C037EF4D5F6B935A2A32D1103F9A7ADB81AA9101D4

Из выведенных данных нужно взять всю строку «grub.pbkdf2.sha512.10000………….».

Теперь откройте файл /etc/grub.d/40_custom

sudo gedit /etc/grub.d/40_custom

и добавьте в него:

set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.479775BC85F7B0D174D5...

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменения всеми, кроме пользователя root:

sudo chmod 711 /etc/grub.d/40_custom

Теперь откройте файл /etc/grub.d/10_linux и найдите пункт или пункты меню, которые вы хотите сделать доступными для загрузки без пароля:

sudo gedit /etc/grub.d/10_linux

К примеру, в моём случае это пункт:

CLASS="--class gnu-linux --class gnu --class os"

Добавьте к нему опцию --unrestricted, чтобы получилось так:

CLASS="--class gnu-linux --class gnu --class os --unrestricted"


Сохраните и закройте этот файл.

Теперь запустите создание нового конфигурационного файла загрузчика:

sudo grub-mkconfig -o /boot/grub/grub.cfg

В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике вводить не нужно. Но при попытке отредактировать опции загрузчика, например, если ввести «e», то будет предложено ввести пароль. Без ввода пароля не будет дан доступ к опциям загрузки.

Если нажать Enter без ввода пароля, то продолжится обычная загрузка, опции GRUB изменены не будут.


Рекомендуется Вам:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *