使用LUKS加密分区

敏感数据需要全面保护。保护敏感数据没有比加密更好的方法。本文是关于如何使用LUKS加密笔记本电脑或服务器分区的教程。

移动系统(如笔记本电脑)上的敏感数据如果丢失,可能会受到影响,但如果数据被加密,则可以减轻此风险。Red Hat Linux通过Linux Unified Key Setup(LUKS)磁盘格式技术支持分区加密。在安装过程中加密分区最容易,但LUKS也可以在安装后进行配置。

安装过程中的加密

执行交互式安装时,请在创建分区时加密复选框以勾选加密复选框。选择此选项后,系统将提示用户使用密码来解密分区。每次系统启动时都需要手动输入密码。

在执行自动化安装时,Kickstart可以创建加密分区。使用 - encrypted和 - passphrase选项来加密每个分区。例如,以下行将加密/ home分区:

# part /home --fstype=ext4 --size=10000 --onpart=vda2 --encrypted --passphrase=PASSPHRASE

请注意,密码PASSPHRASE以明文形式存储在Kickstart配置文件中,因此必须保护此配置文件。省略--passphrase =选项将导致安装程序暂停并在安装期间询问密码。

图1:带有ext4文件系统的加密分区

图2:加密分区已被锁定和验证

图3:密钥文件已经生成并添加到LUKS分区

加密后安装

下面列出了创建加密卷所需的步骤:

1.创建一个物理磁盘分区或一个新的逻辑卷。

2.使用以下命令加密块设备并指定密码短语:

# cryptsetup luksFormat /dev/vdb1

3.解锁加密的卷并为其分配一个逻辑卷,如下所示:

# cryptsetup luksOpen /dev/vdb1 name

4.使用以下命令在解密的卷中创建一个文件系统:

# mkfs -t ext4 /dev/mapper/name

如图1所示,分区已被加密并打开,最后,文件系统与该分区相关联。

5.为文件系统创建一个装入点,装入它,然后按如下方式访问其内容:

#mkdir /secret
#mount /dev/mapper/name /secret

我们可以使用df -h命令来验证挂载的分区,如图2所示。

6.完成后,卸载文件系统,然后锁定加密的卷,如下所示:

#umount /secret

注意: 在关闭LUKS分区之前,应该卸载该目录。分区关闭后,它将被锁定。这可以使用df -h命令进行验证,如图2所示。

# cryptsetup luksClose name

图4:使用密钥文件对持久加密分区进行解密

图5:显示加密分区的可用插槽

如何持久地加载加密的分区

如果在安装期间创建LUKS分区,则正常系统操作会在引导时提示用户输入LUKS密码。这对笔记本电脑来说很好,但对于可能需要重新启动的服务器而言,无人看管的情况并非如此。

要使用无人参与的加密卷引导服务器,必须使用LUKS密钥创建文件,以解锁加密的卷。该文件必须位于磁盘上的未加密文件系统上。当然,如果文件系统与加密卷位于同一磁盘上,则存在安全风险,因为盗窃磁盘将包含解锁加密卷所需的密钥。通常,带有密钥的文件存储在可移动介质(如USB驱动器)上。

以下是配置系统无需人工干预即可永久安装加密卷的步骤。

1.首先,找到或生成密钥文件。这通常由服务器上的随机数据创建,并保存在单独的存储设备上。密钥文件应该从/ dev / urandom中随机输入,并生成块大小为4096字节的输出/root/key.txt作为随机数的单个计数。

# dd if=/dev/urandom of=/root/key.txt bs=4096 count=1

确保它由root用户拥有,模式为600,如下所示:

# chmod 600 /root/key.txt

使用以下命令添加LUKS的密钥文件:

# cryptsetup luksAddKey /dev/vda1 /root/key.txt

提示时提供用于解锁加密卷的密码。

图6:辅助密钥文件key2.txt已添加到Slot3

图7:成功启用Slot3

2. 为卷创建一个/ etc / crypttab条目。/ etc / crypttab包含系统启动过程中要解锁的设备列表。

# echo “name /dev/vdb1 /root/key.txt” >> /etc/crypttab

列出每一行的设备,并与下列字段以空格分隔:

  • 用于设备的设备映射器
  • 底层的锁定设备
  • 用于解锁设备的密码文件的绝对路径名(如果此字段留空或设置为无,系统引导过程中将提示用户输入加密密码)

3.在/ etc / fstab中创建一个条目,如下所示。在/ etc / fstab中输入内容后,如果我们使用密钥文件打开分区,该命令将是:

# cryptsetup luksOpen /dev/vdb1 --key-file /root/key.txt name

fstab文件的条目所示,如果要装入的设备已命名,则加密分区应该永久挂载的文件系统位于其他条目中。此外,现在没有单独询问密码,因为我们提供了已经添加到分区的密钥文件。现在可以使用mount -a命令挂载分区,之后可以在重新启动后使用df -h命令来验证挂载的分区。所有步骤都清楚地描述在图5中。

注意: / etc / fstab的第一个字段中列出的设备必须与为本地名称选择的名称匹配,以映射到/ etc / crypttab。这是一个常见的配置错误。

图8:密码已更改

图9:使用最初提供的密码短语解密一个分区

将密钥文件附加到所需的插槽

LUKS为加密设备总共提供八个密钥槽(0-7)。如果存在其他密钥或密码短语,则可以使用它们来打开分区。我们可以使用luksDump命令检查所有可用的插槽,如下所示:

# cryptsetup luksDump /dev/vdb1

如图5所示,Slot0和Slot1被启用。因此,我们手动提供的密钥文件默认移至Slot1,我们可以使用Slot1来解密分区。Slot0携带创建加密分区时提供的主密钥。

现在我们将添加一个密钥文件到Slot3。为此,我们必须使用urandom命令生成随机数密钥文件,之后我们将它添加到Slot3中,如下所示。必须提供加密分区的密码才能将任何辅助密钥添加到加密卷。

# dd if=/dev/urandom of=/root/key2.txt bs=4096 count=1.
#cryptsetup luksAddKey /dev/vdb1 --key-slot 3 /root/key2.txt.

添加辅助密钥后,再次运行luksDump命令以验证密钥文件是否已添加到Slot3中。如图7所示,密钥文件已添加到Slot3中,因为Slot2保持禁用状态,Slot3已使用提供的密钥文件启用。现在Slot3也可以用来解密分区。

恢复LUKS标题

对于一些常见的LUKS问题,LUKS标题备份可能意味着简单的管理修复和永久不可恢复的数据之间的差异。因此,LUKS加密卷的管理员应该参与日常备份标题的良好实践。另外,如果需要,他们应该熟悉从备份恢复标题的过程。

图10:标题从备份文件中恢复

LUKS标题备份

使用cryptsetup工具和luksHeaderBackup子命令一起执行LUKS标题备份。标题的位置由-header-backup-file选项指定。所以通过使用下面给出的命令,我们可以创建任何LUKS头的备份:

# cryptsetup luksHeaderBackup /dev/vdb1 --header-backup-file /root/back

与所有系统管理任务一样,LUKS头备份应在LUKS加密卷上执行的每个管理任务之前完成。如果LUKS标头损坏,LUKS会在每个加密设备的开头存储元数据标题和密钥槽。因此,LUKS标头的损坏可能导致加密数据无法访问。如果存在损坏的LUKS头的备份,则可以通过从该备份恢复头来解决问题。

Testing and recovering LUKS headers

如果加密卷的LUKS头已备份,则备份可以恢复到卷以克服诸如忘记密码或损坏头的问题。如果加密卷存在多个备份,则管理员需要确定要恢复的正确备份。使用以下命令可以恢复标题:

# cryptsetup luksHeaderRestore /dev/vdb1 --header-backup-file /root/backup

现在,我们假设有人使用luksChangeKey更改了加密分区/ dev / vdb1的密码,但密码未知。所以唯一的选择是从上面创建的备份中恢复分区,以便我们可以从以前的密码中解密分区。备份还有助于管理员忘记密码。

在图8中,/ dev / vdb1的备份最初已经被采用,并且在不知情的情况下,其密码后来被某人更改。

在关闭分区之前,我们必须卸载已锁定的分区。关闭分区后,尝试使用先前设置的密码短语打开分区将会抛出错误“No key available with this passphrase”,因为密码已被某人更改(图9)。

但是由于备份已经被我们采用,我们只需要从早先创建的备份文件恢复LUKS头。如图10所示,标题已被恢复。

现在我们可以使用之前设置的密码来打开标题。因此,管理员创建头的备份对他们来说是非常有好处的,以便他们可以在现有头被破坏或密码更改的情况下恢复它。

原文来自:http://opensourceforu.com/2018/02/encrypting-partitions-using-luks/

本文由 华盟网 作者:AlexFrankly 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

1

相关文章

发表评论

电子邮件地址不会被公开。