Cambiar Estados y Modos de SELinux
Cambios permanentes en estados y modos de SELinux
Como se explica en Introducción a SELinux, SELinux se puede habilitar o deshabilitar. Cuando está habilitado, SELinux tiene dos modos: forzado y permisivo.
Emplee las instrucciones getenforce
o sestatus
para marcar en cual modo SELinux está ejecutándose. La instrucción getenforce
devuelve Enforcing
, Permissive
, o Disabled
.
La instrucción sestatus
devuelve el estado SELinux y la normativa SELinux que está siendo utilizada:
[~]$ sestatus
Estado de SELinux: enabled
Montado de SELinuxfs: /sys/fs/selinux
Directorio raíz de SELinux: /etc/selinux
Nombre de normativa cargada: targeted
Modo actual: enforcing
Modo desde archivo config: enforcing
Estado normativo MLS: enabled
Estado normativo deny_unknown: allowed
Comprobante de protección de memoria: actual (secure)
Versión max de normativa kernel: 31
Cuando los sistemas ejecutan SELinux en modo permisivo, los usuarios y procesos pueden etiquetar incorrectamente varios objetos del sistema de archivos. Los objetos del sistema de archivos creados con SELinux deshabilitado no se etiquetan. Este comportamiento causa problemas al cambiar al modo de aplicación, ya que SELinux depende de que los objetos del sistema de archivos estén etiquetados correctamente. Para evitar que los archivos etiquetados incorrectamente o sin etiquetar causen problemas, los sistemas de archivos se reetiquetan automáticamente al cambiar del estado deshabilitado al modo permisivo o de aplicación. En el modo permisivo, use el comando |
Habilitando SELinux
Cuando está habilitado, SELinux puede correr en uno de estos dos modos: hacer cumplir o permisivo. Las siguientes secciones muestran como cambiar permanentemente entre estos modos.
Mientras habilita SELinux sobre sistemas que previamente lo tenían deshabilitado, para evitar problemas, como sistemas que sean incapaces de arrancar o fallos en procesos, siga este procedimiento.
-
Están instalados los paquetes
selinux-policy-targeted
,selinux-policy
,libselinux-utils
ygrubby
. Para comprobar que un paquete concreto está instalado:$ rpm -q package_name
-
If your system has SELinux disabled at the kernel level (this is the recommended way, see [_disabling_selinux]), change this first. Check if you have the
selinux=0
option in your kernel command line:$ cat /proc/cmdline BOOT_IMAGE=... ... selinux=0
-
Quite la opción
selinux=0
de la configuración del gestor de arranque usandogrubby
:$ sudo grubby --update-kernel ALL --remove-args selinux
-
El cambio de aplica tras su reinicio del sistema en uno de los siguientes pasos.
-
-
Asegure el sistema de archivos es re-etiquetado en el siguiente arranque:
$ sudo fixfiles onboot
-
Enable SELinux in permissive mode. For more information, see [_changing_to_permissive_mode].
-
Restart your system:
$ reboot
-
Check for SELinux denial messages.
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent
-
If there are no denials, switch to enforcing mode. For more information, see [_changing_to_enforcing_mode].
To run custom applications with SELinux in enforcing mode, choose one of the following scenarios:
-
Run your application in the
unconfined_service_t
domain. -
Write a new policy for your application. See the Writing a custom SELinux policy chapter in the RHEL 8 Using SELinux document for more information.
Cambiando a modo permisivo
Utilice el siguiente procedimiento para cambiar permanentemente el modo SELinux a permisivo. Cuando SELinux se ejecuta en modo permisivo, la política de SELinux no se aplica. El sistema permanece operativo y SELinux no deniega ninguna operación, sino que solo registra los mensajes AVC, que pueden utilizarse para la resolución de problemas, la depuración y la mejora de las normativas de SELinux. En este caso, cada AVC se registra solo una vez.
-
Los paquetes
selinux-policy-targeted
,libselinux-utils
, ypolicycoreutils
son instalados en su sistema. -
Los parámetros de kernel
selinux=0
oenforcing=0
no son utilizados.
-
Abra el archivo
/etc/selinux/config
en el editor de texto que prefiera, por ejemplo:
# vi /etc/selinux/config
-
Configure la opción
SELINUX=permissive
:
# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores: # enforcing - Normativa de seguridad SELinux está reforzada. # permissive - Declara avisos de SELinux en vez de reforzarlo. # disabled - Sin normativa SELinux si cargada. SELINUX=*permissive* # SELINUXTYPE= puede tomar uno de estos dos valores: # targeted - Procesos destinados están protegidos. # mls - Protección de seguridad multi-nivel. SELINUXTYPE=targeted
-
Rearranque el sistema:
# reboot
Cambiar a modo forzado
Utilice los siguiente procedimiento para cambiar a SELinux a modo reforzado. Cuando SELinux esté ejecutándose en modo reforzado, refuerza la normativa de SELinux y deniega acceso basado en reglas de normativa de SELinux. En Fedora, el modo reforzado está habilitado por defecto cuando el sistema fue inicialmente instalado con SELinux.
-
Los paquetes
selinux-policy-targeted
,libselinux-utils
, ypolicycoreutils
son instalados en su sistema. -
Los parámetros de kernel
selinux=0
oenforcing=0
no son utilizados.
-
Abra el archivo
/etc/selinux/config
en el editor de texto que prefiera, por ejemplo:# vi /etc/selinux/config
-
Configure la opción
SELINUX=enforcing
:# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores: # enforcing - normativa de seguridad SELinux está reforzada. # permissive - SELinux declara avisos en vez de reforzado. # disabled - Ninguna normativa SELinux está cargada. SELINUX=enforcing # SELINUXTYPE= puede tomar uno de estos dos valores: # targeted - Procesos destinados están protegidos. # mls - Protección de seguridad multi-nivel SELINUXTYPE=targeted
-
Guarde los cambios, y rearranque el sistema:
# reboot
En el siguiente arranque, las etiquetas SELinux todas los archivos y directorios con el sistema y añada el contexto SELinux para archivos y directorios que fueron creados cuando SELinux fue inhabilitado.
-
Tras que el sistema reinicie, confirme que el comando
getenforce
devuelveEnforcing
:$ getenforce Enforcing
After changing to enforcing mode, SELinux may deny some actions because of incorrect or missing SELinux policy rules. To view what actions SELinux denies, enter the following command as root: # ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today Alternativamente, con el # grep "SELinux is preventing" /var/log/messages Los usuarios estándar pueden utilizar el IGU Si está activo SELinux y la demonio Audit (auditd) no está ejecutándose en su sistema, encontrar busque ciertos mensajes de SELinux en la salida del comando dmesg: # dmesg | grep -i -e type=1300 -e type=1400 If SELinux denies some actions, see the Troubleshooting problems related to SELinux chapter in the RHEL 8 Using SELinux document for information about troubleshooting. |
Deshabilitar SELinux
Utilice el procedimiento siguiente para deshabilitar permanentemente SELinux.
When SELinux is disabled, SELinux policy is not loaded at all; it is not enforced and AVC messages are not logged. Therefore, all benefits of running SELinux listed in Benefits of SELinux are lost. It is recommended to use permissive mode instead of permanently disabling SELinux. See [_changing_to_permissive_mode] for more information about permissive mode. |
Deshabilitar SELinux usando la opción SELINUX=disabled en /etc/selinux/config lleva a un proceso en el cual el kernel arranca con SELinux habilitado y conmuta al modo deshabilitado más tarde en el proceso de arranque. Debido a que pueden ocurrir fallos de memoria y condiciones en la marcha que originen fallos en el kernel, es preferible deshabilitar SELinux añadiendo el parámetro selinux=0 en la línea de comandos del kernel como se describe en Cambiar los modos SELinux en el momento del arranque si su escenario requiere realmente deshabilitar completamente SELinux. |
-
El paquete
grubby
está instalado:$ rpm -q grubby grubby-version
-
Abra el archivo
/etc/selinux/config
en el editor de texto que prefiera, por ejemplo:# vi /etc/selinux/config
-
Configura la opción SELINUX=disabled:
# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores # enforcing - Normativa de seguridad de SELinux está reforzada. # permissive - SELinux declara avisos en vez de reforzar. # disabled - Ninguna normativa de SELinux está cargada. SELINUX=disabled # SELINUXTYPE= puede tomar uno de estos dos valores # targeted - Procesos apuntados están protegidos # mls - Protección de Seguridad Multi Nivel. SELINUXTYPE=targeted
-
Guarde el cambio, y rearranque su sistema:
# reboot
-
Tras rearrancar, confirme que la instrucción
getenforce
devuelveDisabled
:$ getenforce Disabled
Cambiadno Modos SELinux en Tiempo de Arranque
Al arrancar, puede poner varios parámetros del kernel para cambiar la manera de ejecutar SELinux:
- enforcing=0
-
Al configurar este parámetro, el sistema se inicia en modo permisivo, lo cual resulta útil para solucionar problemas. Usar el modo permisivo podría ser la única opción para detectar un problema si el sistema de archivos está demasiado corrupto. Además, en modo permisivo, el sistema continúa creando las etiquetas correctamente. Los mensajes AVC que se crean en este modo pueden ser diferentes a los del modo reforzado.
En el modo permisible, solo la primera denegación desde una serie de los mismos denegados es informado. Sin embargo, en modo refuerzo, quizá obtiene una denegación relacionada con lectura de un directorio, y una detención de aplicación. En modo permisivo, obtiene el mismo mensaje AVC, pero la aplicación continúa leyendo archivos en el directorio y obtiene un AVC para cada denegación en adición.
- selinux=0
-
Este parámetro hace que el núcleo no cargue ninguna parte de la infraestructura SELinux. Los scripts de inicio detectan que el sistema se ha iniciado con el parámetro
selinux=0
y modifican el archivo/.autorelabel
. Esto hace que el sistema vuelva a etiquetar automáticamente la próxima vez que se inicie con SELinux habilitado.Utilizar el parámetro
selinux=0
no está recomendado. Para depurar su sistema, prefiera emplear modo permisivo. - autorelabel=1
-
Este parámetro fuerza el sistema para re-etiquetar similarmente a los comandos siguientes:
# touch /.autorelabel # reboot
Si un archivo contiene una cantidad grande de objetos mal etiquetados, inicie el sistema en modo permisivo para crear el proceso de auto-reetiquetado.
Para obtener parámetros de arranque del kernel adicionales relacionados con SELinux, como checkreqprot
, consulte el archivo kernel-parameters.txt
. Este archivo está disponible en el paquete fuente de su kernel de Linux (.src.rpm). Para descargar el paquete fuente que contiene el kernel utilizado actualmente:
[~]# dnf download --source kernel
Want to help? Learn how to contribute to Fedora Docs ›