如何在 RHEL6 上允许无人值守解密加密磁盘?

如何在 RHEL6 上允许无人值守解密加密磁盘?

我需要在 RHEL6 上配置加密磁盘,但密钥应该存储在网络服务器/数据库中,加密磁盘应该在启动期间或启动后使用此密钥解密,而无需询问任何密码。

答案1

您可以使用 crypttab 密钥脚本进行设置,例如 crypttab 条目:

# target,sourcedev,keyfile,options
cdisk3 /dev/sda3 none cipher=twofish,hash=ripemd160,size=256,keyscript=/path/to/script

该脚本将以密钥文件(在本例中为“无”)作为唯一参数执行,并且脚本的输出将用作密钥。

它将其余输入作为环境变量:

       CRYPTTAB_NAME
           The target name

       CRYPTTAB_SOURCE
           The source device

       CRYPTTAB_KEY
           The key file

       CRYPTTAB_OPTIONS
           A list of exported crypttab options

       CRYPTTAB_OPTION_<option>
           The value of the appropriate crypttab option, with value set to 'yes'
           in case the option is merely a flag.

我从手册页 crypttab(5) 中获得了大部分内容,它写得比我能提供的要好。

当然,这样的设置很难保证安全,而且很大程度上取决于你在脚本中输入的内容。

答案2

恕我直言,您只能对非启动和非根磁盘执行此操作。要访问网络服务以获取凭据,Linux 必须:

  1. 启动系统
  2. 设置远程安装
  3. 检索凭证
  4. 装载磁盘

您可以为其编写一个 shell 脚本,并确保它在启动时启动。请记住,您必须在客户端系统上存储网络共享/数据库的凭据,这有点违背了目的 :)

答案3

已经有一个工具可以做你想做的事情,至少假设你不是从这样的加密卷启动(从加密卷进行无人值守启动有其自身的一系列问题,虽然有明显迹象表明使用这个工具是可行的,但我认为至少在第一次尝试时我不想尝试它)。它叫做曼陀罗

它的作用基本上是将密钥存储在单独的系统(Mandos 服务器)上,并允许客户端以安全的方式查询密钥。一旦客户端拥有密钥,就可以使用该密钥解锁 LUKS 容器。

当然,您必须适当地保护 Mandos 服务器,但这是任何密钥存储都会出现的问题,而且肯定不是 Mandos 独有的。

工作原理图在网站上。

相关内容