The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Динамическое подключение шифрованны..."
Отправлено auto_tips, 22-Фев-10 19:38 
Задача: Обеспечить шифрование централизованного хранилища с хранением ключей шифрования на внешнем USB-носителе (воткнул ключ - работает, вытащил - не работает). Пакет truecrypt не подошел из-за особенностей его лицензии и отсутствия во многих дистрибутивах. Для шифрования было решено использовать dm-crypt, из двух фронтэндов cryptsetup и cryptmount был выбран первый.


++ 1. Создаем ключ.

Берём обычный Flash-накопитель на базе интерфейса USB, любого размера. Форматируем его в vfat и монтируем:

   sudo su -
   mkfs.vfat /dev/sdd1
   mkdir /mnt/usbkey
   mount /dev/sdd1 /mnt/usbkey

Теперь, на него нужно скопировать будущий ключ:

   dd if=/dev/random of=/mnt/usbkey/public.key bs=1 count=256

Тут думаю все понятно. Теперь, ключ готов и он на флэшке.


++ 2. Шифрование тома.
У меня хранилище на зеркальном программном RAID'е. У вас может быть по-другому, но смысл тот же:

   cryptsetup --verbose -c aes-cbc-essiv:sha256 luksFormat /dev/md0 /mnt/usbkey/public.key

Том зашифрован, подключаем его:

   cryptsetup --key-file /mnt/usbkey/public.key luksOpen /dev/md0 public

Ну и форматируем:

   mkfs.ext3 -j -m 1 -O dir_index,sparse_super /dev/mapper/public

Всё, он готов.

++ 3. Автомонтирование

После чтения документации, консультаций на irc-канале #archlinux-ru  и экспериментов, был подготовлен следующий вариант файла конфигурации для udev /etc/udev/rules.d/10-usb-storage.rules:

   # если не sd уходим
   KERNEL!="sd[a-z][0-9]", GOTO="end"
   # если переменная существует, то отмонтируем /public
   ACTION=="remove", ENV{dir_name}=="?*", RUN+="/bin/umount -l /public"
   # если переменная существует, то закрываем ключ
   ACTION=="remove", ENV{dir_name}=="?*", RUN+="/sbin/cryptsetup luksClose public"
   # если переменная существует, то отмонтируем саму флэш
   ACTION=="remove", ENV{dir_name}=="?*", RUN+="/bin/umount -l /mnt/%E{dir_name}"
   # если переменная существует, то удаляем каталог
   ACTION=="remove", ENV{dir_name}=="?*", RUN+="/bin/rmdir /mnt/%E{dir_name}", GOTO="end"
   # проверяем на предмет монтирования
   ACTION=="add", PROGRAM=="/usr/bin/find /mnt/usbkey", RESULT=="/mnt/usbkey", GOTO="end"
   # ищем именно наши флэшки (просто у меня их две - с запасом, а посмотреть uuid можно /lib/udev/vol_id -u /dev/sdd1)
   # и переходим к монтированию, иначе уходим в конец
   ACTION=="add", PROGRAM=="/lib/udev/vol_id -u %N", RESULT=="4B7E-E254", GOTO="mount"
   ACTION=="add", PROGRAM=="/lib/udev/vol_id -u %N", RESULT=="2C3E-F663", GOTO="mount"
   GOTO="end"
   LABEL="mount"
   # опции монтирования и переменная каталога
   ACTION=="add", ENV{mount_options}="ro,utf8,noexec,nodev,noauto", ENV{dir_name}="usbkey"
   # создаем каталог
   ACTION=="add", RUN+="/bin/mkdir /mnt/%E{dir_name}"
   # монтируем ключ
   ACTION=="add", RUN+="/bin/mount -t vfat -o $env{mount_options} /dev/%k /mnt/%E{dir_name}"
   # открываем наш криптованный том
   ACTION=="add", RUN+="/sbin/cryptsetup --key-file /mnt/usbkey/public.key luksOpen /dev/md0 public"
   # монтируем его
   ACTION=="add", RUN+="/bin/mount /dev/mapper/public /public -t ext3 -o defaults"
   LABEL="end

Отладку конфигурации можно сделать так:

   udevcontrol log_priority=9999

И смотреть журнал:

   tail -f /var/log/messages

В итого, получим динамически монтируемые тома на основе usbtoken'ов.


URL:
Обсуждается: http://www.opennet.ru/tips/info/2302.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру