Создание и работа с зашифрованными разделами/"образами" под Ubuntu 8.04. Автоматическое монтирование при логине(pam_mount). Управление.
1. ставим cryptsetup
# sudo apt-get install dmsetup cryptsetup e2fsprogs
2. проверяем какие есть модули в ядре для шифрования
# /sbin/modinfo /lib/modules/`uname -r`/kernel/crypto/* |grep description
# /sbin/modinfo /lib/modules/`uname -r`/kernel/arch/i386/crypto/* |grep description
3. загружаем модули в ядро
# sudo modprobe aes
или то чем хотим шифровать, проверяем что type:cipher появился в ядре
$ cat /proc/crypto
name : cbc(blowfish)
driver : cbc(blowfish-generic)
module : cbc
priority : 0
refcnt : 2
type : blkcipher
blocksize : 8
min keysize : 4
max keysize : 56
ivsize : 8
name : blowfish
driver : blowfish-generic
module : blowfish
priority : 0
refcnt : 2
type : cipher
blocksize : 8
min keysize : 4
max keysize : 56
4. загружаем dm-crypt
# sudo modprobe dm-crypt
5. добавляем в загрузку необходимые для работы модули
# sudo -i (to make yourself root)
# echo aes >> /etc/modules
# echo dm_mod >> /etc/modules
# echo dm_crypt >> /etc/modules
6. проверяем что dm-setup распознал crypt модули и поддерживает crypt target
# sudo dmsetup targets
# sudo dmsetup targets
crypt v1.5.0
striped v1.0.2
linear v1.0.2
error v1.0.1
7. В зависимости от необходимости переходим к созданию - зашифрованного раздела/файла
создаём файл с случайным содержанием для шифрования
# sudo dd if=/dev/urandom of=/home/.eugen.img bs=1M count=5120
для проверки состояния делаем
$ ps aux | grep "dd if"
root 17427 86.0 0.1 4128 1752 pts/1 R+ 14:35 1:04 dd if /dev/urandom of /home/.eugen.img bs 1M count 5120
после этого делаем
$ sudo kill -s SIGINFO 17427
или даже так
$ while [ 1 ]; do sudo kill -s SIGUSR1 17427;sleep 2; done
в консоли где запущен dd
355+1 записей считано
355+0 записей написано
скопировано 372244480 байт (372 MB), 174,582 c, 2,1 MB/c
465+2 записей считано
465+1 записей написано
скопировано 488523650 байт (489 MB), 231,741 c, 2,1 MB/c
467+3 записей считано
547+4 записей считаноо
547+3 записей написано
скопировано 575443162 байта (575 MB), 271,428 c, 2,1 MB/c
696+4 записей считано
695+4 записей написано
скопировано 731193910 байт (731 MB), 342,065 c, 2,1 MB/c
8.Ассоциируем файл с loop устройством:
$ sudo losetup /dev/loop0 /home/.eugen.img
проверяем что все в порядке
$ sudo losetup -a
/dev/loop0: [0801]:6965819 (/home/.eugen.img)
8.а - не обязательный шаг
далее можно сделать или так
$ pwgen -s 500 | \
openssl enc -aes-256-ecb >/home/.eugen.key
или так
$ dd if=/dev/urandom bs=1c count=$[ 256/8 ] | \
openssl enc -aes-256-ecb >/home/.eugen.key
проверяем
$ openssl enc -d -aes-256-ecb -in /home/.eugen.key
!! шифруем с ключом совпадающим паролем от пользователя если хотим делать pam_mount
9. открываем шифрованный раздел
если пропускали 8.а то делам так
$ sudo cryptsetup -c aes-cbc-essiv:sha256 -s 256 --verify-passphrase luksFormat /dev/loop0
если 8.а есть
#$ sudo cryptsetup -c aes-cbc-essiv:sha256 -s 256 --key-file=/home/.eugen.key --key-size=256 luksFormat /dev/loop0
$ openssl enc -d -aes-256-ecb -in /home/.eugen.key | sudo cryptsetup -c aes-cbc-essiv:sha256 -s 256 --key-size=256 luksFormat /dev/loop0
проверяем
$ sudo cryptsetup luksDump /dev/loop0
LUKS header information for /dev/loop0
Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 2056
MK bits: 256
MK digest: c5 ba 86 d7 08 c3 65 d3 1c c7 bd 92 6a 7f 2e aa a2 ef dc 5e
MK salt: 30 8f b1 70 a5 cc b9 26 49 bc 0f e5 04 60 f3 aa
e3 d9 31 71 34 93 40 2e 29 cd 4b ca d9 9b 7a ed
MK iterations: 10
UUID: 94e48889-8969-4d19-b011-75affcce72dd
10. открываем шифрованный раздел
с интерактивным ключом
$ sudo cryptsetup -c aes-cbc-essiv:sha256 -s 256 --key-size=256 luksOpen /dev/loop0 _home_eugen.img
или так
$ sudo cryptsetup luksOpen /dev/loop0 _home_eugen.img
с ключом из файла
$ openssl enc -d -aes-256-ecb -in /home/.eugen.key | sudo cryptsetup -c aes-cbc-essiv:sha256 -s 256 --key-size=256 luksOpen /dev/loop0 _home_eugen.img
enter aes-256-ecb decryption password:
key slot 0 unlocked.
Command successful.
проверяем
$ sudo dmsetup ls
_home_eugen.img (254, 1)
$ ls -l /dev/mapper/
итого 0
crw-rw---- 1 root root 10, 62 2008-06-21 12:09 control
brw-rw---- 1 root disk 254, 1 2008-06-21 16:57 _home_eugen.img
можно добавить ключ
cryptsetup luksAddKey /dev/loop0 /home/.eugen_new.key
11. создаём фаловую систему
$ sudo mkfs.ext3 -j -m 1 -O dir_index,filetype,sparse_super /dev/mapper/_home_eugen.img
12. монтируем
mount /dev/mapper/_home_eugen.img /mnt
------------------------------------------------------------------------------------------------------------
SWAP
1.Выкл SWAP
# swapoff /dev/sda2
Рандом в соджержание
# dd if=/dev/urandom of=/dev/sda2 bs=1M
1954+0 records in
1953+0 records out
2048094208 bytes (2.0 GB) copied, 529.177 s, 3.9 MB/s
2.Конфигурируем крипто своп
Добавляем /etc/crypttab
# cat /etc/cryptab
...
cryptoswap /dev/sda2 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,hash=sha256,swap
3.Перенастраиваем /etc/fstab
# cat /etc/fstab
...
/dev/mapper/cryptoswap swap swap sw 0 0
при старте ключ рандом.
4. Тестируем.
Ребут
проверяем
# cat /proc/swaps
Filename Type Size Used Priority
/dev/mapper/cryptoswap partition 2000084 0 -1
# cryptsetup status cryptoswap
/dev/mapper/cryptoswap is active:
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sda2
offset: 0 sectors
size: 4000185 sectors
mode: read/write
-----------------------------------------------------------------------------------------------------------------------------------
PAM_MOUNT
1: правим /etc/fstab
Вместо строки home
# cat /etc/fstab
...
/dev/mapper/_home_eugen.img /mnt/_home_eugen.img ext3 relatime,errors=remount-ro 0 2
2: Правим /etc/crypttab
Правим /etc/crypttab :
# cat /etc/crypttab
...
_home_eugen.img /home/.eugen.img noauto luks
3: Ставим PAM_Mount
# apt-get install libpam-mount
настраиваем в xml
# cat /etc/security/pam_mount.conf.xml
...
4:настраиваем PAM
# cat /etc/pam.d/common-auth
...
auth optional pam_mount.so use_first_pass
# cat /etc/pam.d/common-session
...
session optional pam_mount.so
5:проверяем
log out -> log in
$ df -h
...
/dev/mapper/_home_eugen.img
20G 296M 20G 2% /home
снимайте backupы!!!!
-------------------------------------------------------------------------------------------------
* LUKS
Ставим софт
# apt-get install cryptsetup
Создаем test для показания функционала через loopback
# dd if=/dev/urandom of=testfile bs=1M count=100
# losetup /dev/loop0 testfile
Сейчас шифруем Luks
# cryptsetup luksFormat /dev/loop0
WARNING!
========
This will overwrite data on /dev/loop/0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: GEHEIM
Verify passphrase: GEHEIM
Command successful.
# cryptsetup luksOpen /dev/loop/0 mytestfs
Enter LUKS passphrase: GEHEIM
key slot 0 unlocked.
Command successful.
# mkfs.ext3 /dev/mapper/mytestfs
# mount /dev/mapper/mytestfs /mnt/mnt/
# umount /dev/mapper/mytestfs
# cryptsetup luksClose /dev/mapper/mytestfs
Можно не вводить пароль при каждом моунте
# pwgen -s 500 > /mnt/usbstick/mykeyfile
# cryptsetup luksFormat /dev/loop/0 /mnt/usbstick/mykeyfile
WARNING!
========
This will overwrite data on /dev/loop/0 irrevocably.
Are you sure? (Type uppercase yes): YES
Command successful.
# cryptsetup -d /mnt/usbstick/mykeyfile luksOpen /dev/loop/0 mytestfs
# mkfs.ext3 /dev/mapper/mytestfs
# mount /dev/mapper/mytestfs /mnt/mnt/
# umount /dev/mapper/mytestfs
# cryptsetup luksClose /dev/mapper/mytestfs
Есть возможность ввести пароль вручную
# cryptsetup -d /mnt/usbstick/mykeyfile luksAddKey /dev/loop0
key slot 0 unlocked.
Enter new passphrase for key slot: FOOBAR
Verify passphrase: FOOBAR
Command successful.
Всегда можно добавить пароль
# cryptsetup luksAddKey /dev/loop0
Enter any LUKS passphrase: FOOBAR
key slot 1 unlocked.
Enter new passphrase for key slot: SECRET
Verify passphrase: SECRET
Command successful.
Для работы сперва открываем шифрованный раздел паролем или ключом
ключ
# cryptsetup -d /mnt/usbstick/mykeyfile luksOpen /dev/loop/0 mytestfs
key slot 0 unlocked.
Command successful.
пароль
# cryptsetup luksOpen /dev/loop/0 mytestfs
Enter LUKS passphrase: SECRET
key slot 1 unlocked.
Command successful.
монтируем
# mount /dev/mapper/mytestfs /mnt/mnt/
размонтируем
# umount /dev/mapper/mytestfs
# cryptsetup luksClose /dev/mapper/mytestfs
Normal Usage with Keyfile
Комментариев нет:
Отправить комментарий