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

Funcionalidad Esperada

Proporcionar mecanismos para gestionar personalizaciones locales:

  • Establecer modo reforzado/permisivo
  • Restaurar partes del árbol de sistema de archivos
  • Establecer/obtener booleans
  • Establecer/obtener contextos de archivos
  • Gestionar inicios de sesión
  • Gestionar puertos

Nota: Si deseas gestionar personalizaciones de SELinux en modo deshabilitado, necesitas tener instalada la política de SELinux targeted.

Requisitos

Ver a continuación

Requisitos de Colección

El rol requiere colecciones externas. Usa el siguiente comando para instalarlas:

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

Módulos proporcionados por este repositorio

selinux_modules_facts

Reúne el estado de los módulos de SELinux

Variables del Rol

Purga de modificaciones locales

Por defecto, las modificaciones especificadas en selinux_booleans, selinux_fcontexts, selinux_ports y selinux_logins se aplican sobre modificaciones preexistentes. Para purgar modificaciones locales antes de establecer nuevas, establece las siguientes variables en true:

  • selinux_booleans_purge - Booleans de SELinux
  • selinux_fcontexts_purge - Contextos de archivos de SELinux
  • selinux_ports_purge - Puertos de SELinux
  • selinux_logins_purge - Mapeo de usuarios de SELinux

Puedes purgar todas las modificaciones usando selinux_all_purge: true:

selinux_all_purge: true

selinux_policy, selinux_state

Gestiona el tipo de política y modo de SELinux.

selinux_policy: targeted
selinux_state: enforcing

Los valores permitidos para selinux_state son disabled, enforcing y permissive.

Si selinux_state no está establecido, el estado de SELinux no se cambia. Si selinux_policy no está establecido y SELinux se va a habilitar, por defecto se utiliza targeted. Si SELinux ya está habilitado, la política no se cambia.

Esto utiliza el módulo selinux para gestionar el modo y la política de SELinux.

selinux_booleans

Gestiona el estado de los booleans de SELinux. Esto es una lista de dict, donde cada dict está en el mismo formato utilizado por el módulo seboolean.

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

selinux_fcontexts

Gestiona el estado de las definiciones de mapeo de contextos de archivos de SELinux. Esto es una lista de dict, donde cada dict está en el mismo formato que utiliza el módulo sefcontext.

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

Los usuarios también pueden pasar los siguientes parámetros opcionales:

  • seuser: para establecer el usuario de SELinux
  • selevel: para establecer el Rango de Seguridad MLS/MCS (solo sistemas MLS/MCS). El rango de SELinux para mapeo de inicio de sesión de SELinux usa por defecto el rango del registro de usuario de SELinux.

Las modificaciones individuales se pueden eliminar estableciendo state a absent.

selinux_ports

Gestiona el estado de la política de puertos de SELinux. Esto es una lista de dict, donde cada dict está en el mismo formato utilizado por el módulo seport.

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

selinux_restore_dirs

Esto es una lista de cadenas, donde cada cadena es un árbol del sistema de archivos donde deseas ejecutar restorecon:

selinux_restore_dirs:
  - /tmp/test_dir

selinux_logins

Gestiona el mapeo de usuario de Linux a usuario de SELinux. Esto es una lista de dict, donde cada dict está en el mismo formato utilizado por el módulo selogin.

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

selinux_modules

Es posible gestionar los módulos de SELinux usando la variable selinux_modules que contendría una lista de dict, por ejemplo:

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: un archivo de módulo local (ya sea .cil o .pp) que se instalará en un nodo, utilizado para instalar nuevos módulos
  • name: nombre del módulo, usado para habilitar módulos deshabilitados, deshabilitar módulos habilitados, eliminar módulos
  • priority: prioridad del módulo de SELinux, la predeterminada es "400". "100" se utiliza para módulos instalados desde paquetes de selinux-policy, "200" para otros módulos instalados desde rpm de terceros, "300" es usado por SETroubleshoot
  • state: uno de los siguientes valores
    • enabled: instalar o habilitar el módulo
    • disabled: deshabilitar el módulo
    • absent: eliminar el módulo

Nota: No se admite la construcción de módulos desde el código fuente en los nodos. Sin embargo, en muchos casos, un módulo binario pp o cil podría usarse en diferentes sistemas si todos los sistemas admiten tipos, clases y permisos utilizados en el módulo. En el caso del módulo pp, también debe ser construido con la versión de módulo policydb más baja admitida en los sistemas de destino, es decir, en el sistema más antiguo.

Nota: Las prioridades de los módulos son ignoradas en Red Hat Enterprise Linux 6.

Nota: La gestión de módulos es idempotente solo en Fedora y EL 8.6 y posteriores. Puedes gestionar módulos en versiones anteriores, pero no será idempotente.

selinux_transactional_update_reboot_ok

Esta variable se utiliza para manejar reinicios requeridos por actualizaciones transaccionales. Si una actualización transaccional requiere un reinicio, el rol procederá con el reinicio si selinux_transactional_update_reboot_ok está establecido en true. Si se establece en false, el rol notificará al usuario que se requiere un reinicio, permitiendo un manejo personalizado de la necesidad de reinicio. Si no se establece esta variable, el rol fallará para asegurar que no se pase por alto la necesidad de reinicio.

selinux_transactional_update_reboot_ok: true

Hechos de Ansible

selinux_reboot_required

Este hecho personalizado se establece en true si un reinicio del sistema es necesario cuando SELinux se establece de disabled a enabled o viceversa. De lo contrario, el hecho se establece en false. En caso de que se necesite un reinicio del sistema, se indicará devolviendo un error del rol que necesita ser manejado usando una constructo de block:...rescue:. El reinicio debe ser realizado en el playbook, el rol en sí nunca reinicia el host gestionado. Después del reinicio, el rol debe ser reaplicado para completar los cambios.

selinux_installed_modules

Este hecho personalizado representa la estructura del almacenamiento de módulos de SELinux

"selinux_installed_modules": {
  <nombre del módulo>: {
    <prioridad del módulo>: ("enabled"|"disabled"),
    ...
  },
  ...
}

por ejemplo,

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

NOTA: La prioridad del módulo se establece en "0" cuando no se soportan prioridades, por ejemplo, en Red Hat Enterprise Linux 6.

Ejemplos

El uso general se demuestra en el playbook selinux-playbook.yml.

rpm-ostree

Ver README-ostree.md

Instalar
ansible-galaxy install linux-system-roles.selinux
Licencia
gpl-3.0
Descargas
153.5k
Propietario