有人要求我在不影响操作或数据的情况下加密实时服务器的文件系统。我通常使用加密文件系统安装 Redhat,因此“如何”不是问题。我想知道是否有可能在不缩小分区、创建新分区、加密新分区、复制所有内容、删除旧分区以及调整新分区大小以填充驱动器的情况下加密文件系统。
答案1
您可以通过重新创建适合目标设备的新分区并使用另一种加密进行传输来加快速度:
tar --one-file-system --numeric-owner -cpC / . |gzip |gpg -e -r username >file.tgz.gpg
关注已打开的文件,您最好在单用户模式 ( init 1
) 下执行此操作。或者更好的方法是:如果/
是 parted 系统上的加密分区LVM2
,您可以使用 的快照lvcreate -s
,但您必须打开另一个会话来luks
解密它们,然后才能在安静挂载点上进行挂载。
lvcreate -s -L 1G -n BkVolName VolGroup/VolName
cryptsetup luksOpen /dev/mapper/VolGroup-BkVolName bk_crypted
mount -o ro /dev/mapper/bk_crypted /mnt
tar -zcpC /mnt . | gpg -e -r username >file.tgz.gpg
umount /mnt
cryptsetup luksClose bk_crypted
lvremove -f VolGroup/BkVolName
将 gpg 加密的 tarball 移动到目标主机后,重新创建加密分区并挂载它们/mnt
以供示例:
cryptsetup --verbose --verify-passphrase luksFormat $DEVICE
cryptsetup luksOpen $DEVICE new_crypted
mount /dev/mapper/new_crypted /mnt
gpg -d <file.tgz.gpg | tar -zxvC /mnt
sync
umount /mnt
cryptsetup luksClose new_crypted
这样做可以让你创建whipe文件并直接使用低级网络:
在源主机上:
tar --one-file-system -zcpC / . | gpg -e -r uname | nc -q 0 -l -p 9900
比第一次
nc -l
运行时在目标主机上:nc sourceHostIPorName 9900 | gpg -d | tar -zxC /mnt
答案2
使用本机工具无法实现。使用第三方工具也许可以就地加密,但我没有在 RHEL 上这样做的经验。