CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
20.02.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: BSD :: FreeBSD

Установка FreeBSD на шифрованный корневой раздел

http://prostounix.in.ua/

Введение

Тема безопасности всегда актуальна. Защита данных от посторонних один из основных ее аспектов. И утверждение "Если у вас паранойя, то это не значит что за вами не следят" имеет смысл.

Нашей целью будет полное шифрованние физического диска штатными средствами FreeBSD. В этом есть огромный плюс – с любого LiveCD невозможно определить содержимое винчестера, скроем само наличие ОС. Загружаться FreeBSD будет с флешки. Шифрование будет безпарольное, то есть на основе ключа. Это спасет от того момента (цитата с одного форума)

Паяльник в ж..., и все пароли вспоминаются :)

Ну, начнем...

ОС FreeBSD 7.1
Вся работа будет разбита на несколько этапов

  • подготовка
  • шифрование
  • установка
  • настройка и финиш

Этап первый: подготовка дисков, настройка среды шифрования

Загружаемся С DVD FreeBSD 7.1, в Sysinstall переходим в режим Fixit->CD/DVD

Забиваем диск и флешку мусором (ad4 мой жесткий диск, da0 флешка). Процес долгий, винт размером в 80Гб (на ноутбуке) – больше часа

Fixit# dd if=/dev/random of=/dev/ad4 bs=50m
Fixit# dd if=/dev/random of=/dev/da0 bs=5m

Создаем симлинки и загружаем модуль geom_eli

Fixit# ln -s /dist/lib /lib
Fixit# ln -s /dist/boot/kernel /boot/modules
Fixit# kldload geom_eli

Создаем ключ для шифрования размером 4096 байт, и временно храним его в /boot/keys

Fixit# mkdir /boot/keys
Fixit# dd if=/dev/random of=/boot/keys/ad4.key bs=512 count=8

Создаем точки монтирования загрузочной флешки и винта

Fixit# mkdir /mnt/crypt
Fixit# mkdir /mnt/boot0

Делаем редактором по дефолту ee (вместо vim)
А также указываем место установки ОС

Fixit# export EDITOR=/dist/usr/bin/ee
Fixit# export DESTDIR=/mnt/crypt

Теперь размечаем флеш-носитель (размер 4096Mb), форматируем и монтируем в /mnt/boot0. Новичку с fdisk будет немного сложно разобратся, но без него никак, советую прочитать www.opennet.ru

Fixit# fdisk -Bi /dev/da0
# На вопрос change the boot code ставим yes
Fixit# bsdlabel -Bw /dev/da0s1
Fixit# bsdlabe -e /dev/da0s1
# таблицу разделов к такому виду
# size offset fstype [fsize bsize bps/cfg]
# a: 8388497 16 4.2BSD 0 0 0
# c: 8388513 0 unused 0 0
Fixit# newfs -O2 -L BOOT0 /dev/da0s1a
Fixit# mount -t ufs -o rw /dev/da0s1a /mnt/boot0

Этап второй: шифрование диска и создание ФС

Geom Eli предоставляет такие алгоритмы шифрования с ключом от 128 до 256 бит (отсортированы по быстродействию)

  • blowfish
  • 3des
  • aes
  • camellia

Важно помнить: шифрование замедляет доступ к диску и создает нагрузку на процессор

Скорость падает почти в 2 раза (лично тест проводил на ASP12(ext3) и FreeBSD 7.1 45 MB/s против шифрованого 28 MB/s. В качестве алгоритма выступил Blowfish/192). У вас могут быть другие показатели, тестируйте и сравнивайте.

Свой выбор остановил на алгоритме Blowfish 192bit. Обьясняю почему (это всего лишь сугубо мое мнение):

  • первое, есть ассемблерная реализация для архитектуры i386 ()
  • второе, это самый быстрый из представленных алгоритмов
  • третье, разработан Брюсом Шнайером (авторитет среди криптологов)
  • четвертое, простота реализация позволяет личный аудит кода
  • пятое, длина в 192 бит обеспечивает оптимальное соотношение надежность:быстодействие

Советую почитать про Blowfish и Брюса Шнайера ru.wikipedia.org www.schneier.com

Вернемся к нашей задаче
Ключом /boot/keys/ad4.key шифруем диск и подключаем его

Fixit# geli init -b -v -P -K /boot/keys/ad4.key -P -e blowfish -l 192 -s 4096
Fixit# geli attach -p -k /boot/keys/ad4.key /dev/ad4
Fixit# ls /dev | grep "ad4"
ad4
ad4.eli

Размечаем шифрованный диск /dev/ad4.eli, создаем ФС, монтируем

Fixit# fdisk -Bi /dev/ad4.eli
# На вопрос change the boot code ставим yes
Fixit# bsdlabel -Bw /dev/ad4.eli
Fixit# bsdlabe -e /dev/ad4.eli
# таблицу разделов к такому виду
# size offset fstype [fsize bsize bps/cfg]
# a: 1024M 16 4.2BSD 0 0 0
# b: 1024M * swap
# c: 167771451 0 unused 0 0
# d: 512M * 4.2BSD 0 0 0
# e: 4096M * 4.2BSD 0 0 0
# f: 16384M * 4.2BSD 0 0 0
# g: * * 4.2BSD 0 0 0
Fixit# newfs -O2 -U -L ROOT /dev/ad4.elia
Fixit# newfs -O2 -U -L TMP /dev/ad4.elid
Fixit# newfs -O2 -U -L VAR /dev/ad4.elie
Fixit# newfs -O2 -U -L USR /dev/ad4.elif
Fixit# newfs -O2 -U -L HOME /dev/ad4.elig
Fixit# mount -t ufs -o rw /dev/ad4.elia /mnt/crypt
Fixit# mkdir /mnt/crypt/var
Fixit# mkdir /mnt/crypt/usr
Fixit# mkdir /mnt/crypt/tmp
Fixit# mount -t ufs -o rw /dev/ad4.elid /mnt/crypt/tmp
Fixit# mount -t ufs -o rw /dev/ad4.elie /mnt/crypt/var
Fixit# mount -t ufs -o rw /dev/ad4.elif /mnt/crypt/usr
Fixit# mkdir /mnt/crypt/usr/home
Fixit# mount -t ufs -o rw /dev/ad4.elig /mnt/crypt/usr/home

Этап третий: установка FreeBSD

Устанавливать FreeBSD будем вручную :)

Переходим в /dist/7.1-RELEASE и устанавливаем. Использовать Sysinstall бессмысленно, он не понимает eli :(

Fixit# cd /dist/7.1-RELEASE
Fixit# ls
base doc kernels proflibs
catpages games manpages src
dict info ports
Fixit# cd base
Fixit# ./install.sh
Fixit# cd ../doc
Fixit# ./install.sh
Fixit# cd ../kernels
Fixit# ./install.sh GENERIC
Fixit# cd ../proflibs
Fixit# ./install.sh
Fixit# cd ../catpages
Fixit# ./install.sh
Fixit# cd ../games
Fixit# ./install.sh
Fixit# cd ../manpages
Fixit# ./install.sh
Fixit# cd ../src
Fixit# ./install.sh all
Fixit# cd ../dic
Fixit# ./install.sh
Fixit# cd ../info
Fixit# ./install.sh
Fixit# cd ../ports
Fixit# ./install.sh

Система установлена на шифрованный диск. Переходим к настройке ОС

Этап четвертый: создание конфигурации

Для начала сделаем доступным ядро

Fixit# cd /mnt/crypt/boot
Fixit# rmdir kernel
Fixit# mv GENERIC kernel

Создадим /mnt/crypt/etc/fstab и приведем его к такому виду:

/dev/ad4.elia / ufs rw 1 1
/dev/ad4.elib none swap sw 0 0
/dev/ad4.elid /tmp ufs rw 2 2
/dev/ad4.elie /var ufs rw 2 2
/dev/ad4.elif /usr ufs rw 2 2
/dev/ad4.elif /usr/home ufs rw 2 2
/dev/ufs/BOOT0 /boot0 ufs rw,noauto 1 1

Создаем папку для монтирования загрузочной флешки

Fixit# mkdir /mnt/crypt/boot0

Копируем /mnt/crypt/boot в /mnt/boot0/boot, /mnt/crypt/etc/fstab в /mnt/boot0/etc/fsatb, /boot/keys в /boot0/boot

Fixit# cp -Rpv /mnt/crypt/boot /mnt/boot0
Fixit# mkdir /mnt/boot0/etc
Fixit# cp -pv /mnt/crypt/etc/fstab /mnt/boot0/etc/
Fixit# cp -Rpv /boot/keys /mnt/boot0/boot

Создаем файл /mnt/boot0/boot/loader.conf и приводим его к такому виду:

autoboot_delay="5"

geom_eli_load="YES"

geli_ad4_keyfile0_load="YES"
geli_ad4_keyfile0_type="ad4:geli_keyfile0"
geli_ad4_keyfile0_name="/boot/keys/ad4.key"

kern.geom.eli.batch="1"

Все, теперь перезагружаемся не забыв отмонтировать все ФС и настраиваем FreeBSD по своему вкусу

Fixit# cd /
Fixit# umount /mnt/boot0
Fixit# umount /mnt/crypt/usr/home
Fixit# umount /mnt/crypt/usr
Fixit# umount /mnt/crypt/tmp
Fixit# umount /mnt/crypt/var
Fixit# umount /mnt/crypt/usr
Fixit# geli detach /dev/ad4.eli
Fixit# shutdown -r now

Заключение

В результате мы добились того, чего хотели. Теперь без флешки винчестер бесполезная железяка. И как говорится в man geli: "Даже очень заинтересованная сторона с достаточными ресурсами не сможет раскодировать данные на жестком диске". А в критической ситуации флешку легко уничтожить.

Совет: по своему горькому опыту скажу – сделайте бекап ключа (к примеру спрятать с помощью steghide в картинку и выложить на бесплатном фотохостинге). Этим вы себя застрахуете от неприятных моментов, связанных с потерей флеш-носителя.

Рекомендации, вопросы, замечания пишем в комментариях

Источники:

  • man geli
  • man fdisk
  • man bsdlabel
  • man mount
  • man newfs
  • man tunefs
  • www.opennet.ru



Комментарии

аноним, Sun Dec 13 00:16:00 2009:
Толк от шифрования, если все равно сопрут ключи во время сеанса putty.exe?
аноним, Fri Nov 13 13:20:11 2009:
А как звучит (для примера): "Паяльник в ж..., и все картинки на бесплатном фотохостинге вспоминаются :)"?

Нисраслось...

Хотя статья полезная. Мне нравица.
аноним, Fri Nov 13 12:24:13 2009:
да,
в команде

В команде
Fixit# geli init -b -v -P -K /boot/keys/ad4.key -P -e blowfish -l 192 -s 4096

ключ -P второй раз зачем нужен?
аноним, Fri Nov 13 12:23:05 2009:
Продолжаем искать ошибки у автора и вляпываться по новой.

1. В команде
Fixit# geli init -b -v -P -K /boot/keys/ad4.key -P -e blowfish -l 192 -s 4096

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

Fixit# geli init -b -v -P -K /boot/keys/ad4.key -P -e blowfish -l 192 -s 4096 /dev/ad4


2. При попытки разметки шифрованного диска ad4

Fixit# fdisk -Bi /dev/ad4.eli

При первом же отказе изменить BIOSовские настройки выдает ошибку

fdisk: boot/mbr: length must be a multiple of sector size

после чего действие команды, естественно прекращается.

Как с этим бороться?
аноним, Thu Nov 12 17:52:43 2009:
смысл вот этого действа
На вопрос change the boot code ставим yes
аноним, Thu Nov 12 17:51:55 2009:
1. Объясните, пожалуйста, смысл этого действа?
2. "
Fixit# bsdlabel -Bw /dev/ad4.eli
Fixit# bsdlabe -e /dev/ad4.eli
"
Буква l в команде во втором случае не пропущена?

3. Вместо выполнения команды
Fixit# geli init -b -v -P -K /boot/keys/ad4.key -P -e blowfish -l 192 -s 4096


выдает список параметров к команде geli
Нет ли здесь ошибки?
Олег ОФТ, Fri Oct 30 03:20:50 2009:
В данном случае проблема "паяльника в ж..." решается за счет дополнительных мероприятий.

Например, если изготовитель ключа-флешки и исполнитель - два разных лица.

В этом случае:
- принципиальная (о чем можно позаботиться) недоступность для злоумышленников изготовителя и
- своевременное уничтожение ключа исполнителем

... действительно решает задачу (и никакой "паяльник" не поможет).

Что принципиально отличает сей вариант от обычного парольного.
аноним, Thu Oct 29 12:02:52 2009:
едрена вошь!
Олег ОФТ, Thu Oct 29 07:14:23 2009:
Четкая статья ... вот только с исходным посылом непонятки: "Паяльник в ж..., и все пароли вспоминаются :)"

А как звучит (для примера): "Паяльник в ж..., и все картинки на бесплатном фотохостинге вспоминаются :)"?

:)

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds