Как защитить загрузчик GRUB паролем
В статье «Как в Linux сбросить забытый пароль входа» показано, что пароль для входа в Linux можно сбросить очень быстро и просто. Причём это может быть пароль root или любого пользователя.
Суть описанного в той статье метода заключается в редактировании опций загрузчика GRUB для загрузки в однопользовательский режим. Возможно кого-то такой простой способ обхода пароля root заставил задуматься: можно ли защитить Linux от смены пароля при загрузке? Точнее говоря, можно ли запретит менять опции загрузки в GRUB?
С одной стороны, — да, можно установить пароль на редактирование опций загрузчика GRUB, в данной статье будет показано как это настроить. Но, с другой стороны, нужно помнить — настройка делается в текстовых конфигурационных файлах GRUB и при физическом доступе к компьютеру с возможностью загрузки с LIVE дистрибутива можно обойти и эту защиту по смене пароля. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое на другой системе. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!
Рекомендуется: смотрите также статьи
- Как надёжно зашифровать файлы, диски, флешку (инструкция по VeraCrypt)
- Как установить VeraCrypt в Linux
Тем не менее описанный метод, как минимум, может задержать или даже поставить в тупик неавторизованное для смены пароля лицо. А при принятии дополнительных мер — запрет на использование внешних устройств или контроль физического доступа, описанный способ может защитить от входа в однопользовательский режим.
Защиту паролем GRUB можно организовать двумя способами:
- Необходимо ввести пароль как на загрузку системы, так и на редактирование опций загрузки
- Загрузиться может любой пользователь без пароля, а для редактирования опций загрузки необходимо ввести пароль.
Рассмотрим оба этих варианты.
Примечание: если вы используете пароль загрузки для 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 изменены не будут.
Связанные статьи:
- Как в Linux сбросить забытый пароль входа (100%)
- Как установить Router Scan в Linux (82%)
- Как установить Intercepter-NG в Linux (82%)
- Как установить VeraCrypt в Linux (82%)
- Как в Linux взламывать пароли видеокартой и центральным процессором (80.8%)
- Как узнать, поддерживает ли беспроводная карта инжект (инъекцию) в Kali Linux (RANDOM - 1.2%)