Шифрование на уровне файловой системы для сервиса Amazon EC2

Я на протяжении всей книги рекомендовал вам прибегнуть к шифрованию ваших файловых систем в облачных инфраструктурах Amazon. Прежде чем вы примете решение применять шифрование, вам необходимо взвесить, что для вас имеет высший приоритет — шифрование на уровне файловой системы в целях обеспечения безопасности или производительность работы вашей файловой системы. Зашифрованные файловые системы всегда будут работать медленнее, чем незашифрованные. Реальное замедление работы будет зависеть от того, что за файловую систему вы используете как основу, а также от того, применяете ли вы RAID. Лично я обычно использую файловую систему XFS на зашифрованных томах RAID02.

Чтобы воспользоваться данным советом, вам необходимо установить пакет cryptsetup3. Если вы хотите обеспечивать поддержку XFS, вам дополнительно потребуется пакет xfsprogs4. Если в качестве операционной системы вы выбрали Debian, вам нужно выполнить следующие команды от имени пользователя root:

apt-get install -y cryptsetup apt-get install -y xfsprogs echo sha256 >> /etc/modules echo dm_crypt >> /etc/modules

Командный сценарий (скрипт) UNIX, приведенный в листинге П1.1, если его запустить при старте операционной системы, создаст зашифрованный том XFS, предназначенный для использования эфемерного тома для экземпляра Amazon, использующего модель m1.small.

1  Вот только несколько источников, которые содержат полезную информацию и ценные советы по использованию Amazon Web Services:

http://jesperatwork.blogspot.com/2008/02/installing-aqualogic-bpm-enterprise.html, http://www.royans.net/arch/architecting-for-the-cloud-best-practices/, http://support.rightscale.com/12-Guides/EC2_Best_Practices/EC2_Site_Architecture_Diagrams, http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1633&categoryID=100, http://blogs.sun.com/VirtualGuru/entry/warm_welcome_opensolaris_on_amazon. — Прим. перев.

2 Подробнее о RAID различных уровней см.

http://ru.wikipedia.org/wiki/RAID, http://en.wikipedia.org/wiki/RAID, http://www.parallel.ru/computers/reviews/raid-technology.html, http://beget.ru/term_Raid. — Прим. перев.

3 См. http://tinyurl.com/398hbgp, http://code.google.com/p/cryptsetup/,

http://www.opennet.ru/base/sys/crypt_disk.txt.html, http://tinyurl.com/394599z, http://tinyurl.com/dbv8sk. — Прим. перев.

4 См. http://linux.about.com/cs/linux101/g/xfsprogs.htm, http://oss.sgi.com/projects/xfs/. —

Прим. перев.

Листинг П1.1. Скрипт UNIX, запускаемый при старте операционной системы и создающий зашифрованный том XFS для эфемерного тома, предназначенного для экземпляра Amazon EC2 на базе модели m1.small

# enStratus передает ключ шифрования через Web-сервис при запуске.

# Вы можете получить ключ шифрования из параметров запуска или, для

# эфемерного тома, даже создавать его по требованию, до тех пор пока вы

# не ожидаете возникновения необходимости в поддержке перезагрузки.

# В любом случае ключ шифрования временно помещается в файл /var/tmp/keyfile

# или любой другой по вашему усмотрению.

KEYFILE=/var/tmp/keyfile

# Переход к желаемой файловой системе; если она не поддерживается,

# возврат к ext3 FS=

if [ ! -x /sbin/mkfs.${FS} ] ; then FS=ext3

if [ ! -x /sbin/mkfs.${FS} ] ; then

echo "Unable to identify a filesystem, aborting…" exit 9

fi

fi

echo "Using ${FS} as the filesystem… "

if [ -f ${KFILE} ] ; then

if [[ -x /sbin/cryptsetup || -x /usr/sbin/cryptsetup ]]; then

# Отмонтировать точку монтирования /mnt, которая обычно

# монтируется к экземплярам заранее sudo umount /mnt

# Настроить шифрование на целевом устройстве

# (в данном случае на /dev/sda2)

sudo cryptsetup -q luksFormat –cipher aes-cbc-essiv:sha256 /dev/sda2 ${KFILE} if [ $? != 0 ] ; then

echo "luksFormat failed with exit code $?" exit 10

fi

# Открыть устройство для использования системой

sudo cryptsetup –key-file ${KFILE} -q luksOpen /dev/sda2 essda2 if [ $? != 0 ] ; then

echo "luksOpen failed with exit code $?" exit 11

fi

# Форматировать с использованием ранее указанной файловой системы sudo mkfs.${FS} /dev/mapper/essda2

if [ $? != 0 ] ; then

echo "mkfs failed with exit code $?"

exit 12

fi

# Удалить текущую запись в /etc/fstab для /dev/sda2 sudo perl -i -ane ‘print unless /sda2/’ /etc/fstab

# Создать новую запись в /etc/fstab (не монтировать автоматически!)

echo "/dev/mapper/essda2 /mnt ${FS} noauto 0 0" | sudo tee -a /etc/fstab

# Примонтировать диск sudo mount /mnt

if [ $? != 0 ] ; then

echo "Remount of /mnt failed with exit code $?" exit 13

fi

fi

fi

При использовании этой модели вам потребуется держать наготове файл с ключом в незашифрованном виде. Сервис enStratus (http://www.enstratus.com/) позволяет вам удалить этот файл после завершения работы скрипта, так как ключ будет передан ядру в тот момент, когда он понадобится.

Единственным слабым местом любого из перечисленных подходов является то, что незашифрованная версия ключа хранится в незашифрованном корневом разделе, пусть даже в течение очень краткого промежутка времени, как в модели enStratus.

Чтобы обойти эту проблему, можно воспользоваться следующим простым приемом:

1.      Автоматически  сгенерировать  случайный  ключ  и  сохранить  его  в  каталоге

/var/tmp.

2.      Примонтировать  эфемерное  хранилище  к  каталогу  /mnt как зашифрованное устройство.

3.      Стереть автоматически сгенерированный ключ.

4.      Передать постоянный ключ из enStratus (или любого другого инструмента).

5.      Сохранить его в /mnt/tmp.

6.      Примонтировать том EBS, используя постоянный ключ шифрования.

7.      Удалить постоянный ключ шифрования.

8.      Использовать том EBS для хранения всех критически важных данных.

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

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

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100