Журнал LinuxFormat - перейти на главную

LXF113-114:DrBrown3

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Защитите свои данные

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

Итак, вы установили все последние обновления безопасности на свои серверы. Вы запретили вход в систему под пользователем root, установили пароль на Grub и закрутили гайки брандмауэра так крепко, что даже пакеты SSH должны вытирать ноги, прежде чем войти. Вы чувствуете себя в безопасности. А потом в серверную комнату входит обиженный сотрудник с отверткой, откручивает жесткий диск и получает всю корпоративную базу данных. Уязвимы не только серверы; на ноутбуках ваших сотрудников наверняка тоже есть конфиденциальные данные. Ноутбуки и карты памяти похитить проще всего. За последние год или два в СМИ было достаточно сообщений о краже данных, чтобы обратить внимание на эту угрозу.

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

План A: Шифрование всей файловой системы

В терминах Linux блочное устройство – это накопитель с произвольным доступом на основе блоков. Блочные устройства важны потому, что Linux монтирует на них файловые системы, и самый очевидный при- мер блочного устройства – жесткий диск. Однако ядро Linux версии 2.6 включает слой отображения устройств [device mapper], позволяющий создавать виртуальные слои блочных устройств поверх физических блочных устройств, таких как диски. Эти виртуальные блочные устройства поддерживают такие возможности, как распределение данных [striping], зеркалирование, сохранение состояний, шифрование и т.д. Управление логическими томами (Logical volume management – LVM, LXF112) и программный RAID реализованы посредством отображения устройств.

Особый интерес здесь представляет dm-crypt, который шифрует виртуальное блочное устройство на соответствующем разделе диска. Некоторое время эта технология входила в ядро, но на CD Alternate Ubuntu 8.10 Canonical значительно упростила ее использование. На этом CD – не Live-дистрибутив, а дистрибутив с более традиционным текстовым инсталлятором. В частности, утилита разбиения [partitioner] позволяет разместить вашу файловую систему по кускам на шифрованных логических дисках.

Простейший вариант – выбрать “Guided – use entire disk and set up encrypted LVM” на основном экране разбиения на разделы.

План B: Файловая система ecryptfs

Шифрование целого раздела на уровне устройства (которое я только что описал), конечно, поставит в тупик похитителя жесткого диска, но у него есть и несколько недостатков. Во-первых, при загрузке нужно указывать пароль, что отменяет возможность автоматической перезагрузки. Во-вторых, неясно, что делать с резервными копиями: например, как сохранять инкрементные резервные копии на недоверенных удаленных компьютерах? И в-третьих, это не дает обычным пользователям чудесного ощущения защищенности данных от любопытных глаз, так как файлы пользователей в масштабе всей системы защищены одним паролем. Как только система загружена, и системный администратор «разблокировал» зашифрованный раздел, она ведет себя точно так же, как если бы это был обычный раздел.

Существует альтернативный подход к шифрованию – файловая система ecryptfs. Ecryptfs – стековая файловая система: она создает слой «верхней» файловой системы поверх существующей смонтированной «нижней» файловой системы. На верхнем уровне файлы представляются как незашифрованные, на нижнем – как зашифрованные. На диске они хранятся только в зашифрованном виде. Кстати, простите за отсутствующее ‘n’ в названии. Я догадываюсь, что она присоединилась к ‘n’, исчезнувшей из ‘umount’; надеюсь, вместе им весело!

Ecryptfs регистрируется как виртуальная файловая система в ядре Linux, и файловые системы можно смонтировать, указав тип файловой системы ‘ecryptfs’ в команде mount. Например, если выполнить команды

cd /home/chris
mkdir lower
mkdir upper
sudo mount -t ecryptfs lower upper

мы получим незашифрованные файлы (/home/chris/upper), находящиеся «над зашифрованными» (/home/chris/lower). Убедиться в этом можно, выполнив команду mount:

$ mount | grep ecrypt
/home/chris/lower on /home/chris/upper type ecryptfs (rw,ecryptfs_sig=dbcc9a3da3399a69,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,)

После этого для каждого (текстового) файла, создаваемого в каталоге /home/chris/upper, в каталоге /home/chris/lower появится соответствующий зашифрованный файл. Например,

$ echo “Attack at dawn” > upper/battleplan
$ ls -l lower upper
lower:
total 12
-rw-r--r-- 1 chris chris 12288 2008-10-09 13:40 battleplan
upper:
total 0
-rw-r--r-- 1 chris chris 15 2008-10-09 13:40 battleplan

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

Обратите внимание, что если ecryptfs смонтирована, она не сможет защитить ваши личные файлы от пользователей, вошедших в систему, если права доступа на каталог «верхнего уровня» слишком открытые. Права доступа должны быть равны 700.

Путь Ubuntu

Следуя своему девизу «Linux для людей» (“Linux for human beings”), в Ubuntu 8.10 Canonical попыталась сделать ecryptfs по возможности безболезненной. Скрипт ecryptfs-setup-private устанавливает все необходимые настройки для пользователя, создает каталоги верхнего и нижнего уровня (~/Private и ~/.Private соответственно) и задает права доступа к ним. Ключ шифрования можно ввести вручную или сгенерировать случайным образом. В любом случае, сам ключ шифруется («сворачивается») с использованием парольной фразы, заданной пользователем. После этого файловую систему ecryptfs можно смонтировать и размонтировать с помощью двух простых скриптов, ecryptfs-mount-private и ecryptfsumount-private, каждый из которых представляет собой обертку для рассмотренной ранее команды mount -t ecryptfs.

Ubuntu сделал дополнительный шаг. Он включил операции монтирования и размонтирования в процесс входа в систему с помощью нового модуля PAM pam_ecryptfs.so. Этот модуль вызывается во время входа в систему: он «разворачивает» ключ шифрования и использует его для монтирования ~/.Private на каталог ~/Private. Чтобы это работало, пароль, используемый для шифрования ключа шифрования, должен совпадать с паролем пользователя.

Если система устанавливается с ‘Alternate’ CD, то при создании начальной учетной записи пользователя пользователя можно настроить ecryptfs. Этой возможности не оказалось в обычной Desktop-версии; правда, я работал еще с бета-релизом Ubuntu 8.10, и в финальном релизе все могло измениться.

Одна довольно причудливая деталь реализации в Ubuntu – существование файла с именем THIS DIRECTORY HAS BEEN UNMOUNTED TO PROTECT YOUR DATA – Run mount.ecryptfs_private to mount again в каталоге Private. Конечно, он отображается, только когда ecryptfs не смонтирована. Этот файл – символическая ссылка на mount.ecryptfs_private. LXF

Несколько предостережений

Будьте осторожны: при любом описанном методе шифрования, если вы забудете пароль, восстановить данные будет совершенно невозможно. Забыть обычный пароль, даже пароль root, не так страшно – достаточно запустить систему в режиме аварийной загрузки и сбросить его. Забыть пароль шифрования – совсем другая и более серьезная ситуация. Вы (извините за подобный термин) попали. Не будучи математиком или криптографом, я не знаю, чему равно число возможных вариантов пароля, но верю, что оно огромно, и я не хотел бы полагаться на такой способ восстановления корпоративной базы данных!

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

Наконец, чтобы закончить на минорной ноте, в разделе 49 части 3 Акта регулирования полномочий следственных органов от 2000 года (Regulation of Investigatory Powers Act 2000 Part 3) (исследование электронных данных, защищенных с помощью шифрования и т.д.) определены условия, при которых следователи могут легально требовать у пользователей их ключи шифрования. Но я думаю, что для этого вам нужно сделать что-то по-настоящему нехорошее.

Персональные инструменты
купить
подписаться
Яндекс.Метрика