Truecrypt + Ubuntu server


В данной статье описывается личный опыт по созданию шифрованного хранилища данных на базе файлового сервера небольшого предприятия работающего под управлением ОС Linux, а в частности Ubuntu Server 10.04.3. Это текущий релиз LTS имеющий поддержку 3 года. Описанные способы имеют право на жизнь в остальных дистрибутивах Ubuntu и Debian.
Подробно описывать откуда качать и как ставить не буду, а для начинающих дам пару ссылок. Качать дистрибутив можно отсюда. А необходимую информацию для первоначальной настройки можно почерпнуть здесь. Truecrypt можно получить бесплатно здесь. Ubuntu относится к дистрибутивам Linux, которые практически не требуют никаких лишних телодвижений после установки, что экономит приличное количество времени.Конечно можно собирать операционную систему и из исходных кодов, но это дополнительные затраты времени, а время - это деньги.

Почему выбран truecrypt? Truecrypt это кроссплатформенный программный пакет с открытым исходным кодом с очень широким спектром возможностей.

Итак приступим.

Дано: Виртуальная машина Oracle VM Virtualbox 4.1.12 (для тех у кого есть сервер во плоти то это сервер), Дистрибутив Ubuntu 10.04.03, Truecrypt 7.1a, внутренняя сеть с DHCP, кеширующим DNS и доступом в интернет.

Устанавливаем ОС.

Записываем CD и загружаемся или подключаем к виртуальной машине загрузочный диск в виде iso-файла и загружаемся. Выбираем язык. По ходу настройки Языка нужно будет дать ответы на пару простых вопросов. Выбираем имя сервера временную зону и пр. Размечаем диск под необходимую нам структуру. Т.к. у меня все становится на виртуальную машину я иду по пути наименьшего сопротивления и выбираю автоматически режим разметки с нешифрованным LVM. Выбираем имя 1-го пользователя и пароль. Т.к. пользователь сразу получает права администратора, то пароль лучше выбрать сложный имя тоже лучше не делать типа user или admin ибо с этого начинается подбор пароля. Выбираем список стандартных пакетов для установки. В нашем случае OpenSSH server и Samba File Server. Для простого файл-сервера больше собственно ничего и ненужно. Все необходимые пакеты будут докачены из интернета в автоматическом режиме. Установка Ubuntu без активного подключения к интернету задача трудно реализуемая. Ставим загрузчик Grub и жмем перезагрузится. Все. Первый этап завершен.

Приступаем к настройке сервера. Для этого осуществляем вход под нашим пользователем и с нашим паролем.

Обновим систему.
sudo apt-get update

sudo apt-get upgrade

Узнаем текущий ip-адрес

sudo ifconfig

или устанавливаем свой, прописав нужные параметры в /etc/network/interfaces. Какие именно? Наберите в консоли man interfaces и вы найдете ответ.

На данном этапе можно завершить наш сеанс.

logout

И отключить монитор и клавиатуру. (Сворачиваем окно виртуалки) Доступ к серверу мы будем получать через клиента терминального сервера ssh. Я рекомендую PuTTY. Брать здесь. Или portable-версию для windows тут.

Заходим.

Кому удобно работать исключительно в консоли может работать там, но для более комфортной работы с файлами я обычно использую midnight commander или mc

sudo apt-get install mc

Запускаем mc в режиме суперпользователя дабы получить на данную сессию права суперпользователя. root в свежеустановленной системе не активен, да он нам и ненужен.

sudo mc

Кому mc ненужен набираем

sudo -i

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

Создаем необходимую нам структуру папок (можно с помощью mc). У вас структура может быть иной.

mkdir /Files

mkdir /Files/1Cbase1 - папка для открытой файловой БД 1С.

mkdir /Files/1Cbase2 - папка для закрытой(шифрованной) файловой БД 1С.

mkdir /Files/Exchange - Открытый файлообменник с еженедельной автоочисткой.

mkdir /backup - хранение резервных копий файлов (желательно размещать на отдельном диске.)

mkdir /Files/Storage - файловое хранилище открытого типа для постоянного хранения файлов.

mkdir /Files/Storage2 - Закрытое(шифрованное) файловое хранилище для постоянного хранения файлов.

Устанавливаем truecrypt

Качаем отсюда http://www.truecrypt.org/downloads пакет для консоли. 32 или 64 бита зависит от установленной версии Ubuntu-server.

Чем меньше мы следов оставим на сервере, тем лучше. Поэтому берем чистый внешний диск (флэшку), который в последствие будет использован для размещения ключа и скрипта для монтирования криптоконтейнера. Переписываем на нее пакет. Вставляем в USB порт сервера. Определяем параметры для монтирования.

blkid

Создаем папку для монтирования. Можно это делать с помощью mc

mkdir /media/usb

Монтируем.

mount UUID=FC2E-A1E4 /media/usb -t vfat -o iocharset=utf8

Где FC2E-A1E4 это UUID нашей флешки.

Разархивируем на нашу флешку.

tar -xvf /media/usb/truecrypt-7.1a-setup-console-x64.tar.gz -C /media/usb/

Устанавливаем truecrypt

sh /media/usb/truecrypt-7.1a-setup-console-x64

Выбираем установка(1). Читаем и соглашаемся с условиями использования (пишем yes)

На этом установка truecrypt закончена.

Устанавливаем шифрование для раздела подкачки, чтобы невозможно было взять что либо из раздела подкачки.

apt-get install cryptsetup libpam-mount

Выключаем подкачку

swapoff /dev/mapper/fileserver-swap_1

Где /dev/mapper/fileserver-swap_1 - это наш раздел подкачки.

Уничтожаем данные в существующем разделе подкачки заполняем мусором

dd if=/dev/urandom of=/dev/mapper/fileserver-swap_1 bs=1M

Редактируем файл /etc/crypttab добавляем строку:

cryptoswap /dev/mapper/fileserver-swap_1 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,hash=sha256,swap

Редактируем файл /etc/fstab комментируем строку с нашим старым разделом подкачки и добавляем строку:

/dev/mapper/cryptoswap none swap sw 0 0

Перезагружаем сервер

reboot

Заходим получаем sudo

sudo -i

Поверяем работоспособность шифрованного раздела подкачки:

cryptsetup status cryptoswap

Ответом должно быть что то типа этого:

/dev/mapper/cryptoswap is active:
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/mapper/fileserver-swap_1
offset: 0 sectors
size: 3514368 sectors
mode: read/write

Если все хорошо то переходим к самой вкусной части - создание криптоконтейнеров

Смонтируем нашу "ключевую" флешку:

mount UUID=FC2E-A1E4 /media/usb -t vfat -o iocharset=utf8

Создадим ключ или ключи к нашим криптоконтейнерам. Покажу на примере одного:

truecrypt --create-keyfile /media/usb/1.key

Ключ должен создаваться исключительно на флешке. Для создания необходимо набрать 320 символов в случайном порядке. В качестве ключа можно использовать любой файл или папку с файлами. Я обычно формирую на флешке свои ключи.

Создаем криптоконтейнеры для наших шифрованных папок:

truecrypt -c /home/admin1/video1.mkv -k /media/usb/1.key -p ""

Используем наш ключ(параметр -k) и указываем пустой пароль (параметр -p). При создании указываем алгоритм шифрования, алгоритм хеша, размер и тип файловой системы. Параметры выбираются Вами самостоятельно. Про алгоритмы шифрования и хэша можно почитать в Википедии и других источниках. Тип файловой системы выбирается в зависимости от того где мы будем использовать криптоконтейнеры. Я создала контейнер с Ext4.

По аналогии с 1-м контейнером создаем 2-й с файловой системой FAT. Проверим кроссплатформенность truecrypt.

truecrypt -c /home/admin1/video2.mkv -k /media/usb/1.key -p ""

Пробуем монтировать наши контейнеры:

truecrypt /home/admin1/video.mkv /Files/Storage2 -k /media/usb/1.key -p "" --protect-hidden="no"

truecrypt /home/admin1/video2.mkv /Files/1Cbase2 -k /media/usb/1.key -p "" --protect-hidden="no"

Все. Контейнеры примонтированы. Проверяем:

truecrypt -l

Ответом будет:

1: /home/admin1/video.mkv /dev/mapper/truecrypt1 /Files/Storage2
2: /home/admin1/video2.mkv /dev/mapper/truecrypt2 /Files/1Cbase2

Смотрим файловые системы:

blkid

Ответом будет:

/dev/sda1: UUID="e37af0a1-f984-486b-807e-38e58a48bff9" TYPE="ext2"
/dev/sda5: UUID="yxcEV9-GNZS-f1E8-51e6-f9Fq-igAB-EzfAiq" TYPE="LVM2_member"
/dev/mapper/fileserver-root: UUID="c385da38-9882-4357-b955-032358fece24" TYPE="ext4"
/dev/mapper/cryptoswap: UUID="cece4902-581e-4511-adfe-b5b0f9f10bbe" TYPE="swap"
/dev/sdb: LABEL="ADATA UFD" UUID="FC2E-A1E4" TYPE="vfat"
/dev/mapper/truecrypt1: UUID="e5b945e5-d8db-4aa1-a74e-0ff373f55d00" TYPE="ext4"
/dev/mapper/truecrypt2: UUID="63E7-3337" TYPE="vfat"

Отмонтировать все это можно командой

truecrypt -d

Пишем скрипт для автоматического монтирования криптоконтейнеров...

Создаем файл (имя может быть любое):

nano /media/usb/avs.sh

Следующего содержания:

#!/bin/bash

truecrypt /home/admin1/video.mkv /Files/Storage2 -k /media/usb/1.key -p "" --protect-hidden="no"
truecrypt /home/admin1/video2.mkv /Files/1Cbase2 -k /media/usb/1.key -p "" --protect-hidden="no"

сохраняем.

Редактируем /etc/rc.local

nano /etc/rc.local

перед exit0 добавляем

#!/bin/sh -e
#AVS
mount UUID=FC2E-A1E4 /media/usb -t vfat -o iocharset=utf8
/media/usb/avs.sh
umount /media/usb

Собственно все. на данном этапе мы получили автоматическое монтирование криптоконтейнеров при наличии нашей флешки в любом USB-порте нашего сервера.

Продолжение следует...

P.S. Все комментарии не касающиеся статьи и использованных решений удаляются. Все права на торговые марки и ПО принадлежат их владельцам. В процессе написания статьи использовалось ПО с открытым кодом или бесплатное свободное для использования ПО.

Если у вас возникли вопросы, вы можете обратиться к нашим специалистам