linux-system-roles.selinux

SELinux

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml tft.yml tft_citest_bad.yml woke.yml

预期功能

基本上提供管理本地自定义的机制:

  • 设置强制/enforcing或宽容/permissive
  • 恢复文件系统树中的部分
  • 设置/获取布尔值
  • 设置/获取文件上下文
  • 管理登录
  • 管理端口

注意: 如果您想在 disabled 模式下管理 SELinux 自定义,您需要安装 SELinux targeted 策略。

要求

请见下方

集合要求

该角色需要外部集合。使用以下命令安装它们:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

本库提供的模块

selinux_modules_facts

收集 SELinux 模块的状态

角色变量

清除本地修改

默认情况下,在现有修改上应用 selinux_booleansselinux_fcontextsselinux_portsselinux_logins 中指定的修改。要在设置新的修改之前清除本地修改,请将以下变量设置为 true

  • selinux_booleans_purge - SELinux 布尔值
  • selinux_fcontexts_purge - SELinux 文件上下文
  • selinux_ports_purge - SELinux 端口
  • selinux_logins_purge - SELinux 用户映射

您可以使用 selinux_all_purge: true 清除所有修改:

selinux_all_purge: true

selinux_policy, selinux_state

管理 SELinux 策略类型和模式。

selinux_policy: targeted
selinux_state: enforcing

selinux_state 的允许值为 disabledenforcingpermissive

如果未设置 selinux_state,则不会更改 SELinux 状态。 如果未设置 selinux_policy 且 SELinux 需要启用,则默认为 targeted。如果 SELinux 已启用,则不会更改策略。

这使用 selinux 模块管理 SELinux 模式和策略。

selinux_booleans

管理 SELinux 布尔值的状态。这是一个 listdict,其中每个 dict 的格式与 seboolean 模块使用的格式相同。

selinux_booleans:
  - name: samba_enable_home_dirs
    state: true
  - name: ssh_sysadm_login
    state: true
    persistent: true

selinux_fcontexts

管理 SELinux 文件上下文映射定义的状态。这是一个 listdict,其中每个 dict 的格式与 sefcontext 模块使用的格式相同。

selinux_fcontexts:
  - target: '/tmp/test_dir(/.*)?'
    setype: 'user_home_dir_t'
    ftype: d
    state: present

用户还可以传递以下可选参数:

  • seuser:设置 SELinux 用户
  • selevel:设置 MLS/MCS 安全范围(仅限 MLS/MCS 系统)。SELinux 登录映射的 SELinux 范围默认为 SELinux 用户记录范围。

通过将 state 设置为 absent,可以删除单个修改。

selinux_ports

管理 SELinux 端口策略的状态。这是一个 listdict,其中每个 dict 的格式与 seport 模块使用的格式相同。

selinux_ports:
  - ports: 22100
    proto: tcp
    setype: ssh_port_t
    state: present
    local: true

selinux_restore_dirs

这是一个字符串的 list,每个字符串都是您希望运行 restorecon 的文件系统树:

selinux_restore_dirs:
  - /tmp/test_dir

selinux_logins

管理 Linux 用户到 SELinux 用户的映射。这是一个 listdict,其中每个 dict 的格式与 selogin 模块使用的格式相同。

selinux_logins:
  - login: plautrba
    seuser: staff_u
    state: absent
  - login: default
    seuser: staff_u
    serange: s0-s0:c0.c1023
    state: present

selinux_modules

可以使用 selinux_modules 变量管理 SELinux 模块,该变量将包含一个 listdict,例如:

selinux_modules:
  - path: localmodule.pp
    state: enabled
  - path: localmodule.cil
    priority: 350
    state: enabled
  - name: unconfineduser
    state: disabled
  - name: localmodule
    priority: 350
    state: absent
  • path:要安装到节点上的本地模块文件(.cil 或 .pp),用于安装新模块
  • name:模块名称,用于启用禁用的模块、禁用已启用的模块和移除模块
  • priority:SELinux 模块优先级,默认为 "400""100" 用于从 selinux-policy 包安装的模块,*"200"* 用于其他从第三方 rpm 安装的模块,*"300"* 用于 SETroubleshoot
  • state:以下值之一
    • enabled:安装或启用模块
    • disabled:禁用模块
    • absent:移除模块

注意: 在节点上从源代码构建模块不受支持。 但是在许多情况下,如果所有系统支持模块中使用的类型、类和权限,则可以在不同系统上使用二进制 ppcil 模块。在 pp 模块的情况下,它还需要在目标系统上使用最低支持的 policydb 模块版本进行构建,即在最旧的系统上。

注意: 在 Red Hat Enterprise Linux 6 中忽略模块优先级。

注意: 仅在 Fedora 和 EL 8.6 及更高版本上管理模块是幂等的。 您可以在较旧的版本上管理模块,但它将不具备幂等性。

selinux_transactional_update_reboot_ok

此变量用于处理事务更新所需的重启。如果事务更新需要重启,则如果 selinux_transactional_update_reboot_ok 设置为 true,角色将继续重启。如果设置为 false,角色将通知用户需要重启,以便进行自定义处理。如果未设置此变量,角色将失败,以确保不会忽视重启要求。

selinux_transactional_update_reboot_ok: true

Ansible 事实

selinux_reboot_required

当将 SELinux 从 disabled 切换到 enabled 或反之时,如果需要系统重启,则将此自定义事实设置为 true。否则,事实设置为 false。如果需要系统重启,角色将通过返回失败进行指示,这需要使用 block:...rescue: 结构进行处理。重启需要在 playbook 中执行,角色本身不会重启被管理的主机。重启后需要重新应用角色以完成更改。

selinux_installed_modules

此自定义事实表示 SELinux 模块存储结构

"selinux_installed_modules": {
  <module name>: {
    <module priority>: ("enabled"|"disabled"),
    ...
  },
  ...
}

例如:

"ansible_facts": {
  "selinux_installed_modules": {
    "abrt": {
      "100": "enabled",
      "400": "disabled"
    },
    "accountsd": {
      "100": "enabled"
    },
    "acct": {
      "100": "enabled"
    }
  }
}

注意: 当不支持优先级时,模块优先级设置为 "0",例如在 Red Hat Enterprise Linux 6 中。

示例

一般使用示例在 selinux-playbook.yml playbook 中演示。

rpm-ostree

请见 README-ostree.md

安装
ansible-galaxy install linux-system-roles.selinux
许可证
gpl-3.0
下载
153.5k