10.2. 部署 SELinux 处于 enforcing 模式的 Tang 服务器


您可以使用 Tang 服务器在启用了 Clevis 的客户端中自动解锁 LUKS 加密卷。在最小的场景中,您可以通过安装 tang 软件包并输入 systemctl enable tangd.socket --now 命令在端口 80 上部署 Tang 服务器。以下示例流程演示了运行在自定义端口上的 Tang 服务器作为 SELinux enforcing 模式下受限制的服务的部署。

先决条件

  • policycoreutils-python-utils 包及其依赖项已经安装。
  • firewalld 服务正在运行。

步骤

  1. 要安装 tang 软件包及其依赖项,请以 root 用户身份输入以下命令:

    # dnf install tang
  2. 选择一个未被占用的端口,例如 7500/tcp,并允许 tangd 服务绑定到该端口:

    # semanage port -a -t tangd_port_t -p tcp 7500

    请注意,一个端口只能供一个服务使用,因此试图使用一个已有的端口意味着 ValueError:Port already defined 错误信息。

  3. 在防火墙中打开端口:

    # firewall-cmd --add-port=7500/tcp
    # firewall-cmd --runtime-to-permanent
  4. 启用 tangd 服务:

    # systemctl enable tangd.socket
  5. 创建覆盖文件:

    # systemctl edit tangd.socket
  6. 在以下编辑器屏幕中,其打开了位于 /etc/systemd/system/tangd.socket.d/ 目录中的一个空 override.conf 文件,通过添加以下行将 Tang 服务器的默认端口从 80 改为之前选择的端口号:

    [Socket]
    ListenStream=
    ListenStream=7500
    重要

    在以 # Anything between here# Lines below this 开头的行之间插入之前的代码片段,否则系统会丢弃您的更改。

  7. Ctrl+O 并按 Enter 保存更改。按 Ctrl+X 退出编辑器。
  8. 重新载入更改的配置:

    # systemctl daemon-reload
  9. 检查您的配置是否正常工作:

    # systemctl show tangd.socket -p Listen
    Listen=[::]:7500 (Stream)
  10. 启动 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.