Ключевые слова:disk, crypt, ubuntu, linux, truecrypt, dm_crypt, (найти похожие документы)
From: Alrond <http://www.alrond.com>
Date: Sun, 23 Feb 2008 17:02:14 +0000 (UTC)
Subject: Шифрование диска в (K)Ubuntu для домашнего и бизнес применения
Оригинал: http://www.alrond.com/ru/2007/may/29/encryption-for-ubuntu/
Данные в компьютерах обычно хранятся в открытом виде, как в Windows,
так и в Linux, что дает доступ к любой информации практически любому,
на нее покушающемуся (!) или так "случайному прохожему" или даже
неслучайному. Если вы хотите что-то скрыть от посторонних глаз, то эта
статья для вас - умеренных параноиков и пользователей (K)Ubuntu.
Особенно это касается владельцев ноутбуков (про массовые кражи все
читали).
Взялся за это дело шифровальное, посмотрел, что народ пишет. Нашел
немного грамотных статей, для линукса тем более, пришлось самому
колесо изобретать. Может, кому тоже пригодится.
Я зашифровал не все разделы, а только пользовательские данные. Это
нисколько не меньшая безопасность, чем шифровать весь корневой раздел
со всеми пакетами и библиотеками!
Итак, что требует шифрования:
* swap
* /home - поместить в контейнер tc (можно в виде файла, или в раздел)
* /tmp - эти данные нужны только для одного сеанса, поэтому смело помещаем в tmpfs
* /var/tmp - то же самое
* /var/spool - здесь хранятся пользовательские задачи cron, задачи
для принтера, лучше поместить в контейнер вместе с домашней папкой
* /var/mail - в контейнер
* /var/lib/slocate - в контейнер
* /var/log - в контейнер. хотя кое-что на этапе загрузки не попадет
сюда, но это не относится к пользовательским логам
Для линукса есть как встроенные (dm-crypt, loop-aes...), так и
стороннее средство - TrueCrypt, работающее как в Windows
Vista/XP/2000, так и в Linux (правда примерно в 1.5 раза медленнее). И
конечно же с открытым кодом (привет спецслужбам :)
Для шифрования swap можно довериться средствам линукса
Детально и коротко:
sudo -i
apt-get install cryptsetup
echo aes >> /etc/modules
echo dm_mod >> /etc/modules
echo dm_crypt >> /etc/modules
swapoff -a
cryptsetup -d /dev/urandom create cryptoswap /dev/sda2
mkswap /dev/mapper/cryptoswap -L accessisdenied -v1
echo 'cryptoswap /dev/sda2 /dev/urandom swap' >> /etc/crypttab
в fstab заменить ваш swap на:
/dev/mapper/cryptoswap none swap sw 0 0
далее
dd if=/dev/urandom of=/dev/sda2 count=100
swapon -a
Дальше больше. Размещение в tmpfs
mv /tmp /ttmp
mkdir tmp
chmod 777 tmp
в /etc/fstab добавить:
tmpfs /tmp tmpfs rw,noexec,nosuid,nodev,mode=0777
далее
mv /var/tmp /var/ttmp
ln -s /tmp /var/tmp
Теперь помещаем в криптоконтейнер каталоги из /var
mkdir /home/.var
chmod 755 /home/.var
mv /var/spool/ /home/.var/spool
ln -s /home/.var/spool /var/spool
mv /var/mail /home/.var/mail
ln -s /home/.var/mail /var/mail
mkdir /home/.var/lib
chmod 755 /home/.var/lib
mv /var/lib/slocate /home/.var/lib/slocate
ln -s /home/.var/lib/slocate /var/lib/slocate
mv /var/log home/.var/log
ln -s /home/.var/log /var/log
Индексацию зашифрованных разделов нужно отключать, в файле
/etc/updatedb.conf, в PRUNEPATHS добавить /home
Затем перезагрузиться и удалить каталоги /ttmp, /var/ttmp
Следующим этапом идет собственно шифрование раздела /home Я
воспользовался руководством от MasterGnome, при этом переделав
некоторые моменты, касающиеся инсталляции и форматирования.
Для Ubuntu Feisty инсталляция несколько проще:
Устанавливаем пакет Automatix2, если его у вас еще нет. Через
Automatix устанавливаем TrueCrypt.
Тестируем TC:
if truecrypt --test &> /dev/null; then echo "Ok"; else echo "Error"; fi
TrueCrypt позволяет создавать криптоконтейнеры как в разделах, так и в
файлах, которые потом подключаются как разделы. Для замены одного
другим в командах, достаточно поменять раздел (например /dev/sda3) на
название файла (например home.tc).
Truecrypt позволяет шифровать с использованием алгоритмов AES,
Twofish, Serpent.
Все три алгоритма очень надежны, и сейчас не существует даже
теоретического способа взлома, кроме метода полного перебора.
AES - выбран как правительственный стандарт в США
Twofish - на процессоре AMD64 (linux kernel i386 2.6.20-16) самый
быстрый. Опережающий AES в среднем на 20%
Serpent - существенно медленнее остальных
Заметил, что Twofish быстрее на AMD, а AES на Intel, причем на Intel
Mobile оба алгоритма примерно равны. Вы можете выбрать любой из них,
но я советую сначала протестировать на скорость на вашем компьютере.
Используются хешовые функции RIPEMD-160,SHA-1 и Whirlpool.
SHA-1 - появилась теоретическая возможность взлома, и хотя это скорее
относится к письмам и цифровым подписям, не рекомендуется к
применению.
RIPEMD-160 - стоит по умолчанию. Для этого алгоритма даже теоретически
взлом пока не возможен. Но вот его предшественник RIPEMD уже себя
дискредитировал. Whirlpool - теоретически самая медленная, некоторые
источники утверждают, что медленнее в 2-3 раза, чем остальные. Хотя
мои тесты показали, что в TrueCrypt это не так. Как в Linux, так и в
Windows XP отставание не более 5% от предыдущих. На сегодняшний момент
самый стойкий алгоритм. И самый молодой.
Можно использовать Whirlpool или RIPEMD-160.
В TC есть возможность использовать каскады алгоритмов. Связка
AES-Twofish вместе с Whirlpool и скрытый контейнер - это для
суперсекретных данных ;)
Прежде чем продолжить, сохраните где-нибудь папку /home. После этого,
если у вас home расположен на отдельном разделе (пр. sda3), то его
надо размонтировать:
umount /home
Для директории /home создадим внешний криптоконтейнер:
truecrypt --encryption AES --type normal -c /dev/sda3
файловую систему как None, любой алгоритм хэша, и два раза пароль.
Потом:
truecrypt /dev/sda3
Теперь форматирование контейнера:
mkfs.ext2 -v /dev/mapper/truecrypt0
mount /dev/mapper/truecrypt0 /home
переписать туда сохраненный /home со всеми вашими данными. Не забудьте
про .var из сохраненного /home и удалите там все файлы
umount /home
truecrypt -d
Вместо ext2 вы можете использовать и другую файловую систему: ext3,
ReiserFS
Truecrypt несомненно хорош и тем, что внутри зашифрованного контейнера
можно спрятать еще один. Хотя в документации сказано, что внешний
контейнер должен быть как FAT отформатирован, он прекрасно работает и
с ext2. Но при превышении границы между контейнерами с ключом -P
система не говорит об окончании места как в Windows, просто данные эти
теряются.
Журнал файловой системы автоматически размещается в криптоконтейнере.
Теперь надо в загрузку вставить скрипт (спасибо тому же
MasterGnome), который спрашивает пароль и монтирует:
cd /usr
wget http://privat.heinzelzwerg.de/howtos/debian -->>
-->> /truecrypt/tcbootscreen.tar.bz2
tar -xvjf tcbootscreen.tar.bz2
chown root:root /usr/tcbootscreen/*
chmod ugo+x /usr/tcbootscreen/*
chmod ugo-x /usr/tcbootscreen/tcscreen.tmp
chmod ugo-x /usr/tcbootscreen/main.log
и изменить во всех скриптах вместо #!/bin/sh надо везде #!/bin/bash,
иначе в Ubuntu выдается ошибка с declare
Теперь скопировать
mv /usr/tcbootscreen/tcbootscreen /etc/init.d/tcbootscreen
update-rc.d tcbootscreen defaults
В файле /usr/tcbootscreen/decrypt подставить свои значения для device
и mountpoint
/var/tmp -- это как бы *постоянный*, сохраняемый ежду перезагрузками (ЭТО ФИЧА!!!!) tmp и класть его в tmpfs нельзя.
Второе. Надоели статьи вида "делаем какую-то вещь с такой-то осью, такой-то версии, на сервере фирмы интел, коврик для мышки фирмы такой-то, монитор DELL и толька в такой конфигурации". Кубунта ничем принципиально не отличается от дебиана или юбунты, да и от других ламуксов тоже мало чем.
вместо sda2 нужно подставить своп, который совсем не обязательно на sda2. Новички имеют уникальню возможность превратить свой винчестер в один большой своп.