ПаранойяО шифровании разделов винчестера с использованием ключа на USB-флешке на *ubuntu и debian

В установщике alternate-дистрибутива *ubuntu и debian есть возможность зашифровать раздел, но только паролем.
В инете я нашёл статью о шифровании с возможностью хранить ключ на флешке, но, к сожалению, с таким шифрованием система неправильно выходила из спящего режима — она просто запускалась с нуля, а не просыпалась в старое состояние.
В этой статье я расскажу, как сделать так, чтобы и шифрование было с ключом на USB-флешке, и спящий режим (hibernate) оставался работоспособным.
Неправильный выход из спящего режима происходил потому, что подключение swap-раздела происходило на слишком позднем этапе загрузки (а именно в swap сохраняется состояние системы при уходе в спящий режим). А слишком позднее подключение swap-раздела в свою очередь происходило поздно потому, что этот раздел зашифрован (а это обязательно, т.к. в памяти лежат ключи к подключённым зашифрованным разделам, и они могут попасть в swap, соответственно его тоже нужно шифровать).

  1. Итак, я начал с установки системы с alternate-диска ubuntu с обычным шифрованием (по паролю). Для debian тут подойдёт его стандартный установщик, т.к. он тот же, что и у ubuntu в alternate-диске.
    Я сделал шифрованный раздел, в нём LVM, а в нём раздел для /home и swap. Можно шифровать хоть корень, главное, чтобы был отдельный раздел /boot.
    На этом этапе установщик настраивает всё для работы шифрования и спящего режима.
  2. Делаем файл с ключом:
    # dd if=/dev/random of=/путь/к/файлу/с/ключом/на/флешке bs=1 count=256<br />
    Кстати, на флешке может быть только EXT3 или FAT. Другие ФС скрипт, который достаёт ключи на этапе загрузки (п7), не понимает.
    Ключу лучше назначить права 0400, иначе будет ругаться на безопасность.
  3. После этого в рабочей системе меняем парольный ключ на файловый с флешки:
    # cryptsetup luksAddKey /dev/наш_шифрованный_раздел /путь/к/файлу/с/ключом/на/флешке
  4. Проверяем количество ключей нашего раздела:
    # cryptsetup luksDump /dev/sda2<br />
    Должно быть два key slot'а, которые «ENABLED». Нулевой — это старый с паролем, первый — это наш новый с ключом в файле.
  5. Удаляем старый ключ:
    # cryptsetup --key-file /путь/к/файлу/с/ключом/на/флешке luksKillSlot /dev/наш_шифрованный_раздел 0
  6. Проверяем так же, как в п4, но теперь должен остаться только один key slot, который «ENABLED».
    Собственно сам ключ мы сменили, теперь нужно донастроить систему так, чтобы всё монтировалось как надо и спящий режим работал.
  7. В /etc/crypttab меняем запись о нашем зашифрованном разделе:
    Вместо none пишем путь к файлу ключа в таком вот виде: :
    Путь к устройству флешки берём так: идём /dev/disk/by-uuid/ и видим кучу ссылок с длинными буквоцифренными именами. Все эти ссылки ссылаются на винчестеры/флешки/.., и их разделы, которые есть в нашей системе. А имена их — это UUID'ы (типа уникального серийного номера). В результате путь вида "/dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8" будет всегда указывать на один и тот же раздел моей флешки куда бы я её не воткнул. А чтобы злоумышленник смог её подменить, ему нужно, чтобы раздел на его флешке имел точно такой же UUID (правда, это не сложно). Если вы хотите, чтобы ваша флешка идентифицировалась не по UUID, а, например, по label раздела, тогда вам в /dev/disk/by-label. А если по имени устройства (например: ata-Hitachi_HTS541616J9AT00_SB0442SJEGB1RH), то в /dev/disk/by-id/.
    В результате должен получиться примерно такой путь:
    /dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8:/keys/my.key<br />
    После опции «luks» добавляем путь к скрипту, который при загрузке в initramfs будет доставать наш ключ: keyscript=/lib/cryptsetup/scripts/passdev.
    В результате получим что-то вроде этого:
    sda2_crypt /dev/disk/by-uuid/731993e3-acd4-4ce8-9a5b-ccf8e5d074ef /dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8:/keys/my.key luks,keyscript=/lib/cryptsetup/scripts/passdev
  8. Обновляем initramfs командой:
    # update-initramfs -u
  9. Перезагружаемся и наблюдаем, как всё монтируется автоматом при наличии флешки и не показывает даже сообщений об ошибке при её отсутствии (не знаю почему, но, ИМХО, так даже лучше =)).

UPD:
после примерно 4-х месяцев использования докладываю: всё работает, ничего не сломалось, остаётся только одна проблема: относительно большая нагрузка от шифрования — при интенсивном чтении/записи до трети моего celeron'а 1.4 ГГц.
На процессорах с аппаратной поддержкой aes (это Core2Duo и более поздние процы) вообще не заметно нагрузки от шифрования диска.

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

UPD: systemd не умеет passdev, поэтому при обновлении debian до 8, надо остаться на sysvinit (как это сделать написано в официальной информации о выпуске), а при чистой установке, соответственно, перейти с systemd на sysv.
  • +7
  • Q2W
  • 23 января 2010, 14:38

Блог им. gumanoedНовый набор иконок для PuppyRus

В ходе совместно работы над проектом PuppyRus команда SlonStudio выпустила набор иконок для этого замечательного Live-дистрибутива.

PuppyRus Linux — это уникальная в своём роде операционная система, основанная на лучших технологиях мира Linux. Наша система характеризуется компактностью, высокой производительностью и простотой запуска. Для работы с системой подойдет любой компьютер, собранный из комплектующих 10-летней давности(Pentium II и аналоги). Запуск PuppyRus OS занимает не более 35 секунд (за вычетом чистого времени, необходимого для непосредственного чтения информации с СD-диска).

P.s. Все иконки выполнены в InkScape.
Оценить набор иконок для новой версии PuppyRus.

Блог им. gumanoedНастройка GeneralTouch 4001s в Ubuntu Linux

В ходе проекта «Информационный терминал для студентов НРТК» встала необходимость запустить сенсорное стекло GeneralTouch 4001s с rs232 интерфейсом под Linux.
На диске, распространяемом с устройством, драйвер для Linux требует ядро 2.6.11, которого мы так и не нашли ни в одном из старых дистрибутивов, имеющихся у нас.
В итоге, помогло письмо разработчику драйверов в компании GeneralTouch, Roy Yin, который прислал новую версию драйверов и набора программ для калибровки панели и ее работы в современных дистрибутивов. Благодаря этому комплекту система была запущена под Ubuntu 9.04.

Подробности о проекте, инструкция по установке и настройке GeneralTouch 4001S в Ubuntu и комплект драйверов на блоге Нижегородского РадиоТехнического Колледжа!

Блог им. sterhтопик-ссылка Sun Microsystem продан

Все-таки свершилась продажа Sun Microsystems корпорации Oracle. Европейская комиссия одобрила в рамках ЕС продажу Sun. После углубленного изучения комиссия пришла к выводу, что сделка не будет значительно препятствовать эффективной конкуренции в европейском экономическом пространстве (ЕЭП) или значительной его части.

GoogleAvast в составе Google Pack


Google добавил новый антивирус в пакет программ Google Pack. Антивирус Avast входит во французскую, немецкую, итальянскую, чешскую, русскую, португальскую и польскую версии наборов. Читать дальше

Блог им. KeloraenВыбираю дистрибутив

В марте закончится время нормальной работы бесплатной Windows 7 RC1 build 7100. Покупать не собираюсь, но и пиратку ставить не буду. Игры больше не радуют, а других причин оставаться на винде нет. Собственно, вот почему и выбираю дистрибутив.
Читать дальше

Блог им. gumanoedBlender и Ardour - лучшая связка для аниматора

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

Этой проблемой озаботилось сообщество BlenderArtists. Juan Pablo Bouza предложил элегантное решение, связывающее контроллеры Blender и программы обработки звука Ardour через сервер Jack.

Данное решение было применено при озвучивании очередного мультфильма SlonStudio на базе Нижегородского РадиоТехнического Колледжа.

Вы найдете описание процесса установки необходимого программного обеспечения и настройки связки Blender, Ardour и Jack по ссылке.

MozillaРелиз Firefox 3.6

Firefox 3.6 более чем на 20 процентов быстрее Firefox 3.5, в нём произведена обширная работа по повышению производительности при выполнении повседневных задач в Интернете, таких как работа с веб-почтой, загрузка фотографий, общение в социальных сетях и многих других. В него также включены новые функции, такие как лёгкие темы браузера, называемые Personas, проверка и обновление плагинов, повышена скорость выполнения JavaScript и улучшены знакомые функции, такие как умная адресная строка. Всё это призвано улучшить и упростить вашу работу в Интернете.
Читать дальше
  • +6
  • frichx
  • 21 января 2010, 23:10

Googleтопик-ссылка Google объявляет о предварительной поддержке тега video из стандарта HTML5

Корпорация Google объявила о начале бета-тестирования в сервисе YouTube поддержки тега "video", определенного в стандарте HTML5. От веб-браузера требуется поддержка видеоформата H.264, однако этот формат требует лицензионных отчислений, поэтому Mozilla Firefox вряд ли будет поддерживать video/h.264 в ближайшем будущем.

Блог им. KeloraenЧеловек и вирусы (мысли)

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