我被要求将我们所有 Linux 设备上的 CentOS 6.8 迁移到 7.4。我在将安全关联加载到 Linux 内核时遇到了问题。我使用 ipsec-tools 的 setkey 实现来执行此操作。最初在 CentOS 6.8 中,使用 setkey.conf 文件中定义的密钥和算法(3des-cbc 192 位密钥)可以很好地完成此操作。我可以输入“setkey -D”并查看其中列出的 SA。
在 CentOS 7.4 中,它无法加载 SA。在这两种情况下,我在启动时在 Grub 命令行语句中设置了“fips=1”参数,这应该会强制遵循 FIPS。我发现,如果我在运行 CentOS 7.4 的机器上删除 grub 命令行语句中的“fips=1”参数,那么它将成功加载 SA。这让我认为 FIPS 合规性在 CentOS 6.8 和 CentOS 7.4 之间发生了变化,并且 3des-cbc 不再是认可的算法。
我尝试不再使用 ipsec-tools 的 setkey 实现,而是使用 ip xfrm 来加载它,但得到的结果相同。我还没有尝试使用 openswan,但我认为它试图通过将 SA 加载到内核来完成相同的事情;因此,我预计会遇到同样的问题。
以下是更多详细信息:
场景 1:
- CentOS 6.8
- 内核:2.6.32-642.6.2.el6.x86_64
- ipsec-tools 0.8.2-1
- Grub 命令行语句包含 fips=1
setkey.conf 文件包含:
# Flush the SAD and SPD
flush;
spdflush;
# ESP SAs using 192 bit long keys (168 + 24 parity)
add 0.0.0.0 192.168.121.138 esp 0x201 -E 3des-cbc
<OUR KEY>;
# Security policies
spdadd 0.0.0.0/0 [any] 192.168.121.138 [1960] any -P in ipsec
esp/transport//require;
场景 2:
- CentOS 7.4
- 内核:3.10.0-693.11.1.el7.x86_64
- ipsec-tools 0.8.2-1
- Grub 命令行语句包含 fips=1
- setkey.conf 文件与上面的相同。
在此配置中,setkey -D 返回一个错误,提示:“没有 SAD 条目” 如果我尝试使用“setkey -f /etc/setkey.conf”将 setkey.conf 文件读入内核,则会出现一条错误消息:“第 10 行的结果是:(NULL)”。
有没有更好的方法将 SA 加载到 Linux 内核中?3des-cbc 是否不再被视为符合 FIPS 标准?我们是否应该更改为符合 FIPS 标准的其他加密算法?如果是这样,哪种算法预计在可预见的未来仍将保持合规?
答案1
RHEL/CentOS 发行版缺乏支持是故意的。Redhat 决定不再支持 RHEL ipsec-tools
6/7,并在其 RHEL 6/7 主页上提到了这一点:
ipsec-tools 软件包已弃用,取而代之的是 openswan。目前 ipsec-tools 项目没有活跃的上游开发或维护。
笔记:这也适用于 CentOS 6/7。
我建议使用 *SWAN 项目之一,例如 OpenSWAN、LibreSWAN 或 StrongSWAN。