TCPLAY: шифрование несистемного раздела.

Как шифровать системный раздел и сделать загрузочную флешку c initrd для шифрованного Linux, можно найти по тегу tcplay (копия)

Подключил я к серверу дополнительный HDD и решил его пошифровать.

Внимание! Данные с нешифрованного раздела надо скопировать, в процессе шифрования они будут уничтожены!

1. Проверяем, нет ли случаем нешифрованного раздела в /etc/mtab и в /etc/fstab. Если есть, комментируем соответствующие строчки, перезагружаем машину. Пример:

fstab:

...
#/dev/sdb2		/mnt/sdb2	 ext2	     defaults	      0   0
...


mtab:

...
#/dev/sdb2 /mnt/sdb2 ext2 rw 0 0
...

2. Генерируем ключ, можно воспользоваться /dev/urandom (да, это безопасно, уже обсуждалось):

dd if=/dev/urandom of=sdb2key bs=1 count=1048576

Вывод:

1048576+0 records in
1048576+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 2.34336 s, 447 kB/s

3. Шифруем раздел:

tcplay --create --device=/dev/sdb2 --cipher=AES-256-XTS --pbkdf-prf=whirlpool --keyfile=sdb2key --insecure-erase

Внимание! Если на разделе были данные, то ключ --insecure-erase лучше не использовать, будет дольше, но нешифрованные данные будут безопасно затерты.

Внимание! Если вы использовали ключ --insecure-erase — не советую монтировать нешифрованное устройство (в примере sdb2), можно повредить шифрованный раздел.

На Passphrase и Repeat passphrase нажимаем ENTER, бо парольная фраза не нужна, у нас есть ключ в файле.

Вывод:

Summary of actions:
 - Create volume on /dev/sdb2

 Are you sure you want to proceed? (y/n) y
Creating volume headers...
Depending on your system, this process may take a few minutes as it uses true random data which might take a while to refill
Writing volume headers to disk...
All done!

Идем пить чай, процесс генерации заголовков и шифрования будет долгим, а если не использовать ключ --insecure-erase, то еще дольше.

5. Маппим (подключаем) и монтируем шифрованный диск:

tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key

6. Далее диск надо отформатировать, желательно в нежурналируемой файловой системе, например ext2:

mkfs -t ext2 /dev/mapper/sdb2c

Вывод:

mke2fs 1.43.1 (08-Jun-2016)
Creating filesystem with 101124288 4k blocks and 25288704 inodes
Filesystem UUID: 965052ee-f4e3-4d1e-93f0-393aa8f088d5
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Продолжаем монтирование:
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c

Эти же строки надо включить в стартовый скрипт (/etc/rc.d/rc.local) :

tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c

где: /path/to/keyfile/sdb2key — путь к реальному ключевому файлу. Файл(-ы) от других разделов вполне можно хранить на системном разделе, если тот зашифрован.

7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown):

umount /mnt/sdb2c и rmdir /mnt/sdb2c

Можно поместить для успокоения души, tcplay и xpartx сами должны при получении KILL-сигнала корректно завершить работу и ничего не попортить, как они делают с разделами на системном диске

ФАНФАРЫ!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *