Зачем нужен пароль на GRUB?
Как уже было написано выше эти действия повысят общую безопасность операционной системы. Менеджер загрузки ОС требует дополнительных настроек безопасности, так как при физическом доступе «продвинутый пользователь» может получить права суперпользователя в системе.
Многие дистрибутивы Linux после установки никак не защищают свой менеджер загрузки, а ведь изменив настройки входа можно получить полный доступ к системе, сменить все пароли и натворить еще много разных пакостей. По всем этим причинам следует самостоятельно принять меры по защите своей операционной системы на уровне GRUB.
Если Вы все еще сомневаетесь, то предлагаю прочитать статью «Восстановление пароля для root или угроза безопасности из коробки в Linux», в которой детально расписано как легко это сделать.
Способы установки пароля на менеджер загрузки ОС GRUB
Ниже приведены наиболее эффективные методы защиты менеджера загрузки GRUB. GRUB – это очень мощное средство в руках системного администратора, имеющее очень много параметров конфигурирования.
Редактировать будем конфигурационный файл /boot/grub/menu.lst. В некоторых дистрибутивах это /boot/grub/grub.conf.
Пароль в конфигурационный файл можно внести либо открытым текстом, либо его хеш-образ, полученный с помощью алгоритма MD5. Проще говоря, в GRUB можно задать пароль явным образом, то есть написать его как есть или же зашифровать его отображение. Ниже, для примера, приведен пароль сначала открытым текстом, а потом его хеш-образ:
password secretnoe_slovo
password $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
Эти две строчки, по сути, являются одним и тем же паролем.
Для защиты меню GRUB безопаснее использовать хеш-образ пароля, так как его невозможно прочесть в конфигурационном файле GRUB.
Пароль на редактирование конфигурации GRUB
Реализация данного способа позволит защитить конфигурацию GRUB от непреднамеренного редактирования. Все пункты меню будут доступны для запуска любому человеку, но их редактирование откроется, только после ввода пароля.
- Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
sudo cp /boot/grub/menu.lst /boot/grub/menu.bak
- Получаем хеш-функцию пароля.
# Входим в командную строку менеджера загрузки GRUB
grub
# Создаем хеш-образ пароля.
md5crypt
Результат:
grub> md5crypt
Password: **********
Encrypted: $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
Строчка $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 является хеш-образ введенного Вами пароля. Сочетание клавиш <Ctrl>+<С> позволяют выйти из командной строки GRUB.
Редактируем конфигурационный файл GRUB.
# Открываем конфиг GRUB
sudo nano /boot/grub/menu.lst
В начале файла, после строки с параметром timeout, добавляем:
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
В результате:
…
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
…
Сохраняем внесенные изменения. После перезагрузки компьютера в меню GRUB, отредактировать любой пункт меню без ввода пароля уже не получится. Чтобы ввести пароль, требуется нажать <p>.
Пароль на запуск пункта в GRUB
Этот способ поможет ограничить загрузку выбранных пунктов меню GRUB. Можно, к примеру, поставить пароль на загрузку системы в режиме recovery mode, который присутствует в семействе ОС *buntu и других дистрибутивах.
- Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
# sudo cp /boot/grub/menu.lst /boot/grub/menu.bak
- Получаем хеш-функцию пароля.
# Входим в командную строку менеджера загрузки GRUB
grub
# Создаем хеш-образ пароля.
md5crypt
Результат:
grub> md5crypt
Password: **********
Encrypted: $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
Строчка $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 является хеш-образ введенного Вами пароля. Сочетание клавиш <Ctrl>+<С> позволяют выйти из командной строки GRUB.
- Редактируем конфигурационный файл GRUB.
# Открываем конфиг GRUB
sudo nano /boot/grub/menu.lst
В конце конфигурационного файла находятся параметры запуска отображаемых пунктов меню GRUB. К параметрам пункта меню, требующего защиты, после строчки с со словом title, добавляем строку:
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
К примеру, добавляем строку в пункт загрузки системы в режиме recovery mode:
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
uuid 03d11ea5-2b80-4a5e-ba09-cd6909425070
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=03d11ea5-2b80-4a5e-ba$
initrd /boot/initrd.img-2.6.28-11-generic
- Сохраняем внесенные изменения. После перезагрузки компьютера в меню GRUB, загрузить этот пункт меню без ввода пароля уже не получится. Чтобы ввести пароль, требуется нажать <p>.
Скрыть некоторые пункты меня загрузки GRUB
В GRUB можно скрыть некоторые пункты меню, которые будут видны только после ввода пароля. К примеру, можно скрыть recovery mode вашей операционной системы.
Для этого нужно сделать два конфигурационных файла. В первом файле будут находится «открытые» пункты меню, загружаемые сразу при старте GRUB, а во втором пункты меню, которые нужно показать только после ввода пароля – «скрытые».
- Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
sudo cp /boot/grub/menu.lst /boot/grub/menu.bak
- Получаем хеш-функцию пароля.
# Входим в командную строку менеджера загрузки GRUB
grub
# Создаем хеш-образ пароля.
md5crypt
Результат:
grub> md5crypt
Password: **********
Encrypted: $1$GtD63/$3aUy5vj.INHE4J6UBk/u40
Строчка $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 является хеш-образ введенного Вами пароля. Сочетание клавиш <Ctrl>+<С> позволяют выйти из командной строки GRUB.
- Создаем второй конфигурационный файл, меню которого будет содержать скрытые пункты:
sudo cp /boot/grub/menu.lst /boot/grub/menu_hidden.lst
Для облегчения настройки второй файл создаем простым копированием первого с последующим редактированием обоих.
- Редактируем первый конфигурационный файл:
sudo nano /boot/grub/menu.lst
- В начале файла, после строки с параметром timeout, добавляем:
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 /boot/grub/menu_hidden.lst
Результат должен быть такой:
…
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10
password —md5 $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 /boot/grub/menu_hidden.lst
…
Эта строчка показывает системе, что после ввода пароля должен открыться другой файл – /boot/grub/menu_hidden.lst.
- В конце файла добавляем или удаляем пункты меню GRUB, которые должны быть видны или не видны в начале загрузки (в первом меню).
К примеру, чтобы скрыть режим recovery mode, нужно закомментировать или удалить строки файла, содержащие команды загрузки этого режима:
title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid 3d11ea5-2b80-4a5e-ba09-cd6909425070
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=03d11ea5-2b80-4a5e-ba$
initrd /boot/initrd.img-2.6.28-11-generic
quiet
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid 03d11ea5-2b80-4a5e-ba09-cd6909425070
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=03d11ea5-2b80-4a5e-ba$
initrd /boot/initrd.img-2.6.28-11-generic
title Windows Vista (loader)
rootnoverify (hd0,0)
savedefault
makeactive
chainloader +1
- Закрываем файл, сохраняя все изменения.
- Открываем второй файл для редактирования:
sudo nano /boot/grub/menu_hidden.lst
- Добавляем или удаляем пункты меню GRUB, которые должны быть видны или не видны после ввода пароля во втором меню.
В нашем примере, во втором меню должен присутствовать только режим загрузки системы recovery mode, поэтому комментируем или удаляем все остальные пункты:
title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid 3d11ea5-2b80-4a5e-ba09-cd6909425070
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=03d11ea5-2b80-4a5e-ba$
initrd /boot/initrd.img-2.6.28-11-generic
quiet
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid 03d11ea5-2b80-4a5e-ba09-cd6909425070
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=03d11ea5-2b80-4a5e-ba$
initrd /boot/initrd.img-2.6.28-11-generic
title Windows Vista (loader)
rootnoverify (hd0,0)
savedefault
makeactive
chainloader +1
- Сохраняем внесенные изменения. После перезагрузки компьютера попадаем в меню, где представлены только выбранные пункты меню. После набора пароля открывается второе меню со скрытыми пунктами. Чтобы ввести пароль, требуется нажать <p>.
Заключение
В качестве заключения хотелось бы добавить, что принцип защиты информации: «Что не разрешено, то запрещено» должен подразумевать:
- редактирование всех пунктов загрузки операционной системы должно быть запрещено;
- запуск операционной системы в recovery mode и других режимах, которые могут дать полный доступ в системе, должны быть запаролены;
- По возможности, рекомендуется скрыть администраторский режимы загрузки операционной системы, такие как recovery mode.
Сайт пистатый)
+1
>Zhmoskin
Спасибо!
>blacksun
Спасибо!
После обновления ядра, я так понимаю, появится пункт recovery mode этой версии ядра, соответственно опять надо будет его ручками запоролить?
да
Сайт очень полезный, многие статьи прогодились когда начинал работать в Debian‘е и сейчас пригождаются!!!:)
Спасибо Mut@NT‘у за статьи!
Очень рад слышать, что труд не напрасный. Спасибо!
невероятно полезный сайт. Спасибо автору.
Спасибо давно искал…
Спасибо Огромное Создателю сайта!
Много интересного, и в одном месте – это проста Находка!))
…ток-ща набрел на этот интересный сайт с бубунтового форума…
Ждем статью GRUB2: Установка и настройка пароля на менеджер ОС GRUB2
Про GRUB2 действительно хотелось бы почитать, ибо GRUB уже не так актуален… А автору сайта – респект!
А будет ли статья про GRUB2?
Да обязательно будет
А когда?
Спасибо за статью! Все понято и у меня быстро получилось воплотить это в жизнь!Про GRUB2 было бы тоже интересно почитать.
Не православно выходить из командной строки GRUB по Ctrl+C
у груба есть команда quit, которая прекрасно справляется с этой функцией
Благодарю, очень полезный материал.