Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [РЕШЕНО]Как обезопасить пользователя от GRUB2 или гроб с паролем.  (Прочитано 3198 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн deadrash

  • Автор темы
  • Участник
  • *
  • Сообщений: 210
  • Nadia+Cinnamon
    • Просмотр профиля
Собственно, есть желание избавить пользователя от соблазна делать нехорошие штуки с загрузкой системы через GRUB2.
данная тема является ответвлением от фака по грубу >GRUB2
Самовыдержка:
Может быть уже обсуждалось, прочитал 18стр. больше осилить не сумел.

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

Сейчас я имею груб в котором при нажатии "е" я могу вписать любой параметр в загрузку ОСи (например загрузится под рутом в Линукс), причём делается это до сумашествия просто  >:( (недели знакомства с линуксом хватает, что бы узнать, как загрузится в рут из груба).

Лучший вариант, наверное, был-бы пароль на груб, но если его реализовать не получится, тогда минимум, отключение возможности загрузки ОСи с параметром.
Помогите понять как защитить офисный комп от шаловливых рук юзверей.
initrd~ даже не понял как разпаковать  :-[
« Последнее редактирование: 25 Июля 2010, 17:54:31 от deadrash »
MS NF980-G65 | Phenom II 965(HDZ965FBGM) | 2x1024(OCZ3P13332GK) | HD 3870 | 1TB WD | 1KW TT

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Вот, как раз по теме всё расписано на форуме у англоязычной части сообщества: http://ubuntuforums.org/showthread.php?t=1369019

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
http://ubuntuforums.org/showthread.php?t=1369019 - вот про пароль на пункты гроба. по дефолту пароль и вовсе задается открытым текстом, но в конце есть и про задание оного в шифрованном виде (фича, как я понимаю, с версии 1.98 или типа того). от дураков поможет, а умный все равно из консоли ручками загрузит как надо.
Цитировать
initrd~ даже не понял как разпаковать
что ж, вкратце попробую описать:
готовим площадку для опытов
mkdir /tmp/init && cd /tmp/initкопируем инитрд нужной версии (соответствующей текущему ядру)
cp /boot/initrd-xxxxx .(точку в конце не теряем, вместо xxxx понятно что)
обычно инитрд представляет из себя сжатый gzip'ом cpio-архив. что есть cpio - к википедии. для начала переименуем файл
mv initrd-xxxxx{,.gz}распакуем gzip
gunzip initrd-xxxx.gzполучим голый cpio-архив, который и осталось разжать. создадим папочку для содержимого
mkdir new && cd newи, собственно, распакуем
cpio -i < ../initrd-xxxxну вот. если все получилось, зрим содержимое и видим кучу всего - скрипты, ядерные модули, busybox + минимальный набор всего необходимого, и т.д., целую микроось в кармане. ну а там ищем grep'ом по ключевым словам, читаем интересные скрипты и пр...
лучше на "ты"

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
А можно вопрос: зачем нужно трогать initrd при решении задачи топика?

Оффлайн deadrash

  • Автор темы
  • Участник
  • *
  • Сообщений: 210
  • Nadia+Cinnamon
    • Просмотр профиля
Вот, как раз по теме всё расписано на форуме у англоязычной части сообщества: http://ubuntuforums.org/showthread.php?t=1369019
Положил в закладочки, прочту не скоро, сначала надо выучить язык.
А можно вопрос: зачем нужно трогать initrd при решении задачи топика?
Ну это собственно часть задачи, очень хочу в принципе лишить юзера загружать из груба что либо с параметрами.
MS NF980-G65 | Phenom II 965(HDZ965FBGM) | 2x1024(OCZ3P13332GK) | HD 3870 | 1TB WD | 1KW TT

Оффлайн DreamSoul

  • Старожил
  • *
  • Сообщений: 1038
    • Просмотр профиля
Цитировать
гроб с паролем
Доставило.  :)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Ну это собственно часть задачи, очень хочу в принципе лишить юзера загружать из груба что либо с параметрами.
Уточню вопрос: что конкретно нужно сделать с initrd, что поможет решению задачи?

Оффлайн deadrash

  • Автор темы
  • Участник
  • *
  • Сообщений: 210
  • Nadia+Cinnamon
    • Просмотр профиля
Ну это собственно часть задачи, очень хочу в принципе лишить юзера загружать из груба что либо с параметрами.
Уточню вопрос: что конкретно нужно сделать с initrd, что поможет решению задачи?
Отключить возможность приписывать параметры к загрузке, например simple. А лучше вообще отключить возможность редактировать загрузку.
MS NF980-G65 | Phenom II 965(HDZ965FBGM) | 2x1024(OCZ3P13332GK) | HD 3870 | 1TB WD | 1KW TT

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Отключить возможность приписывать параметры к загрузке, например simple. А лучше вообще отключить возможность редактировать загрузку.
Я так и думал. Не той дорогой пошел, initrd тут не при делах, grub нужно настраивать.

Оффлайн xkool

  • Старожил
  • *
  • Сообщений: 1459
  • do not love my brain
    • Просмотр профиля
« Последнее редактирование: 24 Июля 2010, 09:50:13 от xkool »
Лучше маленький доллар, чем большое спасибо.

Оффлайн deadrash

  • Автор темы
  • Участник
  • *
  • Сообщений: 210
  • Nadia+Cinnamon
    • Просмотр профиля
Автор ,это почитай для начала http://itshaman.ru/articles/14/password-grub и это http://sanmai.livejournal.com/774603.html
Спасибо, получилось по второй ссылке запаролить!  :D
Правда я нифига не понял что там написано и как это получается, хотя оно и сработало.
Не понял например что за переменная "PBKDF2" и зачем она нужна, не понял так же зачем нужно добавлять в 05_password некоторые строчки, и самое главное я не понял как таким методом создовать несколько паролей.

Ведь в итоге нужно зделать только:
Генерим хеш пароля командой:
grub-mkpasswd-pbkdf2
Далее вставляем в файл /boot/grub/grub.cfg строки:
set superusers="admin"
password_pbkdf2 admin НАШ ХЕШ ПАРОЛЯ
Всё.

Строка password_pbkdf2 admin НАШ ХЕШ ПАРОЛЯ асоциирует пользователя admin с паролем зашифрованным в хеш.
Eстественно вместо строки "наш хеш пароля" вставляем то что нам выдала команда grub-mkpasswd-pbkdf2
Строка set superusers="admin" говорит что суперадмином будет юзер admin и этот юзер он как бы root меню GRUB2, то есть он может делать всё что ему вздумается.


Если мы хотим запаролить конкретные строки меню, причём разные строки с разным паролем, тогда вписываем ещё парочку паролей в файл груб.цфг рядом с тем что было:
set superusers="admin"
password_pbkdf2 admin хеш пароля
password_pbkdf2 юзер2 хеш пароля
password_pbkdf2 юзер3 хеш пароля
Для того что бы нужная нам строка меню была запаролена добовляем в эту строку, после её названия, параметр --users после параметра следует пользователь которому разрешено загружать эту строку. Можно указать несколько пользователей через пробел.


Пример файла /boot/grub/rgub.cfg (только часть файла)

(Нажмите, чтобы показать/скрыть)
В этом примере обычный линух смогут загрузить boris и lena под своими паролями, а режим восстановления загрузят boris и olga.
Ни boris ни olga ни даже lena не смогут редактировать никакие пункты загрузки, это может делать только admin
Пользователь admin сможет делсть всё что захочет.
Если параметр --users не дописывать, то пункт загрузки загрузится без вопросов, но редактировать этот пункт загрузки всё равно сможет только admin.
« Последнее редактирование: 26 Июля 2010, 14:34:09 от deadrash »
MS NF980-G65 | Phenom II 965(HDZ965FBGM) | 2x1024(OCZ3P13332GK) | HD 3870 | 1TB WD | 1KW TT

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
а теперь нажми 'c' в менюшке и посмотри, что получится.
да, правка grub.cfg - это до первого обновления груба. правь 00-й лучше, запихай там
cat << EOF
все
что
нужно
EOF
куда-нибудь в удобное место.
а если хочешь вообще напрочь избавиться от возможности давать ядру какие-либо параметры, то суровая идея была в том, что пересобрать его с нужными опциями. есть там эдакая "встроенная строка параметров", там задаем ююид рут-раздела. и есть опция, при которой ядро плюет на все, полученное извне, принимая во внимание лишь содержимое той самой встроенной строки.
можно еще выпендриться: включить все нужное монолитом, шоб могло грузиться без initrd, а поддержку инитрд вырубить вообще. что спасет от подмены этого самого инитрд на другой, содержащий в init-скрипте одну строчку "/bin/sh" или вовсе гадость какую. впрочем, если нехороший юзер имеет доступ к бут-разделу (и, видимо, не только к нему) - тут уж так просто не отделаешься
« Последнее редактирование: 25 Июля 2010, 23:00:03 от dimas000 »
лучше на "ты"

Оффлайн deadrash

  • Автор темы
  • Участник
  • *
  • Сообщений: 210
  • Nadia+Cinnamon
    • Просмотр профиля
а теперь нажми 'c' в менюшке и посмотри, что получится.
Спрашивает пароль, подошол только админский.

да, правка grub.cfg - это до первого обновления груба. правь 00-й лучше, запихай там
cat << EOF
все
что
нужно
EOF
куда-нибудь в удобное место.
Да конечно граб.цфг трётся со временем, но и 00_ тоже не выход, тогда уж лучше написать скриптик который подписывает всё что нужно, за раз.

а если хочешь вообще напрочь избавиться от возможности давать ядру какие-либо параметры, то суровая идея была в том, что пересобрать его с нужными опциями. есть там эдакая "встроенная строка параметров", там задаем ююид рут-раздела. и есть опция, при которой ядро плюет на все, полученное извне, принимая во внимание лишь содержимое той самой встроенной строки.
можно еще выпендриться: включить все нужное монолитом, шоб могло грузиться без initrd, а поддержку инитрд вырубить вообще. что спасет от подмены этого самого инитрд на другой, содержащий в init-скрипте одну строчку "/bin/sh" или вовсе гадость какую. впрочем, если нехороший юзер имеет доступ к бут-разделу (и, видимо, не только к нему) - тут уж так просто не отделаешься
Да это сурово, прям - Ъ!!
Хотя мне кажется трудозатраты не оправдают составленной защиты, по мне так удобней закриптовать всё в ЛВМ раздел, и спать спокойно (только пароль не забыть ...  ;)). Мне славо богу не нужно этим заниматься, главное что я избавил сотрудников от искушения управлять загрузкой ОСей, теперь им сложней согрешить  :angel:

Сейчас вот думаю как сделать скрипт который добавляет все пароли и права в груб.цфг. Буду очень признателен если подкините маны для начинающих в этом деле.
MS NF980-G65 | Phenom II 965(HDZ965FBGM) | 2x1024(OCZ3P13332GK) | HD 3870 | 1TB WD | 1KW TT

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Цитировать
Спрашивает пароль, подошол только админски
о, а вот это православно!
Цитировать
Хотя мне кажется трудозатраты не оправдают составленной защиты, по мне так удобней закриптовать всё в ЛВМ раздел, и спать спокойно (только пароль не забыть ...  )
только в данном случае ключи-пароли придется-таки раздать кому надо, чтоб они смогли пользоваться компом. или же флэшку в зубы и бежать включать по первому же зову. или же городить в инитрд ssh, дабы вводить пароль для монтирования рута удаленно. в общем, не выход
Цитировать
Сейчас вот думаю как сделать скрипт который добавляет все пароли и права в груб.цфг. Буду очень признателен если подкините маны для начинающих в этом деле.
все равно нужно будет править 10-ку. и 30-ку, если есть иные оси. для начала таки пихай вышеупомянутое в 00-й куда-нибудь. после чего в 10-ке:
(Нажмите, чтобы показать/скрыть)
меняешь на
(Нажмите, чтобы показать/скрыть)
и выше
(Нажмите, чтобы показать/скрыть)
на
(Нажмите, чтобы показать/скрыть)
как-то так. в 30-ке аналогично, поковыряй, попробуй на досуге додумать нужное))
да, кстати, в предыдущем посте в спойлере подскорати свои строки с хэшами, а то растягивает страницу в браузере
лучше на "ты"

 

Страница сгенерирована за 0.104 секунд. Запросов: 23.