10.3. 使用 selinux RHEL 系统角色管理端口


您可以使用 selinux RHEL 系统角色在多个系统中自动管理 SELinux 中的端口访问。例如,在将 Apache HTTP 服务器配置为侦听不同端口时,这可能很有用。您可以使用 selinux RHEL 系统角色创建一个 playbook,将 http_port_t SELinux 类型分配给特定的端口号。在受管节点上运行 playbook 后,SELinux 策略中定义的特定服务可以访问此端口。

您可以使用 seport 模块在 SELinux 中自动管理端口访问,这比使用整个角色更快,或者使用 selinux RHEL 系统角色,在对 SELinux 配置进行其他更改时,这更为有用。这个方法等同于 selinux RHEL 系统角色在配置端口时使用 seport 模块。每个方法都与在受管节点上输入 semanage port -a -t http_port_t -p tcp < port_number> 命令的影响相同。

前提条件

  • 您已准备好控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接到受管节点的帐户具有 sudo 权限。
  • 可选:要使用 semanage 命令验证端口状态,必须安装 policycoreutils-python-utils 软件包。

步骤

  • 要在不进行其他更改的情况下只配置端口号,请使用 seport 模块:

    - name: Allow Apache to listen on tcp port <port_number>
      community.general.seport:
        ports: <port_number>
        proto: tcp
        setype: http_port_t
        state: present

    <port_number > 替换为您要为其分配 http_port_t 类型的端口号。

  • 对于涉及其他 SELinux 自定义的受管节点的更复杂的配置,请使用 selinux RHEL 系统角色。创建一个 playbook 文件,如 ~/playbook.yml,并添加以下内容:

    ---
    - name: Modify SELinux port mapping example
      hosts: all
      vars:
        # Map tcp port <port_number> to the 'http_port_t' SELinux port type
        selinux_ports:
          - ports: <port_number>
            proto: tcp
            setype: http_port_t
            state: present
    
      tasks:
        - name: Include selinux role
          ansible.builtin.include_role:
            name: rhel-system-roles.selinux

    <port_number > 替换为您要为其分配 http_port_t 类型的端口号。

验证

  • 验证端口是否已分配给 http_port_t 类型:

    # semanage port --list | grep http_port_t
    http_port_t                	tcp  	<port_number>, 80, 81, 443, 488, 8008, 8009, 8443, 9000

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.selinux/README.md file
  • /usr/share/doc/rhel-system-roles/selinux/ directory
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.