id: Гость   вход   регистрация
текущее время 23:48 28/03/2024
Автор темы: ressa, тема открыта 29/07/2014 10:40 Печать
Категории: криптография, инфобезопасность, защита дисков, алгоритмы, операционные системы
https://www.pgpru.com/Форум/UnixLike/МаскировкаВводаПароляВCryptsetup
создать
просмотр
ссылки

Маскировка ввода пароля в cryptsetup


Форумчане, скажите, можно ли сделать в Crytpsetup затирание вывода консоли при вводе пароля на загрузку?
Как в TrueCrypt – фейковая ошибка, например "Invalid BOOT.INI file Booting from C:windows", таким образом ввести в заблуждение по поводу установленной системы и не реагировать на ввод неправильных паролей.
Спасибо


 
На страницу: 1, 2, 3, 4, 5, 6, 7, 8 След.
Комментарии
— Гость (27/01/2015 23:20)   <#>

И дасться?
— Гость (28/01/2015 20:20)   <#>

Вам удалось? Вы на среднем уровне вникали в то, как собирать 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. Итог:
  1. Gentoo Rescue CD оказалось негибридным и поэтому с флешки не грузится, надо колодовать с isohybrid. XXI-ый век на дворе, ага. Кого сейчас заинтересушь гибридными CD? Флешки появятся только через 10 лет у людей. Про то, что большинство современных ноутов уже поставляются без CD-приводов, авторы не подозревают.
  2. Официальный Debian LiveCD меня умилил и я опять вспоминал /comment53852. Линукс как был петушьём на фоне BSD, так и им и остался. Что курят пидорасы, у которых в 200 MB iso (lxd) влазит графика, десктоп, фреймбуфер с наворотами и масса прочей дичи, но при этом в системе нет LVM. Если это не ахуй, то что такое ахуй? cryptsetup-таки есть да. На самом деле, это не предел, я видел жёстче: это когда на хостинг устаналивают Gentoo с ядром, в котором не работает iptables, потому то сборщики-дистростроители решили, что conntrack в ядре нахуй не нужен.
  3. Инсталляционный LiveCD примерно такой же, как Live — сексуальная ориентация от смены CD не меняется. Номинально можно выбрать, какие tools подгрузить с CD в инсталляторе и попасть потом в rescue-шелл, где всё должно работать. cryptsetup там есть, номинально запускается и даже запрашивает пароль. Казалось бы, уже нет места для подставы, что ещё можно придумать? А вот шах вам и мат: можно. После ввода пароля он говорит, что модуля device mapper'а я в ядре нет! Не знаю уж, как там с LVM обстоят дела, но факт остаётся фактом: оффлайновый инсталляционный Debian CD бесполезен и не содержит возможностей cryptsetup. Как же тогда работает, спросите вы? А очень просто: перед этим можно опционально выйти в детекцию сетевых настроек, а потом настроить саму сеть. Никаких предупреждений на счёт того, что после этого что-то подгружается из сети нет! Но нужные модули у ядра откуда-то появляются. Короче, инсталлятор с «содержимым тулзов на CD» — просто наибалово. Эти тулзы реально не грузятся с CD. В лоб файерволлом не тестил, но уверен в этом на 90%, т.к. не вижу никаких иных объяснений.

Вот так и живём, господа. В XXI-ом веке LiveCD с шеллом, где есть LVM и cryptsetup — роскошь. Моя кастомная ramfs размером в 60MB, оказывается, намного полезней для восстановлений при сбоях и всём остальном, чем все эти популярные инсталляционные и LiveCD-диски, распространяемые миллионами. По крайней мере, cryptsetup, LVM и dd там работают, а это уже достаточный минимум для отката системы к предыдущей версии. Если б не необходимость иметь нейтральный загрузочный носитель, можно было б не мучиться. Может быть авторы удаляют всё из ядра, чтобы оно грузилось на калькуляторах? Памяти не хватает? А для plymouth-место таки нашлось? Нет, всё-таки просто пидорасы, нет других объяснений.

В BSD не бывает такого сорта проблем. Любая BSD содержит необходимый минимум. Чтобы его оттуда выпилить, надо очень сильно постараться, и за это не приято гладить по головке. Там концепция полноты и самодостаточности системы настолько глубока, что базовая система содержит даже косольный браузер.

В initramfs-шелле не хватает man'ов. Неужели они так много весят? Во времена, когда найти флэш-память размером меньше, чем на гигабайт — это проблема, в чём смысл не класть man'ы? И ком. строки grub'а это тоже касается.

Сейчас пишу с бессигнатурки. Здесь на форуме уверяли, что такое невозможно. Судя по всему, никакого «заката Солнца в ручную» нет и близко, всё работает как и раньше. Канитель:
  1. В загрузчике (конфиг grub) указываем rootdelay=0
  2. В initramfs выполняем штук 5 команад.
  3. Делаем exit и система грузится, как ни в чём ни бывало.
Системе вообще пофигу откуда она грузится. /boot перед apt-get updgade монтируется стандартно, апдейты тоже идут стандартно. Можно было бы, конечно, всё автоматизировать, чтоб не вводить лишние команды в initramfs при загрузке, но мне это некритично.
— unknown (28/01/2015 21:47)   профиль/связь   <#>
комментариев: 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, который лежит в другом месте. Я половину этих штук не знаю и делаю криво и неправильно, но считаю, что это разработчики имеют право быть дартаньянами, а не я.
— Гость (28/01/2015 22:47)   <#>

Ну вот вам понятно, почему update-initramfs не цепляет crypttab? Куда рыть, что смотреть?


Ага, я тут один идиотствую из проекта. Больше никто не палится. Все умные, один я дурак.


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

Честно говоря, не то, чтоб мне это так сильно надо было, просто как PoC было бы красиво. Наверно, в гугле есть относительно внятные инструкции, как переносить /boot на иной носитель для современных версий ОС.


Общее понимание остаётся, что там и как работает, что с чем связано. Проблема — не подглядеть в скрипт/man, проблема — понять схему работы всей конструкции в целом и связь её частей.


На основной странице сайта проекта есть ссылки на всё, что у них имеется, я там многократно лазил. Содержимое серверов с iso-шками напрямую я тоже анализировал, хоть и поверхностно. Ни на что такое не наткнулся ни разу. Если кто-то где-то под себя из принципа что-то собирает, это ещё ничего не говорит о проекте в целом. Этот LiveCD официальный? Покажите ссылку. И описание его на сайте тоже покажите, без этого просто не о чем говорить.


Вы за оффлайновую инсталляцию? Может быть, она и даёт больше безопасности, но не так значительно — всё равно ж с сетью работать компьютер будет и софт тянуть оттуда тоже. Раз инсталляционный CD проверяет подписи на пакетах, то что ещё нужно? Разве что файерволл.


Ручной перенос системы, если нет под это знаний — жесть полная. Даже в самых простых BSD это не такая простая процедура, и по затратам мозг-время часто проще не клонировать, а поставить заново. На клонинг идут тогда, когда это окупается (ну, например, не надо обновлять ОС до более новой версии, и там уже есть весь необходимый софт — требуется просто копия системы). Я несколько раз в жизни проходил через клонинг, но все разы мне помогали более опытные в этом деле товарищи.


Сейчас такое железо делают, что может и года не проработать, а новое железо — это новые пляски с ОС, новые «не поддерживается» и т.д.


Это я-то не разобрался?! А что я, как юзер, по-вашему, должен? Полностью изучить за разрабов всю их внутренню кухню, вычитать всю рассылку, учесть все явно упомянутые и неупомянутые костыли, все сделать правильно назло всем, а потом вежливо намекнуть «УМВР, но разрабы могли бы сделать чуть лучше»? Добро пожаловать в реальный мир тогда. Как в таких случаях бывает, начальство жмёт руки и говорит «спасибо вам за то, что вы у нас работали».

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


Без новояза объяснить не получается?


Я в курсе, но это как бы хорошо известно и всем понятно.


Знаю, поэтому делал всё через автоматику, но она почему-то тоже делает не то, что должна, а почему?


А я уже мальца подустал от дартаньянства «слишком умных». Меня незнанием матчасти всю жизнь тыкали, но вроде уже давно наступил момент, когда мне можно потыкать этим других. Знаете ли, я делал намного более сложные вещи чем эти ваши ядра и инсталляторы, и знаю, какой бардак там творится: и очковтирательство и бред и всё остальное (Это там, где люди реально несут ответственность, делают не for fun и стараются вылизать каждый кусок своей работы). А если глянуть глубже, там такой ужас, что я не представляю, как всё до сих пор не рухнуло.

Эти горе-программисты просто порождают говно как Константин Клягин, и все, кому надо, это прекрасно понимают. Можно искать, как оправдать любую дичь, но дичью это быть не перестаёт. Не делайте, одним словом, из разработчиков небожителей. Сидят там такие же придурки, как и во всех остальных местах (и у нас, в том числе) и ваяют говно. Но если в коммерции из-за косяка встанет процесс или рухнет инфраструктура, баготворителя могут выставить за дверь, и он об этом знает. А если баг в опенсырце, который for fun, то можно натворить любые косяки, а потом надменно комментировать их в рассылке как «ну и что, подумаешь, ерунда; у меня всё работает».
— unknown (28/01/2015 23:04, исправлен 28/01/2015 23:12)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

При любых обновлениях ядра вам на флэшку надо будет скопировать только system.map, initrd, vmlinuz и config. Сам grub обновляется редко. При его обновлении надо будет пересоздать флэшку заново по этому черновику, так что править там конфиг всё-равно придёться заново, благо одна строчка, а если иметь его бэкап, то всё ещё проще — часто после обновления grub diff'ом можно сравнить бэкапы, выдернутые в разное время из /boot и убедиться, что там ничего не поменялось.



Там всё ещё хуже. Обратитесь по дорогой платной корпоративной техподдержке к кому-нибудь типа Оракла, MS, Intel, IBM и пр. с вопросом чуть сложнее, чем «не туда ткнул мышкой». А если ещё с какой-то нестандартной штукой, которую 99.99% пользователей не настраивает, то будет вообще цирк.



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

— Гость (28/01/2015 23:11)   <#>
С техподдержкой везде так — на том конце провода соединяют с клушами, а до специалистов надо ещё добраться.

Серьёзные косяки — это, например, аварии на магистралке, когда огромная страна остаётся без Интернета. Ну, или из-за головотяпства какой-нибудт ютуб оказывается заблочен на всю страну. И эти вопросы требуют решения за минуты, т.к. иски за простой могут быть колоссальными.
— unknown (28/01/2015 23:24, исправлен 28/01/2015 23:25)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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

— Гость (29/01/2015 00:44)   <#>
Вы больше напираете на пример компания-клиент, хотя я изначально имел в виду вопросы кода для нужд внутри компании. И оправдываться, почему оно не работает, придётся не перед заказиками извне, а перед собственным руководством, которое тебе задачу поставило, а ты её или не выполнил или выполнил криво.
— unknown (29/01/2015 09:34, исправлен 29/01/2015 09:50)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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


Я кстати упоминал ранее, что когда-то шифрования в ядре и утилитах для работы с диском не было (не говоря уже о возможности это завести прямо из инсталлятора, как сейчас). Всё это пропатчить, пересобрать рамдиск, переделывать при обновлениях — был тот ещё геморой. Аналогично не было штатной поддержки подписей пакетов, но можно было самому написать скрипт, который их выкачивает без установки, сверяет все суммы с подписью и не ставит, если что-то не так. Сейчас часто не хватает сил и времени поддерживать что-то из нестандартных настроек, иногда проще склониться к выбору в пользу изкоробочности, пока это не поддерживается штатно. Т.е., если возможность доработки напильником есть, но она слишком сложна для пользователя, то дистростроитель в большинстве случаев в этом не виноват.

— Гость (29/01/2015 14:02)   <#>
Это всё хорошо, и можно понять, но как это касается вполне конкретной вещи — исключения dm_mod из загрузочного ядра? Загрузчочное ядро же наоборот стараются делать как можно более GENREIC, чтобы не испытать проблем ни с поддержкой железа, ни с недостатком фич. В крайнем случае, можно было бы давать несколько ядер на выбор — полное и, если с полным проблемы, усечённое.

Можно ещё руками попробовать сделать в шелле modprobe dm_mod или поискать соответствующий файл на диске; если найдётся, то insmod /path/to/module_file должно спасать. Но вроде модули обычно подгружаются при надобности автоматически, так что вряд ли это поможет.
— Гость (29/01/2015 14:32)   <#>
У все продвинутых мелкий шрифт, а у меня крупный. Почему?
— Гость (29/01/2015 14:47)   <#>
Потому.
— Гость (03/02/2015 12:51)   <#>

Вспомнился комментарий

По теме есть устаревший материал: Uwe Hermann: Towards a moderately paranoid Debian laptop setup.

Автор там пишет:

Disconnect your laptop from any kinds of networks. Pull all ethernet cables. Disable WLAN (via hardware killswitch). Disable Bluetooth. Disable/remove Firewire, USB, serial, whatever.

Get the most recent Debian-installer ISO image (currently etch-beta3), as well as the MD5SUMS and MD5SUMS.sign files:
wget http://cdimage.debian.org/cdim.....ng-i386-binary-1.iso

Он ставит Debian именно оффлайново, но не с netinst CD. В принципе, само название netinst как бы подразумевает, что это «network installation», поэтому неудивительно, если чего-то базового и важного там не предусмотрено. А ставить с другого типа CD — значит, устанавливать в систему множество всякой софтовой бредятины, которую потому замечаешься вычищать. ☹
— Гость (08/03/2015 18:35)   <#>

Был неправ. Инсталляционный диск (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 команду, чтобы подгрузить нужные модули ядра, но пройти этот квест не удалось.
— Гость (08/03/2015 18:40)   <#>

Потому, что вы не продвинутый. К.О.
На страницу: 1, 2, 3, 4, 5, 6, 7, 8 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3