Собственно полностью оригинальная статья находится
здесь, а здесь некоторые исправления и заточки под Ubuntu 9.40, надеюсь автор оригинальной статьи не будет против, если я буду использовать его текст с небольшими ремарками.
Имеем:
- Ubuntu 9.04
- Раздел или каталог /home
Задача: сделать шифрованный раздел или каталог.
Шифрование с помощью TrueCrypt каталога /homeЕсли домашняя папка подключается у вас как раздел, то смотрите п. 1, 2, 3.Нет надобности объяснять зачем нужно шифрование - причин масса. Поэтому сразу к делу.
1. По умолчанию в репозиториях нет truecrypt, поэтому нужно ее выкачать и установить:
- Качаем отсюда:
http://www.truecrypt.org/downloads- В терминале запускаем скаченный файл (возможно нужно будет сменить разрешение файла на 655). Зависимостей нет, устанавливается без проблем.
- Также потребуется набор скриптов, дабы монтировать шифрованный том при запуске. Берем
здесь (или из вложения в конце статьи) и распаковываем сразу в доступное место.
2. Необходимо сделать резервную копию каталога /home в другое место, с сохранением атрибутов. Сделать это можно разными способами, я делал в терминале с помощью оболочки Mc. Через коммандуную строку можно сделать так:
sudo cp -p -R /home /другой_раздел/путь
где
/другой_раздел/путь - резервное местоположение каталога /home.
3. Теперь необходимо определиться. Если у вас каталог /home подключен отдельным разделом, то читаем п.14 и далее, иначе читаем ниже.
4. C помощью GUI truecrypt создадим новый том для будущего домашнего каталога (в иксах, в консоли это сделать почему то не получилось):
- Приложения - Прочие - TrueCrypt
- Кнопка "Create Volume"
- Next
- Next
- Укажем где будет размещаться том (в данном случае в виде файла) и его имя, (например, /media/work/home.v разумеется, вы указываете свой путь и имя файла), затем Next
- Выбираем алгоритм шифрования и алгоритм хеша. Рекомендуется оставить по умолчанию. Затем Next
Все три алгоритма очень надежны, и сейчас не существует даже
теоретического способа взлома, кроме метода полного перебора.
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 и скрытый контейнер - это для
суперсекретных данных
- Указываем размер создаваемого тома. Здесь внимательнее, вроде как изменить размер тома будет очень проблематично. Затем Next.
- Указываем пароль. Рекомендуется не менее 20 символов. Также можно создать т.н. keyfile и пользоваться им, но в данном примере используется пароль. Затем Next
- Выбираем файловую систему, выберите ext3. Next.
- Нажмем кнопку "Format", затем OK и Exit.
5. Теперече примонтируем созданный том и скопируем содержимое каталога /home на этот том. Можно это сделать через GUI, мне удобнее через терминал:
- Монтируем том как устройство:
sudo truecrypt --filesystem=ext3 /media/work/home.v
Разумеется, путь до созданного тома и его имя указываете свои. В этом случае образуется устройство /dev/mapper/truecrypt1 или, возможно, /dev/mapper/truecrypt0
- Смонтируем том в какой нибудь каталог на время, предварительно его создав и выставив атрибуты:
sudo mkdir /media/work/temp
sudo chmod 777 /media/work/temp
sudo mount /dev/mapper/truecrypt1 /media/work/temp
- Копируем на зашифрованный том содержимое каталога /home:
sudo cp -p -R /home/* /media/work/temp
6. Размонтируем все:
sudo umount /media/work/temp
sudo truecrypt -d
7. Теперь нужно будет переключиться в однопользовательский режим, т.к. будем работать с самой папкой /home. Я ничего лучше не придумал как перезагрузиться в recovery режиме и все команды делать уже от рута, поэтому на этотм моменте аккуратнее. Итак перезагружаем систему:
- При запуске загрузчика выбираем восстановительный режим, нажав клавишу ESC
- Далее в табличке стрелками идем вниз и выбираем что то типа : "Drop to .... root shell"
8. Удаляем
все из папки /home (надеюсь вы сделали резервную копию?! На этом и следующих этапах я ответственности не несу
):
rm -R /home/*
9. Теперь осталось настроить скрипты, дабы монтировалось все при загрузке системы. Ранее вы их скачали и положили в доступное место, откуда сейчас их скопируем в каталог /usr :
cp /путь_до_скриптов/tcbootscreen/* /usr/tcbootscreen/
10. Установим владельца и права доступа на скрипты:
chown -R root:root /usr/tcb*
chmod 655 /usr/tcbootscreen/*
chmod 644 /usr/tcbootscreen/main.log
chmod 644 /usr/tcbootscreen/tcscreen.tmp
11. Теперече во всех скриптах нужно изменить заголовок #!/bin/sh на #!/bin/bash. Откройте каждый скрипт на редактирование и замените. Сделать это можно либо через MC, либо с помощью, например, редактора nano, если не ошибаюсь то примерно так:
nano /usr/tcbootscreen/decrypt
12. Теперь скопируем скрипт в автозагрузку:
cp /usr/tcbootscreen/tcbootscreen /etc/init.d/tcbootscreen
update-rc.d tcbootscreen defaults
13. И последний штрих, подправим девайс и точку монтирования в скрипте /usr/tcbootscreen/decrypt. В моем случае это:
declare device="/media/work/home.v"
declare mountpoint="/home"
Вот собственно и все. При перезагрузке системы вам будет предложенно ввести пароль, если он будет введен верно, то все должно загрузится. Единственное что я заметил, после ввода пароля несколько раз почемуто нужно Enter нажать, но это уже надо ковырять скрипты. Ну, а если пароль будет неверным, то помоему иксы просто не загрузятся, кстати на этот случай есть скрипт decrypt_fail он предназначен выполнить команды при неверном вводе пароля. Возможно интересным будет момент создания т.н. скрытого тома, но помоему в данном случае это не целесообразно, потому как скрытый том в первую очередь предназначен вообще скрыть информацию о том, что вообще что-либо шифруется, а с папкой home это подозрительно. Хотя если вы собираетесь шифровать не всю папку home, а только скажем свою, как это сделал я, то возможно смысл и есть.
Если что-то пошло не так, или все взорвалось- Загрузитесь в режим восстановления (см. п. 7)
- Восстановите дамашний каталог из резервной копии:
cp -p -R /путь_до_резервной копии/* /home
- удалите скрипт из автозагрузки и перезагрузите систему:
rm /etc/init.d/tcbootscreen
update-rc.d tcbootscreen remove
reboot
Все должно вернуться на круги своя.
Шифрование с помощью TrueCrypt раздела /homeСобственно. Недостаток этого метода это то, что если компьютером пользуетесь не только вы, то пароль придется выдать и другим пользователям (в отличии от предыдушего метода, где можно зашифровать не всю папку home, а только, скажем, свою), а там где знают двое - знают все.
14. Выполните перед этим п. 1 и 2
15. Теперь нужно будет переключиться в однопользовательский режим, т.к. нужно отмонтировать будет каталог /home. Итак перезагружаем систему:
- При запуске загрузчика выбираем восстановительный режим, нажав клавишу ESC
- Далее в табличке стрелками идем вниз и выбираем что то типа : "Drop to .... root shell"
16. Отмонтируем домашний каталог:
umount /home
17. Для директории /home создадим внешний криптоконтейнер:
truecrypt --encryption=AES --volume-type=normal -c /dev/sda4
где /dev/sda4 раздел /home, у вас, разумеется, свой.
- При создании будут заданы пара вопросов. На вопрос о файловой системе нужно будет выбрать файловую систему none, т.к. почему то в консоли других систем кроме fat и none не предлагается. Выберите нужный алгоритм хеша (подробнее об алгоритмах см. п. 4). Далее введите два раза пароль на будущий том.
18. Создаем устройство /dev/mapper/truecrypt1 (займет несколько времени):
Внимание! Все данные с этого раздела будут уничтожены. А вы сделали резервную копию?!truecrypt --filesystem=none /dev/sda4
19. Форматируем контейнер и монтируем его:
mkfs.ext3 -v /dev/mapper/truecrypt1
mount /dev/mapper/truecrypt1 /home
Если будет ругаться на truecrypt1, что мол, отсутствует, смотрим какие устройсва появились в /dev/mapper/ и в код выше подставляем нужное.
20. Копируем с резервной копии содержимое в новосозданный шифрованный раздел:
cp -p -R /путь_до_резервной_копии/* /home
21. Отмонтируем все:
umount /home
truecrypt -d
22. Теперь осталось настроить скрипты, дабы монтировалось все при загрузке системы. Ранее вы их скачали и положили в доступное место, откуда сейчас их скопируем в каталог /usr :
cp /путь_до_скриптов/tcbootscreen/* /usr/tcbootscreen/
23. Установим владельца и права доступа на скрипты:
chown -R root:root /usr/tcb*
chmod 655 /usr/tcbootscreen/*
chmod 644 /usr/tcbootscreen/main.log
chmod 644 /usr/tcbootscreen/tcscreen.tmp
24. Теперече во всех скриптах нужно изменить заголовок #!/bin/sh на #!/bin/bash. Откройте каждый скрипт на редактирование и замените. Сделать это можно либо через MC, либо с помощью, например, редактора nano, если не ошибаюсь то примерно так:
nano /usr/tcbootscreen/decrypt
25. Теперь скопируем скрипт в автозагрузку:
cp /usr/tcbootscreen/tcbootscreen /etc/init.d/tcbootscreen
update-rc.d tcbootscreen defaults
26. Подправим девайс и точку монтирования в скрипте /usr/tcbootscreen/decrypt. В моем случае это:
declare device="/dev/sda4"
declare mountpoint="/home"
27. И чтобы система не ругалась при загрузке на раздел, который она не может найти, закомментируем в /etc/fstab строку о монтировании раздела /home:
# /home was on /dev/sda4 during installation
#UUID=cbe5070d-d2b7-4520-9895-dd419609666a /home ext3 relatime 0 2
Вот и все. Почитайте также комментарии п. 13.
Если что-то пошло не так, или все взорвалось (у меня все случилось нормально, поэтому действия ниже чисто теоретические)- Загрузитесь в режим восстановления (см. п. 7)
- Отмонтируем если примонтировано:
umount /home
truecrypt -d
- Форматируем раздел /dev/sda4 (у вас свой):
mkfs.ext3 -v /dev/sda4
- Монтируем его:
mount /dev/sda4 /home
- Копируем данные с резервной копии:
cp -p -R /путь_до_резервной копии/* /home
- Удаляем скрипт из автозагрузки:
rm /etc/init.d/tcbootscreen
update-rc.d tcbootscreen remove
- Ункомментируем строку в fstab:
# /home was on /dev/sda4 during installation
UUID=cbe5070d-d2b7-4520-9895-dd419609666a /home ext3 relatime 0 2
Перезагружаем систему командой reboot и все должно вернуться на круги своя.
Вот собственно и все. Интересно было бы шифровать не всю папку целиком, а только избранные домашние папки, если за компьютером работают несколько человек, причем подправить cкрипты так, чтобы каждый пользователь мог расшифровывать только свой том, ну это как-нибудь потом. Еще интереснее использовать keyfile, кстати скрипты это позволяют, а сам ключ загнать на флеху и чтобы с нее только брался
тогда вообще все шоколадно будет, но тоже как-нибудь позже
ЗЫ Статья писалась в большей степени для себя, дабы если что, обратиться к ней, когда чего-нибудь подзабудется.