Маскировка ввода пароля в cryptsetup
Форумчане, скажите, можно ли сделать в Crytpsetup затирание вывода консоли при вводе пароля на загрузку?
Как в TrueCrypt – фейковая ошибка, например "Invalid BOOT.INI file Booting from C:windows", таким образом ввести в заблуждение по поводу установленной системы и не реагировать на ввод неправильных паролей.
Спасибо
И дасться?
Вам удалось? Вы на среднем уровне вникали в то, как собирать initrd под себя
из говна и палок? Я пока таким похвастаться не могу. :-(Не знаю, оно меня удивляет, я эту автоматику не понял. Бывает, всё обновил, и вроде ОК, ничего не работает. А после следующего апдейта вдруг лезут какие-то артефакты типа лишних запросов паролей с шифрованной ФС, до каких он до этого не догадывался. Кастомный crypttab вот тоже не взлетел, а почему — непонятно. Были бы знания, можно было б распаковать initrd и проанализировать её содержимое, чтоб понять, почему некоторая автоматика не отрабатывает. Впрочем, даже если б были знания и время, как часто бывает в таких случаях, при более плотном разбирательстве с системой вдруг оказывается, что там элементарно баги. Они везде, где ни копни. :-(
Была идея перенести старую ОС в бессигнатурно шифрованный диск. Теоретически всё делается просто: переносим загрузочный /dev/sdX с /boot'ом и grub'ом на другой носитель, а LUKS с системной volume group запихиваем куда хотим — потом в командной строке initamfs его так же можно будет подцепить.
Однако, перенести загрузчик на внешний диск мне так и не удалось. :-( Создал там раздел загрузочный, перенёс файлы, сделал dpkg-reconfigure ядра, сделал update-grub, update-initramfs тоже делался, но всё бесполезно. Сначала grub выпадал в rescue-mode — дескать ему нужен не просто загрузочный раздел, а раздел именно с заданными UUID'ом. Прошерстил его конфиги грепом, нашёл load.cfg, там этот UUID прописан (кстати, в моей самой новейшей версии grub'а таких файлов вообще нет). Откуда он его черпал при всех обновлениях — без понятия. В fstab всё прописал, как должно быть — не помогает. Заменил UUID на правильный — то же самое. В итоге руками перезаписал UUID в load.cfg. Потом потестил на обновлениях граба и остального — вроде самовольно UUID он не менял. После этого я каждый раз при загрузке попадал прямиком в командную строку grub'а — никаких менюшек или ещё чего-то. Попытка выехать за счёт хаков на лету типа chainloader +1 тоже ничего не дала. Главно, было написано, что это grub 1.99x. Как так, если в той ОС по дефолту стоял именно второй граб? Понятно, что все настройки по переносу старой ОС осуществлялись после стандартной загрузки в эту ОС.
Короче, плюнул на всё это дело и решил рискнуть воспользоваться новым загрузчиком для старой ОС. Указал на лету иной root=/path/to и подключил руками нужные разделы в ком. строке initramfs. Оно взлетело. Получается, система на новом ядре, но всё остальное старое. Затестил, как себя поведут в этом случае иксы. С Xen-ядром они даже не запускаются, как и раньше, а с обычным ядром запускаются, но тут же намертво вешают систему после своего запуска — помогает только reset (не важно xdm там или ручной старт). Короче, жить можно, но только в текстовой консоли.
Есть интересная инфа про загрузчики. Взял стандартный Debian LiveCD/LiveUSB, инсталляционный Debian'овский и Gentoo'шный resuce CD. Итог:
Кого сейчас заинтересушь гибридными CD? Флешки появятся только через 10 лет у людей.Про то, что большинство современных ноутов уже поставляются без CD-приводов, авторы не подозревают.Вот так и живём, господа. В XXI-ом веке LiveCD с шеллом, где есть LVM и cryptsetup — роскошь. Моя кастомная ramfs размером в 60MB, оказывается, намного полезней для восстановлений при сбоях и всём остальном, чем все эти популярные инсталляционные и LiveCD-диски, распространяемые миллионами. По крайней мере, cryptsetup, LVM и dd там работают, а это уже достаточный минимум для отката системы к предыдущей версии. Если б не необходимость иметь нейтральный загрузочный носитель, можно было б не мучиться. Может быть авторы удаляют всё из ядра, чтобы оно грузилось на калькуляторах? Памяти не хватает? А для plymouth-место таки нашлось? Нет, всё-таки просто пидорасы, нет других объяснений.
В BSD не бывает такого сорта проблем. Любая BSD содержит необходимый минимум. Чтобы его оттуда выпилить, надо очень сильно постараться, и за это не приято гладить по головке. Там концепция полноты и самодостаточности системы настолько глубока, что базовая система содержит даже косольный браузер.
В initramfs-шелле не хватает man'ов. Неужели они так много весят? Во времена, когда найти флэш-память размером меньше, чем на гигабайт — это проблема, в чём смысл не класть man'ы? И ком. строки grub'а это тоже касается.
Сейчас пишу с бессигнатурки. Здесь на форуме уверяли, что такое невозможно. Судя по всему, никакого «заката Солнца в ручную» нет и близко, всё работает как и раньше. Канитель:
- В загрузчике (конфиг grub) указываем rootdelay=0
- В initramfs выполняем штук 5 команад.
- Делаем exit и система грузится, как ни в чём ни бывало.
Системе вообще пофигу откуда она грузится. /boot перед apt-get updgade монтируется стандартно, апдейты тоже идут стандартно. Можно было бы, конечно, всё автоматизировать, чтоб не вводить лишние команды в initramfs при загрузке, но мне это некритично.комментариев: 9796 документов: 488 редакций: 5664
И собирал, и разбирал, и выковыривал что-то оттуда и разбирал как там все скрипты устроены.
И даже чуть выше среднего и не для себя, но это было давно и неправда :)
Придёться палиться своими конфигами, ну мне терять нечего. У меня какая-то старая записка в файле есть по этому делу:
Ещё лежят образцы device.map, grub.cfg, ещё помню, что uuid берется с ext2fs, вот комент про это:
Просто это всё разбирается подолгу, затем годами трогать не надо, а если под рукой нет нужных записок, то забывается.
Вы не поняли дух Debian, там всё есть, но сделано так, чтобы потыкались и решили, что ничего нет, что Debian — УГ и ушли на свою Убунту. :) По памяти не помню, но в Debian специально, чтобы никто непосвящённый в эти обряды не догадался, где-то в дремучих глубинах сайта есть какой-то правильный Live-cd, то-ли professional, то ли rescue, то ли как-то так, там все профессиональные утилиты, вплоть до всякой полуфорензиковой экзотики. с него и инсталлиться можно. А инсталлиться надо выбрав все пакеты вручную, поставив в систему только минимум и apt, а затем аптом выбрать всё, что нужно.
В принципе, если собираете что-то параноидально-кастомное, то поставьте систему с обычным шифрованием, а с неё вручную поставьте на флэшку что нужно. Есть и куча всяких средств для создания своих дистров, клонирования конфигов и пр.
С Debian так: долго помучался, но разобрался, сделал и забыл на несколько лет. Он же стабильный.
Пришёл, не разобрался, всех обхамил. Вот разрабы так и делают, чтобы было понятно только для самих разрабов, полупродвинутым пользователям всё равно не угодишь, пусть ковыряют всё сами, если надо, как бы нелогично снаружи без знаний всей этой кухни оно не выглядело.
На будущее, там и ядро самоскомпилённое нельзя ставить через make install, надо собрать из него кастомный пакет и прописать в apt. И grub.cfg править нельзя: надо править конфиг, который предназначен для правки grub.cfg, который лежит в другом месте. Я половину этих штук не знаю и делаю криво и неправильно, но считаю, что это разработчики имеют право быть дартаньянами, а не я.
Ну вот вам понятно, почему update-initramfs не цепляет crypttab? Куда рыть, что смотреть?
Ага, я тут один идиотствую из проекта. Больше никто не палится. Все умные, один я дурак.
Это под первую версию граба, во второй править уже очень нежелательно (во всяком случае, если только вы не планируете полностью отказаться от автоматических обновлений системы).
Честно говоря, не то, чтоб мне это так сильно надо было, просто как PoC было бы красиво. Наверно, в гугле есть относительно внятные инструкции, как переносить /boot на иной носитель для современных версий ОС.
Общее понимание остаётся, что там и как работает, что с чем связано. Проблема — не подглядеть в скрипт/man, проблема — понять схему работы всей конструкции в целом и связь её частей.
На основной странице сайта проекта есть ссылки на всё, что у них имеется, я там многократно лазил. Содержимое серверов с iso-шками напрямую я тоже анализировал, хоть и поверхностно. Ни на что такое не наткнулся ни разу. Если кто-то где-то под себя из принципа что-то собирает, это ещё ничего не говорит о проекте в целом. Этот LiveCD официальный? Покажите ссылку. И описание его на сайте тоже покажите, без этого просто не о чем говорить.
Вы за оффлайновую инсталляцию? Может быть, она и даёт больше безопасности, но не так значительно — всё равно ж с сетью работать компьютер будет и софт тянуть оттуда тоже. Раз инсталляционный CD проверяет подписи на пакетах, то что ещё нужно? Разве что файерволл.
Ручной перенос системы, если нет под это знаний — жесть полная. Даже в самых простых BSD это не такая простая процедура, и по затратам мозг-время часто проще не клонировать, а поставить заново. На клонинг идут тогда, когда это окупается (ну, например, не надо обновлять ОС до более новой версии, и там уже есть весь необходимый софт — требуется просто копия системы). Я несколько раз в жизни проходил через клонинг, но все разы мне помогали более опытные в этом деле товарищи.
Сейчас такое железо делают, что может и года не проработать, а новое железо — это новые пляски с ОС, новые «не поддерживается» и т.д.
Это я-то не разобрался?! А что я, как юзер, по-вашему, должен? Полностью изучить за разрабов всю их внутренню кухню, вычитать всю рассылку, учесть все явно упомянутые и неупомянутые костыли, все сделать правильно назло всем, а потом вежливо намекнуть «УМВР, но разрабы могли бы сделать чуть лучше»? Добро пожаловать в реальный мир тогда. Как в таких случаях бывает, начальство жмёт руки и говорит «спасибо вам за то, что вы у нас работали».
Я — потребитель, и во многом судья со стороны. К тому же, у меня есть опыт и возможность сравнивать, что где и как работает. И меня абсолютно не волнует исходя из каких соображений ребята породили говно. Мне достаточно факта.
Без новояза объяснить не получается?
Я в курсе, но это как бы хорошо известно и всем понятно.
Знаю, поэтому делал всё через автоматику, но она почему-то тоже делает не то, что должна, а почему?
А я уже мальца подустал от дартаньянства «слишком умных». Меня незнанием матчасти всю жизнь тыкали, но вроде уже давно наступил момент, когда мне можно потыкать этим других. Знаете ли, я делал намного более сложные вещи чем эти ваши ядра и инсталляторы, и знаю, какой бардак там творится: и очковтирательство и бред и всё остальное (Это там, где люди реально несут ответственность, делают не for fun и стараются вылизать каждый кусок своей работы). А если глянуть глубже, там такой ужас, что я не представляю, как всё до сих пор не рухнуло.
Эти горе-программисты просто порождают говно как Константин Клягин, и все, кому надо, это прекрасно понимают. Можно искать, как оправдать любую дичь, но дичью это быть не перестаёт. Не делайте, одним словом, из разработчиков небожителей. Сидят там такие же придурки, как и во всех остальных местах (и у нас, в том числе) и ваяют говно. Но если в коммерции из-за косяка встанет процесс или рухнет инфраструктура, баготворителя могут выставить за дверь, и он об этом знает. А если баг в опенсырце, который for fun, то можно натворить любые косяки, а потом надменно комментировать их в рассылке как «ну и что, подумаешь, ерунда; у меня всё работает».
комментариев: 9796 документов: 488 редакций: 5664
При любых обновлениях ядра вам на флэшку надо будет скопировать только system.map, initrd, vmlinuz и config. Сам grub обновляется редко. При его обновлении надо будет пересоздать флэшку заново по этому черновику, так что править там конфиг всё-равно придёться заново, благо одна строчка, а если иметь его бэкап, то всё ещё проще — часто после обновления grub diff'ом можно сравнить бэкапы, выдернутые в разное время из /boot и убедиться, что там ничего не поменялось.
Там всё ещё хуже. Обратитесь по дорогой платной корпоративной техподдержке к кому-нибудь типа Оракла, MS, Intel, IBM и пр. с вопросом чуть сложнее, чем «не туда ткнул мышкой». А если ещё с какой-то нестандартной штукой, которую 99.99% пользователей не настраивает, то будет вообще цирк.
А вот этого в коммерции категорически нельзя, специально обученные люди будут говорить по всем каналам связи с пользователями «всё хорошо, прекрасная маркиза». Там надо лицемерно врать, да. Но насчёт ответственности даже с крупными денежными контрактами — вы преувеличиваете, все риски у крупных компаний учтены и покрыты заранее. На мнение особо упрямых клиентов им пофиг («ваше мнение очень ценно для нас, спасибо, что сообщили»), порушить их репутацию почти ничем нельзя.
Серьёзные косяки — это, например, аварии на магистралке, когда огромная страна остаётся без Интернета. Ну, или из-за головотяпства какой-нибудт ютуб оказывается заблочен на всю страну. И эти вопросы требуют решения за минуты, т.к. иски за простой могут быть колоссальными.
комментариев: 9796 документов: 488 редакций: 5664
Специалисты тоже могут нихрена не решить проблемы с дорогущим оборудованием, можно собачиться с компанией, а можно плюнуть и найти решение почти как в опенсорсе, а не ждать пока там компания включит это в свою официальную документацию.
комментариев: 9796 документов: 488 редакций: 5664
Там масса примеров такого же абсурда, внутренней бюрократии, плохой организации, наказания невиновных и награждения непричастных. И такие вещи некорректно сравнивать. Вы с поставщиками дистра — не одна компания, вы же пользователь, а не разработчик.
Я кстати упоминал ранее, что когда-то шифрования в ядре и утилитах для работы с диском не было (не говоря уже о возможности это завести прямо из инсталлятора, как сейчас). Всё это пропатчить, пересобрать рамдиск, переделывать при обновлениях — был тот ещё геморой. Аналогично не было штатной поддержки подписей пакетов, но можно было самому написать скрипт, который их выкачивает без установки, сверяет все суммы с подписью и не ставит, если что-то не так. Сейчас часто не хватает сил и времени поддерживать что-то из нестандартных настроек, иногда проще склониться к выбору в пользу изкоробочности, пока это не поддерживается штатно. Т.е., если возможность доработки напильником есть, но она слишком сложна для пользователя, то дистростроитель в большинстве случаев в этом не виноват.
Можно ещё руками попробовать сделать в шелле modprobe dm_mod или поискать соответствующий файл на диске; если найдётся, то insmod /path/to/module_file должно спасать. Но вроде модули обычно подгружаются при надобности автоматически, так что вряд ли это поможет.
Вспомнился комментарий
Автор там пишет:
Он ставит Debian именно оффлайново, но не с netinst CD. В принципе, само название netinst как бы подразумевает, что это «network installation», поэтому неудивительно, если чего-то базового и важного там не предусмотрено. А ставить с другого типа CD — значит, устанавливать в систему множество всякой софтовой бредятины, которую потому замечаешься вычищать. ☹
Был неправ. Инсталляционный диск (netinst для jessie) таки содержит всё необходимое, подключение к сети ненужно. Чтобы появился полноценный рабочий cryptsetup, нужно зайти в «detect network devices» (не спрашивайте, в чём логика; это Debian-инсталлятор, и этим всё сказано). В следующий пункт (конфигурирование сети) можно не тыкать. После этого отлично работает dmsetup и LVM-тулзы в rescue shell'е (туда даже не надо заходить — проще переключиться через Ctrl+Alt+F2 или Ctrl+Alt+F3 в другой терминал и там будет rescue shell безотносительно того, что рисуется на curses инсталлятором на F1-дисплее).
Но тут возникает одна очень тонкая подстава. :-) Мы не можем подмонтировать файловую систему, он будет писать invalid argument. Видимо, нужные модули ядра (файловых систем) на этой стадии ещё не подгружены. Чтобы решить проблему, тыкаем сначала в «detect disks», а потом в конфигурирование дисков. В последнем случае спросят, что выбрать — manual, guided или ещё что. Можно ничего не выбирать, а сразу перейти через Ctrl+Alt+F2 в другой терминал, и, вуаля, теперь всё успешно монтируется. Я так смог сделать себе бэкап всего системного раздела, а также восстановить загрузочный носитель с бессигнатурно шифрованного диска. Всё работает. Немного геморойно, конечно, по этим пунктам пробираться, но если перезагружаешься не часто, можно привыкнуть.
В общем, мораль басни: в качестве «загрузочного» носителя инсталляционный netinst-диск (USB-флешка) достаточен. С его помощью можно считать откуда угодно загрузочный образ, записать его на другую флэшку, а потом с неё загрузиться. Когда загрузился, её можно снова зачистить рандомом. И пока система загружена, ничего нет кроме бессигнатурно полностью шифрованного диска и инсталляционной флэшки.
P.S. Была идея вместо тыкания в меню инсталлятора сразу дать в rescue shell команду, чтобы подгрузить нужные модули ядра, но пройти этот квест не удалось.
Потому, что вы не продвинутый. К.О.