SELinux
- DESCRIPCIÓN
El tema proporciona información básica sobre Security-Enhanced Linux.
- INTENCIÓN
Desea comprender SELinux y cómo configurarlo en SLE Micro.
- ESFUERZO
Se tardan aproximadamente 40 minutos en leer el artículo.
1 Acerca de SELinux #
SELinux se desarrolló como una solución de seguridad adicional de Linux que utiliza el marco de seguridad del kernel de Linux. El propósito era permitir una directiva de seguridad más detallada que fuera más allá de los controles de acceso discrecional (DAC) estándar, los permisos de archivo tradicionales de propietario/grupo/mundo y lectura/escritura/ejecución.
SELinux utiliza etiquetas adjuntas a objetos (por ejemplo, archivos y sockets de red) para tomar decisiones de acceso.
La acción por defecto de SELinux es denegar cualquier acceso. SELinux permite solo las acciones que se permitieron específicamente en la directiva de SELinux. Otra característica de SELinux que aumenta la seguridad es que permite el confinamiento estricto de los procesos hasta el punto en que los procesos no pueden acceder a los archivos de otros procesos en el mismo sistema.
SELinux fue diseñado para mejorar las soluciones de seguridad existentes, no para reemplazarlas. Por ejemplo, el control de acceso discrecional (DAC) se sigue aplicando, incluso si el sistema utiliza SELinux. Si DAC deniega el acceso primero, SELinux no se utiliza porque el acceso ya estaba bloqueado por otro mecanismo.
2 Obtención de SELinux #
SELinux se instala por defecto cuando YaST instala SLE Micro o forma parte de las imágenes preconstruidas.
Si SELinux no está configurado en su sistema, ejecute el siguiente comando:
#
transactional-update setup-selinux
Rearranque el sistema después de que finalice el comando. El comando instala la directiva de SELinux si no está instalada, establece el modo de SELinux enforcing
y reconstruye initrd
.
3 Modos de SELinux #
SELinux puede ejecutarse en uno de estos tres modos: disabled
, permissive
o enforcing
.
El uso del modo disabled
significa que no se aplica ninguna regla de la directiva de SELinux y que el sistema no está protegido. Por lo tanto, no se recomienda utilizar el modo disabled
.
En el modo permissive
, SELinux está activo, se carga la directiva de seguridad, se etiqueta el sistema de archivos y se registran las entradas de denegación de acceso. Sin embargo, la directiva no se aplica y, por lo tanto, no se deniega el acceso.
En el modo enforced
, se aplica la directiva de seguridad. Se deniegan todos los accesos no permitidos explícitamente por la directiva.
Para obtener información sobre cómo cambiar entre los modos de SELinux, consulte la Sección 3.1, “Cambio del modo de SELinux”.
3.1 Cambio del modo de SELinux #
Puede cambiar el modo de SELinux de forma temporal o permanente.
3.1.1 Cambio temporal del modo de SELinux #
Para establecer temporalmente el modo permissive
o enforcing
de SELinux, utilice el comando setenforce
.
El comando setenforce
tiene la siguiente sintaxis:
#
setenforceMODE_ID
donde MODE_ID es 0 para el modo permissive
o 1 para el modo enforced
.
Recuerde que no puede inhabilitar SELinux mediante el comando setenforce
.
3.1.2 Cambio permanente del modo de SELinux #
Para realizar cambios en el modo de SELinux que persistan al rearrancar el sistema, edite el archivo de configuración /etc/selinux/config
. En este archivo, también puede inhabilitar SELinux en el sistema. Sin embargo, no se recomienda esta acción. Si cabe la posibilidad de que SELinux esté causando problemas en el sistema, cambie al modo permissive
y depure el sistema.
En el archivo /etc/selinux/config
, cambie el valor de SELINUX
a disabled
, permissive
o enforced
de la siguiente manera:
SELINUX=disabled
Los cambios en el archivo se aplican después del siguiente rearranque.
disabled
Si inhabilita SELinux en el sistema y luego lo habilita, asegúrese de volver a etiquetar el sistema. Si SELinux está inhabilitado y realiza cambios en el sistema de archivos, los cambios ya no se reflejan en el contexto (por ejemplo, los archivos nuevos no tienen contexto). Por lo tanto, debe volver a etiquetar el sistema mediante el comando restorecon
, con el parámetro de arranque autorelabel
o creando un archivo que active el cambio de etiqueta en el siguiente arranque. Para crear el archivo, ejecute el siguiente comando:
#
touch /etc/selinux/.autorelabel
Después de rearrancar, el archivo /etc/selinux/.autorelabel
se sustituye por otro archivo de indicador, /etc/selinux/.relabelled
, para evitar que se vuelva a etiquetar en los rearranques posteriores.
3.1.3 Verificación del modo de SELinux activo #
Para verificar el modo, ejecute el siguiente comando:
#
getenforce
El comando debe devolver permissive
o enforced
, dependiendo del MODE_ID proporcionado.
3.2 Verificación de que SELinux funciona #
Si está realizando cambios de configuración, puede ser útil cambiar al modo permissive. Durante este tiempo, los usuarios pueden etiquetar archivos incorrectamente y, por lo tanto, causar problemas al volver al modo enforcing.
Para devolver el sistema a su estado seguro, realice los siguientes pasos:
Restablezca el contexto de seguridad:
>
sudo
restorecon -R /
Cambie al modo enforcing definiendo
SELINUX=enforcing
en/etc/selinux/config
.Rearranque el sistema y vuelva a iniciar sesión.
Ejecute el comando
sestatus -v
. Debería proporcionar un resultado similar al siguiente:>
sudo
sestatus -v
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested(insecure) Max kernel policy version: 33 Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling terminal: unconfined_u:object_r:user_tty_device_t:s0 /etc/passwd system_u:object_r:passwd_file_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:bin_t:s0 \ -> system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:bin_t:s0 -> \ system_u:object_r:init_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0Si el sistema no funciona correctamente, compruebe los archivos de registro de
/var/log/audit/audit.log
. Para obtener más información, consulte SELinux troubleshooting.
4 Contexto de seguridad de SELinux #
El contexto de seguridad es un conjunto de datos asignados a un archivo o proceso. Se compone de un usuario, función, tipo, nivel y categoría de SELinux. Esta información se utiliza para tomar decisiones de control de acceso.
- usuario de SELinux
Una identidad definida en la directiva que está autorizada para un conjunto específico de funciones y para un rango de niveles específicos. Cada usuario de Linux se asigna a un solo usuario de SELinux. Sin embargo, un usuario de SELinux puede tener varias funciones.
SELinux no utiliza la lista de cuentas de usuario mantenida por Linux en
/etc/passwd
, sino que utiliza su propia base de datos y asignación. Por convención, el nombre de identidad tiene el sufijo_u
, por ejemplo:user_u
.Cuando se crea una nueva cuenta de Linux y el usuario de SELinux no está asignado a la cuenta, se utiliza el usuario de SELinux por defecto. Normalmente, el valor por defecto es
unconfined_u
. Para obtener información sobre cómo cambiar el valor por defecto, consulte la Sección 7.5.2, “El comandosemanage login
”.- función
Define un conjunto de permisos que se pueden otorgar a un usuario. Una función define a qué tipos puede acceder un usuario asignado a esta función. Por convención, el nombre de la función tiene como sufijo
_r
, por ejemplo:system_r
.- tipo
El tipo transmite información sobre cómo pueden interactuar archivos y procesos concretos. Un proceso consta de archivos con un tipo concreto de SELinux y no puede acceder a archivos que no sean de ese tipo. Por convención, el nombre del tipo tiene como sufijo
_t
, por ejemplo:var_t
.- nivel
Un atributo opcional que especifica el rango de niveles de autorización en la seguridad multinivel.
- categoría
Un atributo opcional que permite añadir categorías a procesos, archivos y usuarios. Un usuario puede acceder a los archivos de la misma categoría.
A continuación se muestra un ejemplo de un contexto SELinux:
allow user_t bin_t:file {read execute gettattr};
Esta regla de ejemplo indica que el usuario que tiene el tipo de contexto user_t
(este usuario se denomina objeto de origen) puede acceder a los objetos de clase archivo con el tipo de contexto bin_t
(el destino), utilizando los permisos read
, execute
y getattr
.
5 Descripción general de la directiva de SELinux #
La directiva es el componente clave de SELinux. La directiva de SELinux define reglas que especifican qué objetos pueden acceder a qué archivos, directorios, puertos y procesos de un sistema. Para ello, se define un contexto de seguridad para todos esos elementos.
Una directiva de SELinux contiene un gran número de reglas. Para que sean más fáciles de gestionar, las directivas suelen dividirse en módulos. Esto permite al administrador activar o desactivar la protección para distintas partes del sistema.
Al compilar la directiva para su sistema, tendrá la opción de trabajar con una directiva modular o con una directiva monolítica, donde se utiliza una directiva enorme para proteger todo el sistema. Se recomienda encarecidamente utilizar una directiva modular y no una directiva monolítica. Las directivas modulares son mucho más fáciles de gestionar.
SLE Micro se suministra con la directiva de SELinux targeted
.
5.1 Trabajo con módulos de SELinux #
Como administrador, puede activar o desactivar módulos. Esto puede ser útil si desea inhabilitar solo una parte de la directiva de SELinux y no desea ejecutar un servicio específico sin la protección de SELinux.
Para ver todos los módulos de directivas de SELinux en uso, ejecute el comando:
semodule -l
Después de obtener el nombre del módulo que desea desactivar, ejecute el comando:
>
sudo
semodule -d MODULENAME
Para activar el módulo de directivas, ejecute el comando:
>
sudo
semodule -e MODULENAME
5.2 Creación de directivas para contenedores #
SLE Micro se proporciona con una directiva que, por defecto, no permite que los contenedores accedan a los archivos fuera de los datos del contenedor. Por otro lado, se permite todo el acceso a la red. Normalmente, los contenedores se crean con montajes de vinculación y deben poder acceder a otros directorios, como /home
o /var
. Es posible que desee permitir el acceso a estos directorios o, por el contrario, restringir algunos puertos al contenedor incluso si se utiliza SELinux en el sistema. En tal caso, debe crear nuevas reglas de directiva que habiliten o inhabiliten el acceso. SLE Micro proporciona la herramienta Udica para este fin.
El siguiente procedimiento describe cómo crear una directiva personalizada para los contenedores:
Asegúrese de que SELinux esté en modo enforcing. Para obtener información detallada, consulte la Sección 3.1, “Cambio del modo de SELinux”.
Inicie un contenedor con los siguientes parámetros:
#
podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bashEl contenedor se ejecuta con la directiva por defecto que no permite el acceso a los puntos de montaje, pero no restringe otros puertos.
Puede salir del contenedor.
Obtenga el ID del contenedor:
#
podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e59f9d0f86f2 registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest /bin/bash 8 minutes ago Up 8 seconds ago 0.0.0.0:21->21/tcp zen_ramanujanCree un archivo JSON que Udica utilizará para crear una directiva personalizada para el contenedor:
#
podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILEPor ejemplo, sustituya OUTPUT_JSON_FILE por
container.json
.Ejecute Udica para generar una directiva según los parámetros del contenedor:
#
udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICYPor ejemplo:
#
udica -j container.json custom_policyDe acuerdo con las instrucciones proporcionadas, cargue los módulos de directivas ejecutando:
#
semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}Ejecute un contenedor con el nuevo módulo de directivas con la opción
--security-opt
siguiente:#
podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash
6 Booleanos de SELinux #
Los booleanos de SELinux admiten un enfoque de gestión de directivas flexible. Por ejemplo, permiten inhabilitar una directiva concreta en un servidor y mantener la misma directiva activa en otro. En otras palabras, un booleano puede entenderse como un cambio para una regla de directiva. En lugar de cambiar una directiva concreta, puede desactivarla. En el código de la directiva, los booleanos se denominan tunable. Dado que los booleanos se incluyen en la directiva, están disponibles en cuanto se carga una directiva.
Los cambios en los booleanos pueden ser permanentes o temporales y durar hasta el final de la sesión.
SELinux ofrece herramientas que permiten mostrar y ver detalles o cambiar el estado de los booleanos. Para obtener más información, consulte las secciones siguientes.
6.1 Uso de booleanos #
6.1.1 Listado de booleanos #
Puede utilizar el comando getsebool
o semanage
para mostrar los booleanos definidos actualmente. Para mostrar todos los booleanos definidos actualmente, junto con su estado, ejecute el siguiente comando:
#
getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...
Para obtener más detalles sobre booleanos concretos, puede utilizar el comando semanage
de la siguiente manera:
#
semanage boolean -l
SELinux boolean State Default Description
abrt_anon_write (off , off) Allow abrt to anon write
abrt_handle_event (off , off) Allow abrt to handle event
abrt_upload_watch_anon_write (on , on) Allow abrt to upload watch anon write
Para obtener el estado de un booleano individual, puede utilizar el siguiente comando:
#
getseboolBOOLEAN_NAME
Como alternativa, puede utilizar el comando grep
en la resultado de semanage boolean
:
#
semanage boolean -l | grepBOOLEAN_NAME
6.1.2 Alternar booleanos #
Los comandos setsebool
y semanage
se pueden utilizar para alternar el valor de los booleanos. Puede cambiar el estado del booleano de forma permanente o temporal hasta que finalice la sesión. Para cambiar un valor de booleano temporalmente, ejecute el siguiente comando:
#
setseboolBOOLEAN_NAMEBOOLEAN_VALUE
Donde BOOLEAN_VALUE es on
o off
.
Para cambiar un valor de booleano de forma permanente, ejecute uno de los dos comandos siguientes:
#
setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE
También puede utilizar el comando semanage
:
#
semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME
Donde BOOLEAN_VALUE es on
o off
.
Un solo booleano puede habilitar o inhabilitar varias reglas de directiva. Para ver qué reglas de directiva están habilitadas o inhabilitadas por qué booleanos, utilice la herramienta sedispol
, que puede analizar el archivo de directiva:
#
sedispol /etc/selinux/targeted/policy/policy.32
Dado que las reglas de directiva suelen ser enormes, se recomienda configurar un archivo de salida seleccionando f
y especificando un nombre de archivo. Después de especificar el nombre del archivo, pulse 6
. A continuación, puede inspeccionar el archivo.
7 Herramientas para gestionar SELinux #
SLE Micro proporciona herramientas para gestionar SELinux en el sistema. Si las herramientas descritas a continuación no están instaladas en su sistema, instálelas ejecutando:
#
transactional-update pkg install policycoreutils-python-utils
Después de una instalación correcta, rearranque el sistema.
7.1 Uso de la opción Z
#
Si SELinux está instalado y configurado, puede utilizar -Z
para los comandos normales como ls
, id
o ps
. Con esta opción, puede mostrar el contexto de seguridad de los archivos o procesos. Por ejemplo, con el comando ls
:
>
ls -Z /etc/shadow
system_u:object_r:shadow_t:s0 /etc/shadow
7.2 El comando chcon
#
El nombre del comando chcon
significa "cambiar contexto". El comando puede cambiar el contexto de seguridad completo de un archivo al valor proporcionado en la interfaz de línea de comandos, o puede cambiar partes del contexto. Como alternativa, puede proporcionar un archivo que sirva de referencia.
Para cambiar el contexto de seguridad completo de un archivo, la sintaxis del comando es la siguiente:
#
chconSECURITY_CONTEXTFILENAME
Donde:
SECURITY_CONTEXT tiene el formato: SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Por ejemplo, el contexto podría ser: system_u:object_r:httpd_config_t:s0.
FILENAME es una vía al archivo cuyo contexto se debe cambiar.
Para definir un contexto de seguridad según un archivo proporcionado que sirva de referencia, ejecute chcon
de la siguiente forma:
#
chcon --reference=REFERENCE_FILEFILENAME
Donde:
REFERENCE_FILE es una vía a un archivo que debe utilizarse como referencia.
FILENAME es una vía al archivo cuyo contexto se debe cambiar.
Como alternativa, puede cambiar solo una parte del contexto de seguridad. La sintaxis general del comando chcon
es la siguiente:
#
chconCONTEXT_OPTIONCONTEXT_PARTFILENAME
Las opciones y los argumentos tienen el siguiente significado:
Dependiendo de la parte de contexto, CONTEXT_OPTION puede ser cualquiera de los siguientes:
-u
resp--user
Indica que se cambiará un contexto de usuario de SELinux en el archivo proporcionado:
#
chcon -u system_u logind.conf-r
resp--role
Solo se cambiará la parte de la función en el contexto del archivo proporcionado:
#
chcon -r object_r logind.conf-t
resp--type
Solo se cambiará la parte del tipo en el contexto del archivo proporcionado:
#
chcon -t etc_t logind.conf-l
resp--range
Solo se cambiará la parte del rango en el contexto de seguridad:
#
chcon -l s0 logind.conf
CONTEXT_PART es el valor concreto del contexto de seguridad que se va a definir.
FILENAME es una vía al archivo cuyo contexto se va a cambiar.
chcon
en enlaces simbólicos
Por defecto, cuando se cambia el contexto de seguridad en un enlace simbólico, se cambia el contexto del destino del enlace, pero no se cambia el contexto del enlace simbólico. Para forzar a que chcon
cambie el contexto del enlace simbólico y no del destino del enlace, utilice la opción --no-dereference
como se muestra a continuación:
#
chcon --no-dereference -u system_u -t etc_t network.conf
Puede cambiar el contexto de todos los archivos de un directorio mediante la opción recursiva:
#
chcon --recursive system_u:object_r:httpd_config_t:s0 conf.d
7.3 comandos getenforce
y setenforce
#
El comando getenforce
devuelve el modo de SELinux actual: Enforcing
, Permissive
o Disabled
.
#
getenforce
Permissive
El comando setenforce
cambia temporalmente el modo de SELinux a enforcing o permissive. No puede utilizar este comando para inhabilitar SELinux. Tenga en cuenta que el cambio solo se mantiene hasta el siguiente rearranque. Para cambiar el estado de forma permanente, siga la descripción de la Sección 3.1, “Cambio del modo de SELinux”.
#
setenforceMODE_ID
donde MODE_ID es 0 para el modo permissive
o 1 para el modo enforced
.
7.4 El guion fixfiles
#
El guion permite realizar las siguientes tareas con el contexto de seguridad:
Comprobar si el contexto es correcto
Cambiar las etiquetas de contexto de archivo incorrectas
Volver a etiquetar el sistema si ha añadido una directiva nueva
La sintaxis del guion es la siguiente:
#
fixfiles [OPTIONS] ARGUMENT
Donde:
OPTIONS puede ser lo siguiente:
-
-l
LOGFILE Guarda el resultado en el archivo proporcionado.
-
-o
OUTPUT_FILE Guarda en el archivo de resultado proporcionado los nombres de todos los archivos cuyo contexto de archivo difiere del valor por defecto.
-
-F
Fuerza un restablecimiento del contexto.
-
ARGUMENT puede ser algo de lo siguiente:
-
check
Muestra el contexto de archivo anterior y actual para una etiqueta incorrecta sin realizar ningún cambio
-
relabel
Vuelve a etiquetar los contextos de archivo incorrectos de acuerdo con la directiva cargada actualmente
-
restore
Restaura los contextos de archivo incorrectos a los valores por defecto
-
verify
Muestra todos los archivos con etiquetas de contexto de archivo incorrectas sin realizar ningún cambio
-
7.5 El comando semanage
#
El comando semanage
se puede utilizar para configurar partes de la directiva sin necesidad de volver a compilar la directiva desde los orígenes. El comando permite realizar las siguientes tareas:
Gestionar booleanos mediante el argumento
boolean
. Para obtener detalles sobre los booleanos, consulte la Sección 6.1, “Uso de booleanos”.Ajustar el contexto de los archivos mediante el argumento
fcontext
.Gestionar asignaciones de usuarios mediante el argumento
login
.Gestionar usuarios de SELinux mediante el argumento
user
.Gestionar módulos de directivas de SELinux mediante el argumento
module
.
La sintaxis general del comando es la siguiente:
#
semanageARGUMENTOPTIONS [OBJECT_NAME]
Donde:
ARGUMENT es uno de estos valores:
login
,user
,fcontext
,boolean
,module
.OPTIONS depende del valor de ARGUMENT proporcionado. Las opciones comunes se explican en Opciones comunes.
OBJECT_NAME, dependiendo del valor proporcionado en ARGUMENT, puede ser un nombre de inicio de sesión, un nombre de módulo, un nombre de archivo o un usuario de SELinux.
-a
,--add
Añade un objeto proporcionado.
-h
,--help
Imprime el comando help.
- --extract
Muestra los comandos que se han utilizado para cambiar el sistema (booleanos, contexto de archivo, etc.).
-l
,--list
Muestra todos los objetos.
-m
,--modify
Modifica el objeto proporcionado.
-n
,--noheading
Modifica el resultado de la operación de listado omitiendo los encabezados.
-s
,--seuser
Especifica el usuario de SELinux.
Otras opciones son específicas de comandos semanage
concretos y se describen en las secciones correspondientes.
7.5.1 El comando semanage fcontext
#
Con el comando semanage fcontext
, puede realizar las siguientes tareas:
Consultar definiciones de contexto de archivo
Añadir contextos en archivos
Añadir sus propias reglas
Los cambios realizados en el contexto de archivo mediante el comando semanage
fcontext
no requieren modificaciones ni que se recompile la directiva.
Además de las opciones comunes descritas en Opciones comunes, el comando semanage
fcontext
admite las siguientes opciones:
-e
,--equal
Permite utilizar el contexto de la vía proporcionada para etiquetar archivos en un directorio diferente (la vía de destino proporcionada). Por ejemplo, desea asignar el mismo contexto que tiene
/home
a un directorio personal/export/home
alternativo. Si utiliza esta opción, debe proporcionar la vía de origen y la vía de destino:#
semanage fcontext -a -e /home /export/home-f
,--ftype
Especifique un tipo de archivo. Use uno de los valores siguientes:
a
: todos los archivos, que también es el valor por defectob
: un dispositivo de bloquesc
: un dispositivo de caracteresd
: un directoriof
: archivos normalesl
: un enlace simbólicop
: una canalización con nombres
: un socket
7.5.2 El comando semanage login
#
semanage login
permite realizar las siguientes tareas:
Asignar usuarios de Linux a un usuario de SELinux concreto. Por ejemplo, para asignar el usuario de Linux tux en
sysadm_u
, ejecute el comando:#
semanage login -a -s sysadm_u tux
Asignar un grupo de usuarios de Linux a un usuario de SELinux concreto. Por ejemplo, para asignar usuarios del grupo writers en
user_u
, ejecute el comando:#
semanage login -a -s user_u %writers
El grupo aparece en el resultado de
semanage login -l
con el prefijo %.Tenga en cuenta que el grupo de usuarios debe ser el principal, ya que la asignación de usuarios de SELinux a grupos complementarios puede provocar asignaciones incompatibles.
#
semanage login -m -s staff_u %writers
Asignar usuarios de Linux en un rango de seguridad SELinux MLS/MCS concreto.
Modificar la asignación ya creada. Para ello, basta con sustituir la opción
-a
por-m
en los comandos anteriores.Definir el usuario de SELinux por defecto para los nuevos usuarios de Linux. El usuario habitual de SELinux por defecto es
unconfined_u
. Para cambiar el valor astaff_u
, ejecute el comando:#
semanage login -m -s staff_u __default__
7.5.3 El comando semanage boolean
#
El comando semanage boolean
se utiliza para controlar booleanos en la directiva de SELinux.
La sinopsis del comando tiene el siguiente aspecto:
semanage boolean [-h] [-n] [ --extract | --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]
Además de las opciones comunes, puede utilizar las siguientes opciones específicas para el comando semanage boolean
:
- --list -C
Para mostrar una lista de modificaciones locales de booleanos.
- -m --on | -1
Para activar el booleano proporcionado.
- -m --off | -0
Para desactivar el booleano proporcionado.
- -D, --deleteall
Para eliminar todas las modificaciones locales de booleanos.
El uso más común del comando es activar o desactivar un booleano concreto. Por ejemplo, para activar el booleano authlogin_yubikey
, ejecute:
#
semanage boolean -m on authlogin_yubikey
7.5.4 El comando semanage user
#
El comando semanage user
controla la asignación entre el usuario de SELinux y las funciones y los niveles de MLS/MCS.
Además de las opciones comunes descritas en Opciones comunes, el comando semanage
use
admite las siguientes opciones:
- -R [FUNCIONES], --roles [FUNCIONES]
Una lista de funciones de SELinux. Puede encerrar varias funciones entre comillas dobles y separarlas con espacios, o puede utilizar
-R
varias veces.
Con este comando, puede realizar las siguientes tareas:
Mostrar la asignación de usuarios de SELinux en funciones ejecutando:
#
semanage user -l
Cambiar las funciones asignadas al usuario de SELinux
user_u
.#
semanage user -m -R "system_r unconfined_r user_r"
Asignar a
admin_u
la funciónstaff_r
y una categorías0
:#
semanage user -a -R "staff_r -r s0 admin_u
Crear un nuevo usuario de SELinux, por ejemplo,
admin_u
con la funciónstaff_r
. También es necesario definir el prefijo de etiquetado para este usuario mediante-P
:#
semanage user -a -R "staff_r" -P admin admin_u
7.5.5 El comando semanage module
#
El comando semanage module
puede instalar, eliminar, inhabilitar o habilitar módulos de directivas de SELinux.
Además de las opciones comunes descritas en Opciones comunes, el comando semanage
fcontext
admite las siguientes opciones:
-d
,--disable
Para inhabilitar el módulo de directivas de SELinux proporcionado:
#
semanage module --disable MODULE_NAME
-e
,--enable
Para habilitar el módulo de directivas de SELinux proporcionado:
#
semanage module --enable MODULE_NAME
7.6 El comando sestatus
#
sestatus
obtiene el estado de un sistema en el que se ejecuta SELinux.
La sintaxis genérica del comando tiene este aspecto:
sestatus [OPTION]
Cuando se ejecuta sin opciones ni argumentos, el comando genera la siguiente información:
#
sestatus
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested (insecure) Max kernel policy version: 33
El comando puede tener las siguientes opciones:
- -b
Muestra el estado de los booleanos en el sistema.
- -v
Muestra el contexto de seguridad de los archivos y procesos mostrados en el archivo
/etc/sestatus.conf
.
8 Información legal #
Copyright © 2006 –2024 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.