Просмотров: 12794

Зашифрованное хранилище - делаем на коленке. Часть 1


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

Заранее извиняюсь: описание намеренно сделано очень подробное и в пошаговом стиле, чтобы могли всё это воспроизвести даже начинающие — отчасти, поэтому литературная сторона изложения здесь здорово пострадала, но, надеюсь, это не касается его фактического содержания. Также я не объяснял, что значит каждая отдельная команда, сложного там ничего нет, а кому что-то неясно — на него всегда найдется соответствующий man!

Howto хорошо адаптировано под локальную сеть, а также сопровождается рисунками.

Ингредиенты:

  • Сервер FreeBSD 8.1 с установленной Samba
  • SATA HDD любого размера
  • SATA DAT кабель
  • USB flash накопитель
  • PuTTY

Поехали!


freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Intro

Вставляем жесткий диск, тут самое трудное открыть корпус и найти свободное место. У меня корпус экзотический — Desktop Delux «B166» Slim, но здесь очень удобный площадка под HDD и DVD отворачивается в сторону, чтобы можно было поставить устройства, в собранном виде это не получится слишком тесно всё.

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Два HDD WD — зеленой тихой, экономичной, не скоростной серии, отлично смотрятся вместе!

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Кабели SATA дата и питания трудно подключить не правильно, а вот сломать после подключения очень легко, не надо их дергать, особенно вниз! Если в корпусе нет разъема питания SATA — нужен переходник питания PATA HDD->SATA HDD.

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Другой конец SATA дата кабеля втыкаем в «мать», если первый раз, то не важно куда, после установки в ОС и последующей разборки кабеля надо возвращать всё на свои места.

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

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

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Готовим систему

Всё, включаем сервер, заходим на него с помощью PuTTY по SSH. Новый жесткий диск установлен системой, определяется, поэтому делаем:

ls /dev

видим в списке новый диск:

ad6

Приступаем к установке шифрования, для этого надо пересобрать ядро ОС с нужными параметрами! Для начала посмотрим, что у нас за версия системы, делаем:

uname -a или sysctl kern.version

и видим:

FreeBSD Server.home 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Apr 20 22:44:28

MSD 2009 root@Server.home: /usr/src/sys/i386/ compile/ipfw i386

У нас нестандартное ядро, кто-то его уже пересобирал (я даже знаю кто!) и назвал ipfw — это важно: именно в файл с этим именем надо добавить новые параметры, чтобы сохранились старые!

Перед сборкой ядра надо установить его исподники, например с CD, делать это надо при первой пересборке ядра.

sysinstal

выбираем:

Configure>Distributions>
[] src Source for everything
[x] sys
OK


Теперь приступаем к сборке ядра, тут используем ранее выясненное имя ядра «ipfw»:

cd /usr/src/sys/i386/conf
cp ipfw ipfwcrypt


Открываем этот файл.

Напоминаю команды редактора vi — кнопки [esc] [i] редактировать, [esc] [x] удалить, [esc] [:q!] [enter] выйти без записи, [esc] [:wq!] [enter] выйти записать.

vi ipfwcrypt

меняем строку на:

ident ipfwcrypt

добавляем снизу где-нибудь:

options GEOM_ELI
device crypto


далее делаем:

config ipfwcrypt
cd /usr/src/sys/i386/compile/ipfwcrypt
make cleandepend && make && make install


Последняя операция занимает значительное количество времени, по окончании надо добавить в файл /boot/loader.conf:

vi /boot/loader.conf

вот такой вот текст:

geom_eli_load="YES"

И перезагружаемся!

reboot

Готовим шифродиск

Самое время выбрать алгоритм шифрования. Blowfish — отличный алгоритм, его хвалят за стойкость и скорость. Ключ может быть от 16 до 448 бит, но у нас конечно будет 256. А вот скорость сильно зависит от процессора (не проверял, но проверю), в моем случае (Dual Celeron E1200 1,6Mhz, 1Gb) она упала в 5 раз с 100мб/c до 20 мб/c на одном диске — просто разные разделы, зашифрованный и нет.

Скорость можно проверить командой:

diskinfo -t ad6

Идем в папку /root

cd /root

Генерируем ключ под каким-нибудь незамысловатым обычным именем, расширение файла не важно:

dd if=/dev/random of=ads.txt bs=256 count=1

Диск ad6 у нас новый никак не прописанный в системе, так что сразу делаем его шифродиском:

geli init -s 4096 -K ads.txt -e Blowfish -l 256 /dev/ad6

Система запросит два раза пароль на этот наш шифродиск — его надо запомнить. Подключаем шифродиск так:

geli attach -k ads.txt /dev/ad6

В выводе команды ls /dev должно появиться ad6.eli.

Создаем на нем раздел:

newfs /dev/ad6.eli

Теперь для проверки делаем папку и монтируем туда наш шифродиск:

mkdir /root/test
mount /dev/ad6.eli/ /root/test


Смотрим:

df -h

Всё на своем месте:

/dev/ad6.eli 1.8T 8.0K 1.6T 0% /root/2

Далее размонтируем диск и отключим:

umount /dev/ad6.eli
geli detach /dev/ad6.eli


Для уже включенного в систему диска его надо удалить из загрузки, у нас это ad4s3d, все данные с него будут потеряны конечно же!

vi /etc/fstab

убираем или комментируем # строчку:

/dev/ad4s2d /usr/data/hdd1 ufs rw

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

Флешка-ключ


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

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Флешку берем любую обычную. Я взял не такую маленькую, но по-своему эффектную от SanDisk, кстати, на ней уже есть что-то для шифрования, но нам это не нужно!

freebsd security encrypt шифрование приватность защита код кодировка ключ шифр безопасность доступ

Вставляем флешку в сервер, её можно увидеть командой:

ls /dev

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

da0
da0s1


Создаем папку для флешки:

mkdir /mnt/usb

Монтируем флешку:

mount -t msdosfs /dev/da0s1 /mnt/usb

Копируем на флешку ключ он может лежать как в корне так и в папке, лучше как кто прятать:

cp /root/ads.txt /mnt/usb/

Отключаем флешку, при этом главное не сидеть в её папке в этот момент:

cd /
umount /dev/da0s1

~

Читаем вторую часть (окончание) этого howto: финальные скрипты подключения шифродиска и его отключения.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , ,
Эта запись опубликована: Четверг, 29 марта 2012 в рубрике Unix'овое.

1 комментарий

Следите за комментариями по RSS
  1. Голопопов

    Хех. Намного удобнее вариант с Nas, с отключением usb, ssh на нестандартном порту и рулами на iptables.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)