我正在为公司的软件开发人员评估 (x)ubuntu 客户端。我们必须使用全盘加密,因为软件不会将文件保存在 /home 中(如数据库)。公司使用“active directory”作为 LDAP 解决方案。
在系统启动时,我希望 LDAP 用户身份验证能够解锁加密。使用 Linux 工具可以轻松实现这一点吗?
我知道带有 Luks 的 LVM,但据我所知那是一个密码并且无法与 ldap 连接。
Windows 的类似解决方案是“DriveLock”。
答案1
解决方案 1:使用 crypttab 脚本查询 LDAP
全盘加密需要在用户进行身份验证之前获取密钥。因此,您需要编写/找到一个脚本,该脚本会在您使用默认的 Ubuntu 全盘加密时由 crypttab 执行。可以找到一个非常简单的示例(没有 LDAP)这里。可以找到一个示例 LDAP 身份验证 Python 脚本这里。如果您需要多个用户使用该机器,您将必须发挥创造力,看看 LDAP 身份验证如何始终提供相同的磁盘密钥(例如,本地密钥的多个加密副本,使用用户密码解密?)。
解决方案 2:将文件/方向映射到加密的主目录
如果我理解正确的话,您需要一个解决方案,该解决方案本质上扩展了加密的主目录,其中包含几个其他位置,这些位置可通过用户运行的软件访问。然后,您可以使用标准LDAP 身份验证进行初始用户登录。
解决方案 2a:使用ln -s
ln -s
创建符号链接。如果您只打算进行静态设置,即同一用户始终使用该机器,则此设置可以工作。用于ln -s
重定向软件正在写入的文件/文件夹(重定向到加密的主目录)。或者只是尝试找出您是否可以重新配置(通过重新编译?)软件的输出目录。
解决方案 2b:使用 loopfs
最后一种解决方案类似于加密主目录:使用存储在用户主目录中的环回文件系统,并加密主目录。如果您确切知道软件存储数据的位置,则可以编写脚本将环回文件系统挂载到这些位置。我现在将概述一个解决方案,然后您可以根据自己的特定需求进行调整。
例如,假设您的软件需要将敏感数据存储在 /opt/foo。我假设 /opt/foo 目前为空。我不确定当前 ubuntu 执行此操作的方式,但本质上您需要:
创建一个适当大小的空文件dd
,我们将其称为 myLoopFS
使用losetup /dev/loop0 yourfile
或类似命令将您的文件连接到环回设备(如 /dev/loop0)。您甚至可以使用 加密该文件losetup -e AES
,但这不是必需的,因为它将存储在加密的主目录中。
然后用 ext4 格式化 /dev/loop0。
然后在用户登录时将其挂载到 /opt/foo。
然后软件写入 /dev/loop0,进入您的 myLoopFS 文件。
确保当用户注销时再次卸载 /dev/loop0。
该系统应该满足您的要求,除非您的软件在各处写入敏感数据。
概括
我没有找到现成的软件来解决您的问题,但使用默认的 Linux 工具(如ln -s
、losetup
)或使用 crypttab 脚本似乎很容易解决。