Миграция на шифрованный раздел.
По ряду причин решил зашифровать домашний каталог на ноутбуке, благо он вынесен на отдельный том lvm.
Было:
Стало:
Для этого мне понадобилось:
Включить в ядре опции:
Механизм миграции будет следующим: уменьшим текущий домашний раздел lvm до минимально возможного, создадим новый раздел lvm, зашифруем его, создадим на нем новый домашний раздел. Перенесем данные со старого раздела на новый. Далее настроим систему так, чтобы домашний раздел подключался только после входа пользователя в систему. После чего, по желанию, можно удалить старый раздел, расширить новый раздел lvm за счет старого, расширить зашифрованный раздел, а за ним уже расширить домашний раздел.
На домашнем разделе занято всего ~50 гигабайт.
Значит уменьшаю home до 60 гигабайт, создаю новый том lvm и шифрую его:
Создаю на новом домашнем разделе файловую систему и переношу туда данные со старого раздела
Добавляю в /etc/pam.d/system-auth строчки (выделены):
По ряду причин решил зашифровать домашний каталог на ноутбуке, благо он вынесен на отдельный том lvm.
Было:
+----------------------------------------------------+ | Disk /dev/sda | | +-------+---------------------------------------+ | | | sda1 | sda2 lvm | | | | | +------+------+------+--------------+ | | | | / | | /usr | /var | swap | /home | | | | | | +------+------+------+--------------+ | | | +-------+---------------------------------------+ | | | +----------------------------------------------------+
Стало:
+----------------------------------------------------+ | Disk /dev/sda | | +-------+---------------------------------------+ | | | sda1 | sda2 lvm | | | | | +------+------+------+--------------+ | | | | / | | /usr | /var | swap | luks | | | | | | | | | | +----------+ | | | | | | | | | | | /home | | | | | | | | | | | +----------+ | | | | | | +------+------+------+--------------+ | | | +-------+---------------------------------------+ | | | +----------------------------------------------------+* Кстати, схема-то упрощенная. У lvm не обозначена еще volume group :) *
Для этого мне понадобилось:
Включить в ядре опции:
Cryptographic API -> SHA224 and SHA256 digest algorithm (CONFIG_CRYPTO_SHA256)и
Device Drivers ->Далее я пересобрал ядро и установил пакет cryptosetup.
Multiple devices driver support (RAID and LVM) ->
Device mapper support ->
Crypt target support (CONFIG_DM_CRYPT)
Механизм миграции будет следующим: уменьшим текущий домашний раздел lvm до минимально возможного, создадим новый раздел lvm, зашифруем его, создадим на нем новый домашний раздел. Перенесем данные со старого раздела на новый. Далее настроим систему так, чтобы домашний раздел подключался только после входа пользователя в систему. После чего, по желанию, можно удалить старый раздел, расширить новый раздел lvm за счет старого, расширить зашифрованный раздел, а за ним уже расширить домашний раздел.
На домашнем разделе занято всего ~50 гигабайт.
Значит уменьшаю home до 60 гигабайт, создаю новый том lvm и шифрую его:
# lvresize -r -L60G /dev/mapper/vg-home # lvcreate -n hm -l 51734 vg # cryptosetup luksFormat /dev/mapper/vg-hmПароль в последнем шаге должен совпадать с паролем пользователя, т.к. пароль автоматически передается во время входа в систему.
Создаю на новом домашнем разделе файловую систему и переношу туда данные со старого раздела
# cryptsetup luksOpen /dev/mapper/vg-hm secret # mkfs.ext4 /dev/mapper/secret # mkdir /mnt/temp # mount /dev/mapper/vg-hm /mnt/temp # cp -r /home/* /mnt/temp # umount /mnt/tempТеперь устанавливаю pam_mount. У этого пакета необходимо включить USE-флаг crypt.
Добавляю в /etc/pam.d/system-auth строчки (выделены):
auth required pam_env.so auth required pam_unix.so try_first_pass likeauth nullok auth optional pam_permit.so auth optional pam_mount.so account required pam_unix.so account optional pam_permit.so password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 password required pam_unix.so try_first_pass use_authtok nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_env.so session required pam_unix.so session optional pam_permit.so session optional pam_mount.soА в /etc/security/pam_mount.conf.xml следующее:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd"> <!-- See pam_mount.conf(5) for a description. --> <pam_mount> <!-- debug should come before everything else, since this file is still processed in a single pass from top-to-bottom --> <debug enable="0" /> <!-- Volume definitions --> <volume user="yuri" path="/dev/mapper/vg-hm" mountpoint="~" cipher="aes-cbc-essiv:sha256" /> <!-- pam_mount parameters: General tunables --> <!-- <luserconf name=".pam_mount.conf.xml" /> --> <!-- Note that commenting out mntoptions will give you the defaults. You will need to explicitly initialize it with the empty string to reset the defaults to nothing. --> <mntoptions allow="nosuid,nodev,loop,encryption,nonempty,allow_root,allow_other" /> <!-- <mntoptions deny="suid,dev" /> <mntoptions allow="*" /> <mntoptions deny="*" /> --> <mntoptions require="nosuid,nodev" /> <!-- requires ofl from hxtools to be present --> <logout wait="0" hup="0" term="0" kill="0" /> <!-- pam_mount parameters: Volume-related --> <mkmountpoint enable="1" remove="true" /> </pam_mount>И не забыть убрать строчку с home из /etc/fstab.