Grub загрузка windows без пароля

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1

  • Astra Linux Common Edition 2.12

В общем случае, после внесения изменений в конфигурационные файлы загрузчика (файл /etc/default/grub или файлы в каталоге /etc/grub.d/) для вступления изменений в силу следует выполнить команду обновления загрузчика: 

sudo update-grub

При этом будет переписан файл /boot/grub/grub.cfg, и все внесенные в него изменения будут утеряны.

Для внесения изменений в конфигурационные файлы требуются права суперпользователя (при включенном МКЦ — права суперпользователя с высоким уровнем целостности).

Параметры PARSEC

См. статью Параметры модуля ядра Parsec, задаваемые при загрузке.

Включение/выключение plymouth

Включение/выключение plymouth при загрузке управляется наличием/отсутствием опции splash в строке значений параметра GRUB_CMDLINE_LINUX (для всех режимов загрузки) или в параметрах GRUB_CMDLINE_LINUX_DEFAULT, GRUB_CMDLINE_LINUX_HARDENED для соответствующих режимов.

Например:

  • Использовать plymouth в обычном режиме загрузки:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash parsec.max_ilev=63"

Установка и изменение пароля для меню загрузчика

Установка и изменение пароля командой grub-set-password

Начиная с очередного обновления Astra Linux Special Edition 1.8 установка и изменение пароля системного загрузчика может быть выполнена командой:

sudo grub-set-password

Созданный таким образом пароль сохраняется в файле /boot/grub/user.cfg. Пароль заданный в файле /etc/grub.d/07_password при этом игнорируется.

Установка и изменение пароля в файле /etc/grub.d/07_password

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

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

  1. Для генерации хеша выполнить команду и дважды ввести новый пароль:

    grub-mkpasswd-pbkdf2

    Полученный хеш (начиная со слова grub) скопировать в буфер (например, выделив его с помощью мыши, и нажав правую кнопку мыши выбрать «копировать»).

  2. С помощью любого текстового редактора, например редактора nano,  внести изменения в файл /etc/grub.d/07_password (создать такой файл, если его нет).  В результате редактирования должен получиться текст вида:

    #!/bin/bash
    cat << EOF
    set superusers=»username«
    password_pbkdf2 username grub.pbkdf2.sha512.10000.9C319610666………..
    EOF

    Цветами условно обозначены имя пользователя (красный) и созданный кеш (зеленый), в реальном редакторе цветовых обозначений нет.

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

    sudo chmod 700 /etc/grub.d/07_password

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

    sudo update-grub

    Можно отключить запрос пароля grub, например для записи Windows. Для этого в файла /boot/grub/grub.cfg в параметрах загрузочного меню (строка, начинающаяся с «menuentry») указать (добавить) параметр —unrestricted, например:

    ... --class gnu-linux --class gnu --class os --unrestricted ...

    Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.

    Для того, чтобы изменения сделать постоянными нужный элемент меню можно добавить в файл /etc/grub.d/40_custom, указав в нем все необходимые параметры. Например, для создания элемента меню «Windows 10 без пароля» для загрузки Windows 10 без запроса пароля (опция —unrestricted) добавить следующие строки:

    menuentry "Windows 10 без пароля" --class windows --class os --unrestricted {
       insmod ntfs
       search --no-floppy --set=root --fs-uuid <UUID_загрузочного_раздела_Windows>
       ntldr /bootmgr
    }
    
    

    Для получения значения UUID загрузочного раздела Windows можно использовать команду:

    В качестве образца для создания своего элемента меню можно использовать записи menuentry из файла /boot/grub/grub.cfg.

Запрет загрузки в режиме восстановления. Время ожидания выбора при загрузке

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

  1. Открыть в редакторе файл /etc/default/grub:

    sudo nano  /etc/default/grub

  2. Раскомментировать строку:

    GRUB_DISABLE_RECOVERY=»true»

  3. Дополнительно в этом же файле можно уменьшить время ожидания при выборе варианта загрузки (по умолчанию — 5 секунд), например, совсем скрыв меню (в таком случае в меню НЕЛЬЗЯ будет попасть, зажав при загрузке клавишу Shift, и возможности выбора ОС/ядра не будет):

  4. Для скрытия загрузчика с сохранением возможности переключения клавишей Shift на этап выбора ОС/ядра к параметру GRUB_TIMEOUT=0 добавить GRUB_HIDDEN_TIMEOUT=5:

    GRUB_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT=5

  5. Сохранить изменения, выйти из редактора;

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

    sudo update-grub

Пункты меню, позволяющие выбрать для загрузки режим восстановления, можно убрать из меню и путем редактирования файла /boot/grub/grub.cfg (см. ниже, но эти изменения не будут сохраняться после выполнения команды обновления загрузчика update-grub.

Запрет выбора загрузки ядра GENERIC

Для того, чтобы запретить все варианты загрузки, кроме варианта HARDENED:

  1.  С правами суперпользователя открыть в редакторе файл /boot/grub/grub.cfg:

    sudo nano /boot/grub/grub.cfg

  2. Закомментировать ненужные блоки кода, начинающиеся с menuentry, например:

    #menuentry ‘AstraLinuxCE GNU/Linux, с Linux 4.15.3-1-generic’ —class astralinuxce —class gnu-linux —class gnu —class os —unrestricted $menuentry_id_option ‘gnulinux-4.15.3-1-generic-advanced-f923f219-185e-4747-9066-6b09fd0103ae’ {
    #    load_video
    #    insmod gzio
    #    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    #    insmod part_msdos
    #    insmod ext2
    #    set root=’hd0,msdos1′
    #    if [ x$feature_platform_search_hint = xy ]; then
    #      search —no-floppy —fs-uuid —set=root —hint-bios=hd0,msdos1 —hint-efi=hd0,msdos1 —hint-baremetal=ahci0,msdos1  f923f219-185e-4747-9066-6b09fd0103ae
    #    else
    #      search —no-floppy —fs-uuid —set=root f923f219-185e-4747-9066-6b09fd0103ae
    #    fi
    #    echo    ‘Загружается Linux 4.15.3-1-generic …’
    #    linux    /boot/vmlinuz-4.15.3-1-generic root=UUID=f923f219-185e-4747-9066-6b09fd0103ae ro  quiet net.ifnames=0
    #    echo    ‘Загружается начальный виртуальный диск …’
    #    initrd    /boot/initrd.img-4.15.3-1-generic
    #}

Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.

Настройка выбора ядра для загрузки

Для указания ядра, загружаемого по умолчанию используется параметр GRUB_DEFAULT в файле /etc/default/grub. Значением этого параметра может быть:

  • число — порядковый номер элемента выбора ядра меню загрузчика. Нумерация начинается с нуля;
  • идентификатор элемента меню загрузчика. Например:

    GRUB_DEFAULT=gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d
  • специальное значение saved — использовать последнее загруженное ядро (для сохранения информации о последнем загруженном ядре необходимо добавить параметр GRUB_SAVEDEFAULT="true"):

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

sudo grep ^menuentry /boot/grub/grub.cfg 

Пример вывода команды:

menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {
menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' {

Идентификаторы элементов меню, которые можно использовать для задания умолчания, находятся после параметра $menuentry_id_option.

Получить список элементов меню с их номерами можно командой:

sudo grep ‘menuentry ‘ /boot/grub/grub.cfg | cut -f 2 -d «‘» | nl -v 0

Пример вывода команды:

     0  AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency
     1  AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode)
     2  AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened
     3  AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode)
     4  AstraLinux GNU/Linux, with Linux 5.15.0-70-generic
     5  AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode)
     6  AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened
     7  AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode)
     8  AstraLinux GNU/Linux, with Linux 5.10.176-1-generic
     9  AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode)
    10  AstraLinux GNU/Linux, with Linux 5.4.0-110-generic
    11  AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)

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

sudo update-grub

Порядок именования сетевых интерфейсов

Порядок именования сетевых интерфейсов определяется значением параметра GRUB net.ifnames:

  • net.ifnames=0 — использовать имена вида ethX;
  • net.ifnames=1 — использовать имена вида enpXsY или enoX.

Подробности см. по ссылке: Поиск и именование сетевых интерфейсов.

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

CQRS (Command Query Responsibility Segregation) на Java

Javaican 12.05.2025

CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .

Шаблоны и приёмы реализации DDD на C#

stackOverflow 12.05.2025

Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .

Исследование рантаймов контейнеров Docker, containerd и rkt

Mr. Docker 11.05.2025

Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .

Micronaut и GraalVM — будущее микросервисов на Java?

Javaican 11.05.2025

Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .

Случается так, что установлена windows второй системой и GRUB. В случае, если при каждом входе требуется ввести пароль, а это напрягает, необходимо найти в конфиге /boot/grub/grub.cfg строку menuentry и добавить опцию —class os —unrestricted

На обложке снова картина Брюллова «Смерть Инессы Де Кастро».

«Инесса Де Кастро — фаворитка португальского короля Педру первого, после смерти признанная его женой. История их любви считается одной из самых ярких в португальской истории.

Картину Карл Брюллов написал, когда находился в Милане, и на написание он потратил всего 17 дней. Прошло столько времени, а картиной до сих пор восхищаются и испытывают трепет. Полотно пронизано драматизмом – Брюллов, как и всегда, смог мастерски передать исторический сюжет.»

Содержание

  1. HackWare.ru
  2. Этичный хакинг и тестирование на проникновение, информационная безопасность
  3. Как защитить загрузчик GRUB паролем
  4. Настройка пароля на загрузку системы и на редактирование опций загрузки
  5. Как включить редактирование опций GRUB по паролю, но загрузиться может любой пользователь
  6. Пароль на пункты меню Grub 2.00 (начиная с Ubuntu 12.10)
  7. Установка и настройка пароля на менеджер ОС GRUB
  8. Содержание

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как защитить загрузчик GRUB паролем

В статье «Как в Linux сбросить забытый пароль входа» показано, что пароль для входа в Linux можно сбросить очень быстро и просто. Причём это может быть пароль root или любого пользователя.

Суть описанного в той статье метода заключается в редактировании опций загрузчика GRUB для загрузки в однопользовательский режим. Возможно кого-то такой простой способ обхода пароля root заставил задуматься: можно ли защитить Linux от смены пароля при загрузке? Точнее говоря, можно ли запретит менять опции загрузки в GRUB?

С одной стороны, — да, можно установить пароль на редактирование опций загрузчика GRUB, в данной статье будет показано как это настроить. Но, с другой стороны, нужно помнить — настройка делается в текстовых конфигурационных файлах GRUB и при физическом доступе к компьютеру с возможностью загрузки с LIVE дистрибутива можно обойти и эту защиту по смене пароля. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое на другой системе. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!

Рекомендуется: смотрите также статьи

Тем не менее описанный метод, как минимум, может задержать или даже поставить в тупик неавторизованное для смены пароля лицо. А при принятии дополнительных мер — запрет на использование внешних устройств или контроль физического доступа, описанный способ может защитить от входа в однопользовательский режим.

Защиту паролем GRUB можно организовать двумя способами:

  1. Необходимо ввести пароль как на загрузку системы, так и на редактирование опций загрузки
  2. Загрузиться может любой пользователь без пароля, а для редактирования опций загрузки необходимо ввести пароль.

Рассмотрим оба этих варианты.

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

Настройка пароля на загрузку системы и на редактирование опций загрузки

От root выполните следующие команды для установки пароля загрузки:

С помощью утилиты grub-mkpasswd-pbkdf2 сгенерируйте хеш пароля:

Введите и подтвердите пароль:

Будет показана примерно такая строка:

Из выведенных данных нужно взять всю строку «grub.pbkdf2.sha512.10000………….».

Теперь откройте файл /etc/grub.d/40_custom

и добавьте в него:

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменения всеми, кроме пользователя root:

Теперь запускаем создание нового конфигурационного файла загрузчика:

После перезагрузки при попытке выбрать любой пункт меню вам будет предложено ввести имя пользователя и пароль. Введите root и пароль, который вы ввели в команде grub-mkpasswd-pbkdf2. Если учётные данные верны, система продолжит загрузку.

На самом деле, имя пользователя на этом этапе неважно — оно используется только как учётные данные для входа в загрузчик. Например, имя пользователя на моём компьютере mial, даже при вводе имени root и установленного пароля, я всё равно загружусь как пользователь mial. По этой причине в файл /etc/grub.d/40_custom можно указать любое имя пользователя, главное, не забудьте его.

Как включить редактирование опций GRUB по паролю, но загрузиться может любой пользователь

С помощью утилиты grub-mkpasswd-pbkdf2 сгенерируйте хеш пароля:

Введите и подтвердите пароль:

Будет показана примерно такая строка:

Из выведенных данных нужно взять всю строку «grub.pbkdf2.sha512.10000………….».

Теперь откройте файл /etc/grub.d/40_custom

и добавьте в него:

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменения всеми, кроме пользователя root:

Теперь откройте файл /etc/grub.d/10_linux и найдите пункт или пункты меню, которые вы хотите сделать доступными для загрузки без пароля:

К примеру, в моём случае это пункт:

Добавьте к нему опцию —unrestricted, чтобы получилось так:

Сохраните и закройте этот файл.

Теперь запустите создание нового конфигурационного файла загрузчика:

В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике вводить не нужно. Но при попытке отредактировать опции загрузчика, например, если ввести «e», то будет предложено ввести пароль. Без ввода пароля не будет дан доступ к опциям загрузки.

Если нажать Enter без ввода пароля, то продолжится обычная загрузка, опции GRUB изменены не будут.

Пароль на пункты меню Grub 2.00 (начиная с Ubuntu 12.10)

Задача: запаролить все пункты меню нового Grub 2.00 (появился впервые начиная с версии Ubuntu 12.10) кроме дефолтной загрузки.

Меню Grub 2.00 выглядит следующим образом:
Ubuntu
Дополнительные параметры для Ubuntu (включает в себя подпункты Ubuntu, с Linux 3.5.0-17-generic и Ubuntu, с Linux 3.5.0-17-generic (режим восстановления))
Memory test (memorytest86+)
Memory test (memorytest86+, serial console 115200)

Мы собираемся запаролить все пункты меню, кроме пункта Ubuntu, чтоб никто кроме нас не смог получить доступ к режиму восстановлению, командной строке и не сбросил пароль. Для этого:

1. генерируем хэш пароля:
grub-mkpasswd-pbkdf2
Пример (пароль при вводе не отображается):
Enter password:
Reenter password:
Your PBKDF2 is grub.pbkdf2.sha512.10000.783FF454C75813562C035726A694A56B4E3B010B7816A3F903D264255B6BDAEBD61C6DC67020C3A09D400B28E68CF682355CB1EA99AF0287207AFDC2A01D3D5B.C097CD29EC739953EE1A747F7C2CA7C75DA8450DE4270CA609DB02A83A979051EDD2507ED372FC7A33C11EBDE23BF3A67C60C74C7F2753BF1359325468EF6DB7

2. создаем файл конфигурации паролей
sudo touch /etc/grub.d/05_password
редактируем его nano
sudo nano /etc/grub.d/05_password
наполняем файл следующим содержанием (перед grub.pbkdf2 пробел, а не новая строчка!):
echo «Setting password protection. » >&2
cat
, где имя_пользователя — имя вашего пользователя, например, nockdown
grub.pbkdf2.sha512.10000.783FF454C75813562C035726A694A56B4E3B010B7816A3F903D264255B6BDAEBD61C6DC67020C3A09D400B28E68CF682355CB1EA99AF0287207AFDC2A01D3D5B.C097CD29EC739953EE1A747F7C2CA7C75DA8450DE4270CA609DB02A83A979051EDD2507ED372FC7A33C11EBDE23BF3A67C60C74C7F2753BF1359325468EF6DB7 — вставляем свой, сгенерированный пунктом выше
перед grub.pbkdf2 пробел, а не новая строчка!

сохраняем файл в nano:
ctrl+O
выходим из nano:
ctrl+x

выставляем права на файл 05_password
sudo chmod u+x,go-rw /etc/grub.d/05_password

3. Основным файлом конфигурации является /boot/grub/grub.cfg , который автоматически генерируется скриптами из файла /etc/default/grub, где хранятся основные настройки для GRUB

Редактируем файл /etc/default/grub
sudo nano /etc/default/grub
Раскомментируем (убираем # в начале) строчку
GRUB_HIDDEN_TIMEOUT=0
а также изменим значение GRUB_TIMEOUT
GRUB_TIMEOUT=0

сохраняем файл в nano:
ctrl+O
выходим из nano:
ctrl+x

4. Пароль на пункты меню. Редактируем файл /etc/grub.d/10_linux
sudo nano /etc/grub.d/10_linux

Находим глазами или поиском ctrl+W (echo «menuentry ‘$(echo «$os») абзац:

fi
echo «menuentry ‘$(echo «$title» | grub_quote)’ $ \$menuentry_id_option ‘gnulinux-$version-$type-$boot_device_id’ <» | sed «s/^/$submenu_indentation/»
else
echo «menuentry ‘$(echo «$os» | grub_quote)’ $ \$menuentry_id_option ‘gnulinux-simple-$boot_device_id’ <» | sed «s/^/$submenu_indentation/»
fi
echo «recordfail» | sed «s/^/$submenu_indentation/»

Как сообщает хелп:
If the —unrestricted option is used for a menu entry, then that entry is unrestricted. If the —users option is not used for a menu entry, then that only superusers are able to use it.
Нам нужно добавить опцию —unrestricted к тому пункту меню, который мы не собираемся паролить. Если этого не сделать или не добавить опции —users, то Grub будет спрашивать пароль на загрузку всегда. И так, добавляем опцию —unrestricted в 4ю строчку приведенного выше фрагмента, чтоб получилось:
fi
echo «menuentry ‘$(echo «$title» | grub_quote)’ $ \$menuentry_id_option ‘gnulinux-$version-$type-$boot_device_id’ <» | sed «s/^/$submenu_indentation/»
else
echo «menuentry ‘$(echo «$os» | grub_quote)’ $ —unrestricted \$menuentry_id_option ‘gnulinux-simple-$boot_device_id’ <» | sed «s/^/$submenu_indentation/»
fi
echo «recordfail» | sed «s/^/$submenu_indentation/»

сохраняем файл в nano:
ctrl+O
выходим из nano:
ctrl+x

5. Применяем изменения в конфигурации Grub командой:
sudo update-grub

6. Перезагружаемся
sudo shutdown -r now

В результате:
1) Kubuntu грузится по умолчанию, без запросов пароля на стадии загрузчика Grub,
2) меню Grub по умолчанию не отображается,
3) попасть в меню Grub можно лишь удерживая shift при загрузке,
4) для выбора любого пункта меню, отличного от дефолтной загрузки, потребуется ввести имя superuser’а и пароль, которые мы задали.

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

В статье рассказано как установить пароль на менеджер загрузки ОС GRUB. Эти действия несомненно повысят общую безопасность Вашей системы. Помогут ограничить доступ к некоторым режимам загрузки операционной системы или ограничить доступ на загрузку системы в целом. Установка пароля дело быстрое и не займет у Вас много времени.

Содержание

Как уже было написано выше эти действия повысят общую безопасность операционной системы. Менеджер загрузки ОС требует дополнительных настроек безопасности, так как при физическом доступе «продвинутый пользователь» может получить права суперпользователя в системе.

Многие дистрибутивы Linux после установки никак не защищают свой менеджер загрузки, а ведь изменив настройки входа можно получить полный доступ к системе, сменить все пароли и натворить еще много разных пакостей. По всем этим причинам следует самостоятельно принять меры по защите своей операционной системы на уровне GRUB.

Если Вы все еще сомневаетесь, то предлагаю прочитать статью «Восстановление пароля для root или угроза безопасности из коробки в Linux», в которой детально расписано как легко это сделать.

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

Редактировать будем конфигурационный файл /boot/grub/menu.lst. В некоторых дистрибутивах это /boot/grub/grub.conf.

Пароль в конфигурационный файл можно внести либо открытым текстом, либо его хеш-образ, полученный с помощью алгоритма MD5. Проще говоря, в GRUB можно задать пароль явным образом, то есть написать его как есть или же зашифровать его отображение. Ниже, для примера, приведен пароль сначала открытым текстом, а потом его хеш-образ:

Эти две строчки, по сути, являются одним и тем же паролем.

Для защиты меню GRUB безопаснее использовать хеш-образ пароля, так как его невозможно прочесть в конфигурационном файле GRUB.

Реализация данного способа позволит защитить конфигурацию GRUB от непреднамеренного редактирования. Все пункты меню будут доступны для запуска любому человеку, но их редактирование откроется, только после ввода пароля.

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

grub> md5crypt

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

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

Редактируем конфигурационный файл GRUB.

Этот способ поможет ограничить загрузку выбранных пунктов меню GRUB. Можно, к примеру, поставить пароль на загрузку системы в режиме recovery mode, который присутствует в семействе ОС *buntu и других дистрибутивах.

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

grub> md5crypt

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

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

Редактируем конфигурационный файл GRUB.

В конце конфигурационного файла находятся параметры запуска отображаемых пунктов меню GRUB. К параметрам пункта меню, требующего защиты, после строчки с со словом title, добавляем строку:

К примеру, добавляем строку в пункт загрузки системы в режиме recovery mode:

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

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

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

grub> md5crypt

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

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

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

In my last article I shared the steps to set GRUB2 password for protecting the grub file so that non-authorized users cannot modify the grub entry at the boot loader stage. But what if you wish to protect GRUB2 from unauthorized access so no one else other than the specified user can boot the system from your kernel.

How to protect GRUB2 from booting kernel without password

GRUB2 offers two types of password protection:

  • Password is required for modifying menu entries but not for booting existing menu entries;
  • Password is required for modifying menu entries and for booting one, several, or all menu entries.

The steps to set password and protect GRUB2 for both the above use case is same. Setting a password using the grub2-setpassword prevents menu entries from unauthorized modification but not from unauthorized booting a kernel at boot up stage.

WARNING:

If you forget your GRUB2 password, you will not be able to boot the entries you reconfigure in the following procedure

Steps to protect GRUB2 from booting kernel without password

First of all create a password using grub2-setpassword and root user.

# grub2-setpassword
Enter password:
Confirm password:

This command will create (if already not existing) or update the content of /boot/grub2/user.cfg with the hash password

# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.BB05A464F1E8C1AFC62CAE808679084D07B2DB9635934A8B7640BF84329455114E36001854108B7080D0A8A6335CBCBBA3E7B86BDF7468F307EE4EEFDCC294E2.CED195B269E2C60A94B5C61EFCF6B610383C306D5313CDB65DBE8063C7B8BDB1E571BD4661D398A7626878BF6055435658741D804F01A8E679DC69E8510B72A0

Open the /boot/grub2/grub.cfg file.

Find the boot entry that you want to protect with password by searching for lines beginning with menuentry.

Delete the --unrestricted parameter from the menu entry block, for example

menuentry 'Red Hat Enterprise Linux Server (3.10.0-862.6.3.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.6.3.el7.x86_64-advanced-eeec84ef-a61a-4907-adba-3a1ed52a144b' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod part_msdos
        insmod diskfilter
        insmod mdraid1x
        insmod ext2
        set root='mduuid/8cde9b0cbcafd5dc9814309e952e758d'

After the changes the content should look like

menuentry 'Red Hat Enterprise Linux Server (3.10.0-862.6.3.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.10.0-862.6.3.el7.x86_64-advanced-eeec84ef-a61a-4907-adba-3a1ed52a144b' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod part_msdos
        insmod diskfilter
        insmod mdraid1x
        insmod ext2
        set root='mduuid/8cde9b0cbcafd5dc9814309e952e758d'

Save and close the file.

NOTE:

The changes done in this file will be overwritten every time grub2-mkconfig is used to regenerate initramfs file. So every time you call grub2-mkconfig, you must re follow the above steps

Reboot your node to validate the changes. Once the system reaches the boot loader stage, it will prompt for username and password (assuming the default kernel access is restricted)

Password protect all the kernel entries in GRUB2

If you wish to password protect all the kernel entries available in your grub2.cfg then you can delete --unrestricted parameter from /etc/grub.d/10_linux

Take a backup of existing file

# /etc/grub.d/10_linux /etc/grub.d/10_linux.bkp

Delete the content with --unrestricted

# sed -i "/^CLASS=/s/ --unrestricted//" /etc/grub.d/10_linux

Next create a GRUB2 password for the root user to protect GRUB2

# grub2-setpassword
Enter password:
Confirm password:

Lastly rebuild your initramfs and vmlinuz with the new changes

For BIOS-based machines:

# grub2-mkconfig -o /boot/grub2/grub.cfg

For UEFI-based machines:

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Proceed with the reboot to validate the changes

Steps to remove GRUB2 password

To revert back the changes you must re-add the —unrestricted value in /etc/grub.d/10_linux (or if you have a backup file then overwrite the existing file

Once the correct 10_linux file is in place, rebuild the initramfs

For BIOS-based machines:

# grub2-mkconfig -o /boot/grub2/grub.cfg

For UEFI-based machines:

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Next remove the grub2 password which was created using grub2-setpassword

# rm -f /boot/grub2/user.cfg

That is all, now you can reboot your node to validate the changes. The node will not prompt for any password any more at the boot loader stage.

Lastly I hope the steps from the article to protect GRUB2 from loading a kernel at boot up stage by unauthorized person without password in RHEL/CentOS 7 Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Can’t find what you’re searching for? Let us assist you.

Enter your query below, and we’ll provide instant results tailored to your needs.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows powershell что это командная строка
  • Посмотреть версию windows 2012
  • Как включить запись видео на windows 10 горячие клавиши
  • Windows anytime upgrade windows 7 ultimate
  • How to disable autorun in windows