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