linux-system-roles.selinux
SELinux
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 SELinuxselinux_fcontexts_purge
- Contextos de archivos de SELinuxselinux_ports_purge
- Puertos de SELinuxselinux_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 SELinuxselevel
: 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ódulosname
: nombre del módulo, usado para habilitar módulos deshabilitados, deshabilitar módulos habilitados, eliminar módulospriority
: 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 SETroubleshootstate
: uno de los siguientes valoresenabled
: instalar o habilitar el módulodisabled
: deshabilitar el móduloabsent
: 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
Configure SELinux
ansible-galaxy install linux-system-roles.selinux