• XSS.stack #1 – первый литературный журнал от юзеров форума

Ставим пароль на GRand Unified Bootloader (Grub)

zxc21

RAM
Пользователь
Регистрация
07.12.2018
Сообщения
141
Реакции
207
Без пароля на загрузчик, любой пользователь может войти в режим редактирования ядра и внести свои настройки в bootloader, чтобы исключить возможность менять конфигурацию загрузчика вне загруженной системы, нам нужно поставить на него свой пароль.
Конечно от онлайн нападок на машину это врятли спасёт, но от сторонних физических недоброжелателей, в полне таки сойдёт, (хотя и тут ось на флешке придёт на помощь)

Итак, когда мы говорим о парольной защите grub основные вещи которые мы должны знать:

Во первых, существуют 2 типа пользователей: обычный пользователь и суперпользователь (root)
  • Суперпользователь - создание записей загрузчика.
  • Обычный пользователь - использование записей загрузчика.
Во вторых это типы паролей:
  • обычный пароль - который хранится в открытом виде в конфигурационном файле.
  • Зашифрованный пароль - хранится в зашифрованном виде при помощи алгоритма кеширования PBKDF2.
Давайте рассмотрим структуру записей которые определяют пользователей и суперпользователей, определять их можно в файлах:
00_header и 40_custom внутри каталога /etc/grub.d/

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

password user1 gfhjkm1

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

set superusers="user1"

Таким образом пользователь становится привилегированным и имеет право на редактирование записей.

Открываем файл 00_header, опускаемся в самый низ, определяем сегмент файла "cat <<EOF EOF" и вносим изменения:

cat <<EOF
set superusers="user1"
password user1 passwd_1
EOF

И для завершения всего, после указания всех параметров, нам необходимо обновить файл grub.cfg для этого вводим:

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

=============================

Разумеется не безопасно хранить пароли в файлах в открытом виде, для этого можно использовать шифрование, за это отвечает утилита grub-mkpasswd-pbkdf2, в терминале вводим:

$ grub-mkpasswd-pbkdf2
Введите пароль:
Повторно введите пароль:
Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.AEBDB73556619C1667319465D2E3E1899AB7
B6F6FDEFF1D00D4701CC84CAA934AFDBBEA47E1EC31AAECA0D9E159C2B
077B8B30D7A41D366FA952CB102D976563.373C1E4EFDBE1AD3641BA08
B0CBC377D8D5BE2451CBE3C9D2450C6BBB321F58789B8441849D4034BA
D86BD0C92C7D695C01D3FA8DF35CADC42D64962C30530C1

Затем в конфигурационном файле 00_header указываем всё тоже самое, только к паролю добавляете через нижнее подчёркивание алгоритм хеширования _pbkdf2:

cat <<EOF
set superusers="user1"
password_pbkdf2 user1 grub.pbkdf2.sha512.10000.AEBDB73556619C1667319465D2E3E1899AB7
B6F6FDEFF1D00D4701CC84CAA934AFDBBEA47E1EC31AAECA0D9E159C2B
077B8B30D7A41D366FA952CB102D976563.373C1E4EFDBE1AD3641BA08
B0CBC377D8D5BE2451CBE3C9D2450C6BBB321F58789B8441849D4034BA
D86BD0C92C7D695C01D3FA8DF35CADC42D64962C30530C1

EOF

И так же после указания всех параметров, нам необходимо обновить файл grub.cfg:

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

=================================================

Поверхностно расскажу про файл 40_custom, так как в домашних условиях прибегать к его редактированию не вижу смысла (если только кроме вас машиной пользуются ещё человек 10 равшанов)
Файл 40_custom находится в /etc/grub.d/ файл, в отличии от 00_header данный файл позволяет нам зафиксировать записи и количество этих записей и чётко управлять какой пользователь за что отвечает:

set superusers="user1"
password user1 passwd_1
password user2 passswd_2
menuentry 'ОS_#1'{
...
}
menuentry 'ОS_#2' --users user2{
...
}

Здесь пользователь user1 может загружать и редактировать любую запись, все пользователи имеют право загружать ОS_№1 и только пользователь user2 имеет право загружать ОS_№2
В этом примере приведены пользователи с открытым паролем, но как и в случае с 00_header можно прописать шифрованные PBKDF2 пароли.
Также это можно прописать в grub.cfg на прямую, но дабы не загромождать его, в нём просто прописывается путь к 40_custom

Если вдруг вы всё таки по не осторожности забыли пароль, или кому-то потребовалось его восстановить, то с помощью LiveUsb приводите файл 00_header в свой первоначальный вид.
Это только один из способов запаролить загрузчик, можно обойтись "меньшей кровью" и все изменения произвести только в самом файле grub.cfg.
Также можно пойти другим путём и создать файл passwd и прописать его в grub.cfg, путей решения много и они многогранны как и сам Linux.
 
Ну пароль на загрузчик не зашитит вас от тех кто получит диск в свое распоряжение, но как указано в статье от длиных рук соседа по общаге может и защитит ( если времени у него будет не много + пасс на биос чтобы с усб не грузился ), в общем лучше с пасом чем без него.

P.S Full disc encryption наше все, забудьте про нешифрованные диски в 21 веке это стыдно товарищи.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх