Установка и настройка пароля на менеджер ОС GRUB

Зачем нужен пароль на 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 от непреднамеренного редактирования. Все пункты меню будут доступны для запуска любому человеку, но их редактирование откроется, только после ввода пароля.

  1. Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
    sudo cp /boot/grub/menu.lst /boot/grub/menu.bak
  2. Получаем хеш-функцию пароля.
    # Входим в командную строку менеджера загрузки 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 и других дистрибутивах.


    1. Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
      # sudo cp /boot/grub/menu.lst /boot/grub/menu.bak

    2. Получаем хеш-функцию пароля.

      # Входим в командную строку менеджера загрузки GRUB

      grub


      # Создаем хеш-образ пароля.

      md5crypt



      Результат:
      grub> md5crypt

      Password: **********
      Encrypted: $1$GtD63/$3aUy5vj.INHE4J6UBk/u40

      Строчка $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 является хеш-образ введенного Вами пароля. Сочетание клавиш <Ctrl>+<С> позволяют выйти из командной строки GRUB.


    3. Редактируем конфигурационный файл 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
    4. Сохраняем внесенные изменения. После перезагрузки компьютера в меню GRUB, загрузить этот пункт меню без ввода пароля уже не получится. Чтобы ввести пароль, требуется нажать <p>.

    Скрыть некоторые пункты меня загрузки GRUB

    В GRUB можно скрыть некоторые пункты меню, которые будут видны только после ввода пароля. К примеру, можно скрыть recovery mode вашей операционной системы.


    Для этого нужно сделать два конфигурационных файла. В первом файле будут находится «открытые» пункты меню, загружаемые сразу при старте GRUB, а во втором пункты меню, которые нужно показать только после ввода пароля – «скрытые».


    1. Создаем резервную копию конфигурационного файла /boot/grub/menu.lst, чтобы в случае ЧП восстановить все в первоначальное положение:
      sudo cp /boot/grub/menu.lst /boot/grub/menu.bak

    2. Получаем хеш-функцию пароля.

      # Входим в командную строку менеджера загрузки GRUB

      grub


      # Создаем хеш-образ пароля.

      md5crypt

      Результат:
      grub> md5crypt

      Password: **********
      Encrypted: $1$GtD63/$3aUy5vj.INHE4J6UBk/u40

      Строчка $1$GtD63/$3aUy5vj.INHE4J6UBk/u40 является хеш-образ введенного Вами пароля. Сочетание клавиш <Ctrl>+<С> позволяют выйти из командной строки GRUB.


    3. Создаем второй конфигурационный файл, меню которого будет содержать скрытые пункты:
      sudo cp /boot/grub/menu.lst /boot/grub/menu_hidden.lst

      Для облегчения настройки второй файл создаем простым копированием первого с последующим редактированием обоих.

    4. Редактируем первый конфигурационный файл:
      sudo nano /boot/grub/menu.lst

    5. В начале файла, после строки с параметром 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.

    6. В конце файла добавляем или удаляем пункты меню 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

    7. Закрываем файл, сохраняя все изменения.

    8. Открываем второй файл для редактирования:
      sudo nano /boot/grub/menu_hidden.lst

    9. Добавляем или удаляем пункты меню 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
    10. Сохраняем внесенные изменения. После перезагрузки компьютера попадаем в меню, где представлены только выбранные пункты меню. После набора пароля открывается второе меню со скрытыми пунктами. Чтобы ввести пароль, требуется нажать <p>.

    Заключение

    В качестве заключения хотелось бы добавить, что принцип защиты информации: «Что не разрешено, то запрещено» должен подразумевать:

    • редактирование всех пунктов загрузки операционной системы должно быть запрещено;
    • запуск операционной системы в recovery mode и других режимах, которые могут дать полный доступ в системе, должны быть запаролены;
    • По возможности, рекомендуется скрыть администраторский режимы загрузки операционной системы, такие как recovery mode.
    Зарубин Иван Эксперт по Linux и Windows

    Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

    Вдохновлен

    Комментарии (18)

    • Zhmoskin

      Сайт пистатый)

    • blacksun

      +1

    • Mut@NT

      >Zhmoskin
      Спасибо!

      >blacksun
      Спасибо!

    • Gagarin

      После обновления ядра, я так понимаю, появится пункт recovery mode этой версии ядра, соответственно опять надо будет его ручками запоролить?

    • Mut@NT

      да

    • Krab

      Сайт очень полезный, многие статьи прогодились когда начинал работать в Debian‘е и сейчас пригождаются!!!:)
      Спасибо Mut@NT‘у за статьи!

    • Mut@NT

      Krab: Сайт очень полезный, многие статьи прогодились когда начинал работать в Debian‘е и сейчас пригождаются!!!:) Спасибо Mut@NT‘у за статьи!

      Очень рад слышать, что труд не напрасный. Спасибо!

    • IDDQD

      невероятно полезный сайт. Спасибо автору.

    • Win

      Спасибо давно искал…

    • Спасибо Огромное Создателю сайта!
      Много интересного, и в одном месте – это проста Находка!))

      …ток-ща набрел на этот интересный сайт с бубунтового форума…

    • Ai

      Ждем статью GRUB2: Установка и настройка пароля на менеджер ОС GRUB2

    • mexx

      Про GRUB2 действительно хотелось бы почитать, ибо GRUB уже не так актуален… А автору сайта – респект!

    • mexx2

      А будет ли статья про GRUB2?

    • Mut@NT

      Ai: Ждем статью GRUB2: Установка и настройка пароля на менеджер ОС GRUB2

      mexx: Про GRUB2 действительно хотелось бы почитать, ибо GRUB уже не так актуален… А автору сайта – респект!

      mexx2: А будет ли статья про GRUB2?

      Да обязательно будет

    • Igor'

      Mut@NT: Mut@NT
      31 Октябрь, 16:03 # (Комментарий автора)

      Ai: Ждем статью GRUB2: Установка и настройка пароля на менеджер ОС GRUB2

      mexx: Про GRUB2 действительно хотелось бы почитать, ибо GRUB уже не так актуален… А автору сайта – респект!

      mexx2: А будет ли статья про GRUB2?

      Да обязательно будет

      А когда?

    • Спасибо за статью! Все понято и у меня быстро получилось воплотить это в жизнь!Про GRUB2 было бы тоже интересно почитать.

    • Ваня

      Не православно выходить из командной строки GRUB по Ctrl+C
      у груба есть команда quit, которая прекрасно справляется с этой функцией

    • Anonymous

      Благодарю, очень полезный материал.