24.2. 使用 selinux RHEL 系统角色管理 SELinux 网络端口标签


如果要在非标准端口上运行服务,您必须在此端口上设置相应的 SELinux 类型标签。这可防止在服务希望侦听非标准端口时,SELinux 拒绝对服务的访问权限。通过使用 selinux RHEL 系统角色,您可以自动化此任务,并在端口上远程分配一个类型标签。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Managing SELinux
      hosts: managed-node-01.example.com
      tasks:
        - name: Set http_port_t label on network port
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.selinux
          vars:
            selinux_ports:
              - ports: <port_number>
                proto: tcp
                setype: http_port_t
                state: present

    示例 playbook 中指定的设置包括如下:

    ports: <port_number>
    定义您要为其分配 SELinux 标签的端口号。使用逗号分隔多个值。
    setype: <type_label>
    定义 SELinux 类型标签。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  • 显示分配了 http_port_t 标签的端口号:

    # ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t'
    http_port_t      tcp     80, 81, 443, <port_number>, 488, 8008, 8009, 8443, 9000

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 文件
  • /usr/share/doc/rhel-system-roles/selinux/ 目录
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.