10.2. 部署 SELinux 处于 enforcing 模式的 Tang 服务器
您可以使用 Tang 服务器在启用了 Clevis 的客户端中自动解锁 LUKS 加密卷。在最小的场景中,您可以通过安装 tang
软件包并输入 systemctl enable tangd.socket --now
命令在端口 80 上部署 Tang 服务器。以下示例流程演示了运行在自定义端口上的 Tang 服务器作为 SELinux enforcing 模式下受限制的服务的部署。
先决条件
-
policycoreutils-python-utils
包及其依赖项已经安装。 -
firewalld
服务正在运行。
步骤
要安装
tang
软件包及其依赖项,请以root
用户身份输入以下命令:# dnf install tang
选择一个未被占用的端口,例如 7500/tcp,并允许
tangd
服务绑定到该端口:# semanage port -a -t tangd_port_t -p tcp 7500
请注意,一个端口只能供一个服务使用,因此试图使用一个已有的端口意味着
ValueError:Port already defined
错误信息。在防火墙中打开端口:
# firewall-cmd --add-port=7500/tcp # firewall-cmd --runtime-to-permanent
启用
tangd
服务:# systemctl enable tangd.socket
创建覆盖文件:
# systemctl edit tangd.socket
在以下编辑器屏幕中,其打开了位于
/etc/systemd/system/tangd.socket.d/
目录中的一个空override.conf
文件,通过添加以下行将 Tang 服务器的默认端口从 80 改为之前选择的端口号:[Socket] ListenStream= ListenStream=7500
重要在以
# Anything between here
和# Lines below this
开头的行之间插入之前的代码片段,否则系统会丢弃您的更改。- 按 Ctrl+O 并按 Enter 保存更改。按 Ctrl+X 退出编辑器。
重新载入更改的配置:
# systemctl daemon-reload
检查您的配置是否正常工作:
# systemctl show tangd.socket -p Listen Listen=[::]:7500 (Stream)
启动
tangd
服务:# systemctl restart tangd.socket
由于
tangd
使用了systemd
套接字激活机制,因此服务器会在第一次连接进来时就立即启动。在第一次启动时会自动生成一组新的加密密钥。要执行手动生成密钥等加密操作,请使用jose
工具。
验证
在您的 NBDE 客户端上,使用以下命令验证您的 Tang 服务器是否正常工作。该命令必须返回您传递的与加密和解密相同的消息:
# echo test | clevis encrypt tang '{"url":"<tang.server.example.com:7500>"}' -y | clevis decrypt test
其他资源
-
tang (8)
,semanage (8)
,firewall-cmd (1)
,jose (1)
,systemd.unit (5)
, 和systemd.socket (5)
man page