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

 

Видишь раздел? Нет? А он есть

Итак, у нас есть носитель, на котором записан каталог /boot с ключами. Было бы хорошо иметь на флешке скрытый раздел, с которого загружалась бы ОС, и чтобы ей самой можно было повседневно пользоваться в других системах. Это скрывает важность нашего накопителя от злоумышленника и на первый взгляд не вызывает никаких подозрений. Для UNIX-пользователей проблемы в этом нет, а вот для пользователей Windows они возникают на начальном этапе. Дело в том, что Microsoft «разрешила» сменным накопителям иметь только один активный раздел. Даже если поделить флешку на два раздела средствами все того же UNIX, а потом воспользоваться ей в ОС Windows, то будет виден только первый (активный) раздел.

Решений данной проблемы множество — от прошивки контроллера до подмены драйверов в ОС. Минусы и плюсы этих методов различны. Некоторые производители задумались об этом и предоставили соответствующие утилиты для тюнинга своей продукции. Другие просто забили. Собственно, про подмену драйверов и думать не стоит, так как такие девайсы будут работать только там, где об этом позаботились заранее. Поэтому воспользуемся одним элегантным способом, который поможет нам выполнить поставленную задачу. Иногда явные минусы ОС можно превратить в плюсы. Способность Windows иметь только один активный раздел нам поможет. Мы «распилим» наш носитель на две части и сделаем первый раздел активным. Им будем пользоваться в Windows-системах. Во второй, неактивный (с точки зрения Windows), мы запишем загрузчик, скопируем необходимые файлы и будем загружать нашу security OS. Так как неактивные разделы ОС Windows не отображает в обозревателе, мы скрываем само наличие раздела с загрузчиком.

Только не стоит забывать о том, что при использовании оснастки «Управление дисками» или другого стороннего софта этот неактивный раздел будет обнаружен.

Видим невидимое. Съемный диск F имеет скрытый раздел
Видим невидимое. Съемный диск F имеет скрытый раздел

Для еще большей правдоподобности необходимо будущий активный раздел рассчитать по «особой» технологии. Дело в том, что не бывает накопителей, равных 2, 4, 8, 16 Гбайт. Как правило, они меньше. Это своего рода маркетинговый ход, которым пользуются производители носителей информации, тем самым обманывая покупателей. Они считают, что в мегабайте не 1024 Кбайт, как нас учат в школе, а 1000. Поэтому, чтобы посчитать правильно раздел на четыре гигабайта, необходимо воспользоваться формулой:

4 000 000 000 / 1024 / 1024 / 1024 ≈ 3,725 290 298 461 914 байт, или 3720 Мбайт

Отлично! Теперь, когда все посчитано, поделено, сто раз перепроверено, будем действовать. Удалим все с нашего носителя:

WARNING


Перед уничтожением данных не забудь сделать бэкап!
# /sbin/gpart destroy -F da0
# /sbin/gpart create -s gpt da0

Создадим партиции для активного раздела Windows, загрузчика FreeBSD и каталога /boot:

# /sbin/gpart add -t ms-basic-data -s 3720 /dev/da0
# /sbin/gpart add -t freebsd-boot -s 64k /dev/da0
# /sbin/gpart add -t freebsd-ufs /dev/da0

Во второй строке мы указали тип партиции ms-basic-data. Это основной раздел данных для семейства ОС Microsoft Windows. Он является эквивалентом FAT16, FAT32 и NTFS в MBR.

INFO


На странице справочного руководства man gpart(8) можно ознакомиться с полным списком поддерживаемых типов партиций.

Далее нужно записать загрузчик (так же, как в первой части статьи), но не забываем, что необходимо указывать, в какое место его поместить. Потому что первый, активный раздел (в терминологии Windows) у нас предназначен для повседневного использования. Для указания индекса партиции воспользуемся ключом -i:

# /sbin/gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 2 /dev/da0

Далее создаем ФС, монтируем раздел и копируем на него необходимые файлы для загрузки ОС. В итоге получилась физическая флешка, логически поделенная на две. Такой носитель будет работать в версиях Windows 7 и выше. Не забывай об этом, когда будешь использовать свой девайс.

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

Есть несколько вариантов решения этой проблемы. На мой взгляд, самый надежный — это накладывать патчи безопасности непосредственно на GENERIC-ядро, которое лежит в системе. Дело в том, что наш каталог /boot, который остался на HDD после установки ОС, так там и лежит. По закону жанра, этот каталог должен был служить точкой монтирования для нашего съемного накопителя. То есть при загрузке системы флешка была бы смонтирована и стала бы частью файловой системы. Потом, чтобы ее извлечь после успешной загрузки ОС, пришлось бы сначала ее отмонтировать. Согласись, это не очень удобно. А оставлять ее торчащей в нашем сервере — не самая лучшая затея. Поэтому я намеренно не стал вносить изменения в /etc/fstab и делать /boot частью системы при инсталляции, а выбрал немного иной путь.

В директории /boot (на жестком диске) всегда лежит дефолтовое ядро, к которому можно применять патчи безопасности с помощью утилиты freebsd-update. По необходимости надо смонтировать съемный носитель и выполнить копирование пропатченного ядра на него. Если ты используешь кастомное ядро, то вначале его необходимо пересобрать из обновленных исходных кодов, а уже потом переносить. Не забывай, что утилита freebsd-update работает только с ядром GENERIC.

 

Бэкапомания, сэр!

Теперь необходимо подумать, как свести к минимуму ущерб от потери данных, которые записаны на flash-накопителе. Не секрет, что ничего вечного не бывает. И наш девайс не исключение. К тому же он может оказаться объектом пристального внимания злоумышленников, а также имеет для нас очень большую ценность. Решение напрашивается само собой — нужен бэкап. Люди делятся на три группы: тех, кто не делает бэкапы, тех, кто их делает, и тех, кто делает и иногда проверяет, что сделал. Я отношусь к третьей категории и поэтому сразу задумался, как бы безопасно сделать копию ключей.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Что можно сделать с iPhone, зная пасскод. Как сливают данные, уводят iCloud и блокируют остальные устройства

Последние несколько месяцев мы много писали о нововведениях в iOS 11. «Теперь-то заживем!»…