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