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 tang
Copy 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 7500
Copy 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-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
tangd
服务:systemctl enable tangd.socket
# systemctl enable tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建覆盖文件:
systemctl edit tangd.socket
# systemctl edit tangd.socket
Copy 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=7500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在以
# Anything between here
和# Lines below this
开头的行之间插入之前的代码片段,否则系统会丢弃您的更改。-
保存更改并退出编辑器。在默认
vi
编辑器中,您可以通过按 Esc 切换到命令模式,输入:wq
并按 Enter 来实现。 重新载入更改的配置:
systemctl daemon-reload
# systemctl daemon-reload
Copy 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.socket
Copy 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 test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow