Защищаем grub

Если не предпринять никаких мер по защите grub, то любой пользователь, перезагрузив машину, может получить полный доступ к системе безо всякой авторизации. В статье "сброс пароля пользователя" я использовал именно метод незащищенного grub.

Меню grub

Если вы серьезно относитесь к безопасности ваших данных, то необходимо предпринять некоторые шаги.

Есть два метода: первый быстрый и легкий, а второй чуть длиннее и на аккуратность.

Итак, первый метод использовать программу StartUp Manager. Надо всего лишь перейти на вкладку Security, выставить "галочки" на "Password protect bootloader", "Password protect rescue mode" и задать сам пароль.

Второй метод - это правка файла меню загрузчика grub. Для этого откроем следующий файл:

gksudo gedit /boot/grub/menu.lst

Я использовал для опыта Ubuntu Hardy Alpha 4 на VirtualBox, но все нижеописанные действия подойдут для всех выпущенных на данный момент дистрибутивов Ubuntu Linux.

Ищем следующие строки:

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

Теперь открываем консоль и набираем:

grub

дальше набираем:

md5crypt

Вводим пароль и получаем md5-хеш пароля.

[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub> md5crypt

Password: ***
Encrypted: $1$t.IAS$SnCwRe6dEzbONBorjSo8D1

Полученный хеш копируем в буфер и приводим строчки menu.lst к виду (не забыв вставить полученный хеш):

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
password --md5 $1$t.IAS$SnCwRe6dEzbONBorjSo8D1
# password topsecret

Этим действием мы запретили редактировать параметры запуска ядра. Однако остался еще вариант с загрузкой в режиме восстановления. Для защиты и от этого надо просто добавить опцию lock в нужный пункт меню grub. Например:

title Ubuntu hardy (development branch), kernel 2.6.24-5-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-5-generic root=UUID=9b09ea66-5a91-43d9-aeaa-24781a3f8374 ro quiet splash locale=uk_UA
initrd /boot/initrd.img-2.6.24-5-generic
quiet

title Ubuntu hardy (development branch), kernel 2.6.24-5-generic (recovery mode)
root (hd0,0)
lock
kernel /boot/vmlinuz-2.6.24-5-generic root=UUID=9b09ea66-5a91-43d9-aeaa-24781a3f8374 ro single
initrd /boot/initrd.img-2.6.24-5-generic

title Ubuntu hardy (development branch), memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin
quiet

Сохраняем файл и перезагружаем компьютер для тестирования результата. Если вы все сделали правильно, то загрузка пункта меню по умолчанию будет проходить без пароля. Если будет нужно поменять параметры загрузки, то надо будет ввести пароль. На рисунке ниже видно результат неправильного ввода пароля.

Неправильный пароль

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

Снова без пароля не пускает

Для большей безопасности можно ограничить права доступа к файлу меню:

sudo chmod 600 /boot/grub/menu.lst*

На этом защиту grub можно считать завершенной. Хотя ничего не мешает загрузиться с LiveCD и получить доступ к файловой системе. И наконец снять винчестер и подключить к другому компьютеру. Но это уже другая история и отношения к grub не имеет.