Deshabilitar selinux centos 7. Configurar SELinux, habilitarlo, deshabilitarlo. Cuarto método para deshabilitar SELinux en CentOS. De una vez por todas

Lo cual proporciona un mecanismo para soportar políticas de seguridad de control de acceso. SELinux a veces puede interponerse en su camino. Por lo tanto es necesario desactivar-desactivar SELinux . Sin embargo, antes de apagar/desactivar SELinux, asegúrese de tener una buena razón para hacerlo.

Cómo deshabilitar/desactivar temporalmente SELinux

Paso 1: En primer lugar, verifique el estado actual de SELinux usando el siguiente comando:

# getenforce haciendo cumplir #

Usando un método diferente con un comando que resulta en lo mismo:

# sestatus Estado de SELinux: habilitado Montaje SELinuxfs: /selinux Modo actual: aplicando Modo desde el archivo de configuración: aplicando Versión de política: 24 Política desde el archivo de configuración: objetivo #

Paso 2: Para desactivar/desactivar temporalmente SELinux , utilice el siguiente método:

# eco 0 > /selinux/enforce

Otro método

#setenforce 0

Lo más probable es que puedas configurarlo en modo permisivo. Como resultado, SELinux emitirá mensajes de advertencia en lugar de ejecutarlo. Para hacer lo mismo, use el siguiente comando:

# setenforce permisivo

En primer lugar, el método descrito funciona hasta que reinicia. Como resultado, funcionará hasta el próximo reinicio. Además, si quieres hacer esto en base permanente durante el reinicio, siga el procedimiento a continuación.

Cómo deshabilitar-deshabilitar SELinux permanentemente

Para deshabilitarlo permanentemente, cambie el valor de “ SELinux" en " desactivado" en archivo " /etc/sysconfig/SELinux"Como se muestra abajo

Finalmente vuelva a verificar con el siguiente comando:

# sestatus Estado de SELinux: deshabilitado

SELinux (Security-Enhanced Linux - Linux con seguridad mejorada) es una implementación de un sistema de control de acceso forzado que puede funcionar en paralelo con un sistema de control de acceso discrecional clásico. Incluido en el kernel estándar de Linux. Además, para que SELinux funcione, se requieren versiones modificadas de algunas utilidades (ps, ls, etc.), que brindan soporte para nuevas funciones del kernel y soporte del sistema de archivos.

Método 1: deshabilitar temporalmente SELinux

Para deshabilitar temporalmente SELinux, puede modificar el archivo /selinux/enforce. Tenga en cuenta que esta es una desactivación temporal y una vez que se reinicie el sistema, SELinux funcionará nuevamente.

# gato /selinux/enforce 1 # eco 0 > /selinux/enforce# cat /selinux/enforce 0 También puede utilizar el comando setenforce, como se muestra en el siguiente ejemplo. Las opciones posibles para el comando setenforce son: Enforcing, Permissive, 1 (habilitar) o 0 (deshabilitar).
#setenforce 0

Método 2: deshabilitar permanentemente SELinux

Para deshabilitar SELinux permanentemente, edite el archivo /etc/selinux/config y configure SELINUX=disabled como se muestra a continuación. Después de esto, reinicie el servidor.

# gato /etc/selinux/config SELINUX=deshabilitado SELINUXTYPE=dirigido SETLOCALDEFS=0

Método 3: deshabilitar SELinux en Grub Bootloader

El tercer método utiliza el cargador de arranque GRUB para deshabilitar SELinux. Agregar al final de la línea selinux=0

# gato /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz título del menú oculto Enterprise Linux Enterprise Servidor Linux(2.6.18-92.el5PAE) raíz (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ rhgb quiet selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img título Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) raíz (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb silencioso selinux=0 initrd /boot/initrd-2.6.18-92.el5.img

Método 4: Deshabilite SELinux solo para ciertos servicios - HTTP/Apache

Si no necesita deshabilitar SELinux por completo, sino solo para ciertos servicios, tiene esta opción. Por ejemplo, deshabilitemos SELinux para HTTP/Apache cambiando el valor de la variable httpd_disable_trans en archivo /etc/selinux/targeted/booleanos.

# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1 Configure la variable también usando el comando setsebool. Después de esto, reinicie httpd para que los cambios surtan efecto.

# setsebool httpd_disable_trans 1# reinicio del servicio httpd

Hola a todos, hablemos un poco de SELinux, pero antes una pequeña definición para los que no han escuchado qué es. SELinux es una abreviatura de inglés. las palabras Security-Enhanced Linux que significa Linux con seguridad mejorada. Es decir, se trata de la implementación de un sistema de control de acceso forzado, que es capaz de funcionar en paralelo con el clásico sistema de control de acceso selectivo. La diferencia es que en SELinux, a través de ciertas políticas, los derechos de acceso los determina el propio sistema, a su vez, el sistema de control de acceso selectivo divide el acceso del proceso a los recursos en función de los derechos del usuario, para una simple comprensión estos son derechos rwx en tres niveles: propietario , grupo propietario y otros usuarios.
Después de una pequeña descripción, intentemos ver algunos comandos y opciones de SELinux. Nuestros ejemplos se demostrarán en el quirófano. sistema linux CentOS 6. Quizás el primero y probablemente el más popular sean los comandos para verificar el estado de SELinux.

/usr/sbin/getenforce

/usr/sbin/sestatus

Valores de retorno para el comando getenforce
hacer cumplir– indica que SELinux está activado y se aplican reglas de políticas;
Permisivo– indica que SELinux está activado, pero las reglas de política no se aplican y solo se utilizan reglas DAC;
Desactivado– indica que SELinux está deshabilitado.

Valores de retorno para el comando sestatus
Este comando devuelve, además del estado de SELinux, la política de SELinux utilizada, ejemplo:

$ /usr/sbin/sestatus Estado de SELinux: habilitado Montaje SELinuxfs: /selinux Modo actual: imponiendo Modo desde el archivo de configuración: imponiendo Versión de política: 23 Política desde el archivo de configuración: dirigida

Estado de SELinux: habilitado: significa que SELinux está habilitado;
Modo actual: hacer cumplir: significa que SELinux está habilitado en modo forzado;
Política del archivo de configuración: dirigida: indica que se utiliza la política dirigida de SELinux.

Habilitando SELinux
Activar/desactivar SELinux en el sistema operativo en el archivo de configuración
/etc/selinux/config

# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores: # enforcing - Se aplica la política de seguridad de SELinux. # permisivo: SELinux imprime advertencias en lugar de aplicarlas. # deshabilitado: no se carga ninguna política SELinux. SELINUX=disabled # SELINUXTYPE= puede tomar uno de estos dos valores: # target: los procesos específicos están protegidos, # mls: protección de seguridad multinivel. SELINUXTYPE=dirigido

La opción SELINUX=disabled significa que SELinux está deshabilitado. Antes de iniciar SELinux, debe realizar algunas manipulaciones.
1. Verifique la instalación de los paquetes SELinux

Rpm-qa | grep selinux rpm -q Policycoreutils rpm -qa | grep solucionar problemas

También asegúrese de que estén instalados los siguientes paquetes: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, Policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Paquetes Policycoreutils-gui, setroubleshoot, selinux-policy-devel, Y mctrans opcional.
Los paquetes faltantes se pueden instalar usando el comando (como root)

Nombre del paquete de instalación de Yum

2. Cada archivo del sistema de archivos debe marcarse con un contexto SELinux antes de ejecutarse. Hasta este punto, a los dominios restringidos se les puede negar el acceso, lo que puede provocar que el sistema operativo no se cargue correctamente. La situación se puede corregir configurando la opción SELINUX=permissive en el archivo de configuración /etc/selinux/config.

3. El marcado de archivos se producirá durante el próximo reinicio del sistema. Las etiquetas para todos los archivos se configuran en el contexto SELinux durante el proceso. En la última línea, cada carácter * representa 1000 archivos etiquetados. La duración del proceso depende de la cantidad de archivos en el sistema, así como de la velocidad de los discos.

*** Advertencia: se requiere volver a etiquetar la política específica de SELinux. *** El cambio de etiquetado puede llevar mucho tiempo, dependiendo del tamaño del sistema de archivos *** y de la velocidad de los discos duros. ****

4. En el caso de que la política SELinux no se asigne de forma forzada y el trabajo se realice en modo de expansión, las prohibiciones se escriben en el registro como acciones que estarían prohibidas en modo forzado. Asegúrese de que SELinux no prohíba acciones durante el último inicio del sistema, para ello ejecute el comando

Grep "SELinux está impidiendo" /var/log/messages

La salida debe estar vacía, lo que significa que todo está bien y SELinux no prohíbe la acción.
5. Después de estar seguro de que no hay mensajes sobre prohibiciones en los registros, configure el parámetro SELINUX en enforcing (archivo /etc/selinux/config):

# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores: # enforcing - Se aplica la política de seguridad de SELinux. # permisivo: SELinux imprime advertencias en lugar de aplicarlas. # deshabilitado: no se carga ninguna política SELinux. SELINUX=enforcing # SELINUXTYPE= puede tomar uno de estos dos valores: # segmentado: los procesos específicos están protegidos, # mls: protección de seguridad multinivel. SELINUXTYPE=dirigido

6. Después de esto Sistema operativo debe reiniciarse. Después del reinicio, debe verificar el valor de retorno de Enforcing con el comando getenforce.

$ /usr/sbin/getenforce Aplicación

7. Para ver las asignaciones entre SELinux y los usuarios del sistema, ejecute el comando

/usr/sbin/semanage iniciar sesión –l

La salida del comando debería ser así:

Nombre de inicio de sesión SELinux Usuario MLS/MCS Rango __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023

Hay algunas características que también conviene tener en cuenta. Cuando SELinux está deshabilitado, los archivos creados por el usuario no se marcan y, como resultado, pueden ocurrir problemas al ponerlos en estado obligatorio. Los archivos se marcarán cambiando la opción de modo deshabilitado a modo permisivo/aplicativo, evitando así el problema de que aparezcan archivos sin marcar.

Ya hemos escrito sobre SELinux en Habré, sin embargo, no se han publicado muchos manuales detallados sobre este sistema. Hoy publicamos un manual tan detallado sobre SELinux, que comienza con información sobre el sistema y termina con una configuración flexible de políticas.
Para no convertir el post en una “hoja” difícil de entender, decidimos dividir el manual en dos partes. El primero hablará sobre el sistema en sí y algunas de sus características. El segundo tiene que ver con el establecimiento de políticas. Ahora estamos publicando la primera parte, la segunda parte se publicará un poco más tarde.

1. Introducción

SELinux (SELinux) es un sistema de control de acceso forzado implementado a nivel de kernel. Este sistema apareció por primera vez en la cuarta versión de CentOS, y en las versiones 5 y 6 la implementación se complementó y mejoró significativamente. Estas mejoras han permitido a SELinux convertirse en un sistema universal capaz de resolver eficazmente muchos de los problemas actuales. Vale la pena recordar que primero se aplica el sistema de derechos clásico de Unix y el control pasará a SELinux solo si esta verificación inicial tiene éxito.

1.1 Algunos problemas actuales.

Para comprender el valor práctico de SELinux, veamos algunos ejemplos en los que un sistema de control de acceso estándar no es suficiente. Si SELinux está deshabilitado, entonces solo tendrá acceso al control de acceso discrecional clásico, que incluye DAC (control de acceso discrecional) o ACL (listas de control de acceso). Eso es estamos hablando acerca de sobre la manipulación de derechos de escritura, lectura y ejecución a nivel de usuarios y grupos de usuarios, que en algunos casos pueden ser completamente insuficientes. Por ejemplo:

- El administrador no puede controlar completamente las acciones del usuario. Por ejemplo, es perfectamente posible que un usuario otorgue a todos los demás derechos de lectura sobre sus propios archivos confidenciales, como las claves SSH.

Los procesos pueden cambiar la configuración de seguridad. Por ejemplo, los archivos que contienen el correo de un usuario solo deben ser legibles por un usuario específico, pero el cliente de correo puede cambiar los derechos de acceso para que estos archivos sean legibles por todos.

Los procesos heredan los derechos del usuario que los inició. Por ejemplo, una versión infectada por un troyano Navegador Firefox es capaz de leer las claves SSH del usuario, aunque no tiene ningún motivo para hacerlo.

Básicamente, en el modelo tradicional de control de acceso selectivo (DAC), sólo dos niveles de acceso están bien implementados: usuario y superusuario. No método sencillo, lo que permitiría a cada usuario tener los privilegios mínimos requeridos.
Por supuesto, existen muchos métodos para solucionar estos problemas dentro del modelo de seguridad clásico, pero ninguno de ellos es universal.

1.1.1 Términos básicos utilizados en SELinux:

Dominio- una lista de acciones que un proceso puede realizar. Normalmente, un dominio se define como el conjunto mínimo posible de acciones mediante las cuales puede funcionar un proceso. De esta forma, si el proceso queda desacreditado, el atacante no podrá hacer mucho daño.

Role- una lista de dominios que se pueden aplicar. Si un determinado dominio no está en la lista de dominios para una función, entonces no se pueden aplicar acciones de ese dominio.

Tipo- un conjunto de acciones permitidas en relación con un objeto. Un tipo se diferencia de un dominio en que se puede aplicar a canalizaciones, directorios y archivos, mientras que un dominio se aplica a procesos.

Contexto de seguridad- todos los atributos de SELinux: roles, tipos y dominios.

1.2 Resolver los problemas del modelo de seguridad tradicional.

SELinux sigue el modelo de privilegios mínimos requeridos para cada servicio, usuario y programa de manera mucho más estricta. De forma predeterminada, se establece el "modo prohibitivo", cuando cada elemento del sistema tiene solo aquellos derechos que son vitales para su funcionamiento. Si un usuario, programa o servicio intenta cambiar un archivo o acceder a un recurso que no es claramente necesario para resolverlo, simplemente se le negará el acceso y dicho intento se registrará.

SELinux se implementa a nivel de kernel, por lo que es posible que las aplicaciones no sepan nada sobre la versión de este sistema de control de acceso forzado, las características de su funcionamiento, etc. Si se configura correctamente, SELinux no afectará la operación de ninguna manera programas de terceros y servicios. Aunque, si la aplicación es capaz de interceptar mensajes de error de este sistema de control de acceso, la facilidad de uso de la aplicación aumenta significativamente. De hecho, si se intenta acceder a un recurso o archivo protegido, SELinux envía un error de la familia "acceso denegado" a la aplicación principal. Pero pocas aplicaciones utilizan códigos de retorno de llamadas al sistema obtenidos de SELinux.

A continuación se muestran algunos ejemplos del uso de SELinux para mostrar cómo puede mejorar la seguridad de todo su sistema.

- Crear y configurar una lista de programas que pueden leer claves ssh.

Evitar el acceso no autorizado a los datos a través de un cliente de correo.

Configurar el navegador para que pueda leer solo los archivos y carpetas necesarios para funcionar en la carpeta de inicio del usuario.

2. Modos de funcionamiento de SELinux

SELinux tiene tres modos de operación principales, con el modo Enforcing configurado de forma predeterminada. Este es un modo bastante estricto y, si es necesario, se puede cambiar a algo más conveniente para el usuario final.

hacer cumplir: Modo por defecto. Cuando se selecciona este modo, todas las acciones que de alguna manera violen la política de seguridad actual se bloquearán y el intento de violación se registrará en el registro.

Permisivo: Al utilizar este modo, la información sobre todas las acciones que violan la política de seguridad actual se registrará en el registro, pero las acciones en sí no se bloquearán.

Desactivado: Desactivación completa del sistema de control de acceso forzado.

Puede ver el modo actual y otras configuraciones de SELinux (y, si es necesario, cambiarlas) usando una herramienta GUI especial disponible en el menú Administración (system-config-selinux). Si está acostumbrado a trabajar en la consola, puede ver el estado actual con el comando sestatus.

# sestatus Estado de SELinux: habilitado Montaje SELinuxfs: /selinux Modo actual: aplicando Modo desde el archivo de configuración: aplicando Versión de política: 21 Política desde el archivo de configuración: dirigida

También puede conocer el estado de SELinux utilizando el comando getenforce.
El comando "setenforce" le permite cambiar rápidamente entre los modos Enforcing y Permissive, los cambios surten efecto sin reiniciar. Pero si habilita o deshabilita SELinux, es necesario reiniciar porque necesita reinstalar las etiquetas de seguridad en el sistema de archivos.
Para seleccionar el modo predeterminado que se aplicará cada vez que se inicie el sistema, establezca el valor de la línea "SELINUX=" en el archivo /etc/selinux/config, especificando uno de los modos: "enforcing", "permissive" o " desactivado" . Por ejemplo: "SELINUX=permisivo".

3. Políticas de SELinux

Como se señaló anteriormente, SELinux opera de forma predeterminada en modo Enforcing, cuando cualquier acción distinta a las permitidas se bloquea automáticamente, cada programa, usuario o servicio tiene solo los privilegios que necesita para funcionar, pero nada más. Se trata de una política bastante dura que tiene ambas ventajas: el nivel más alto seguridad de información y desventajas: configurar el sistema en este modo está asociado con grandes costos laborales para los administradores del sistema; además, existe un alto riesgo de que los usuarios enfrenten restricciones de acceso si desean utilizar el sistema de una manera no trivial. Este enfoque es aceptable en el sector empresarial, pero inaceptable en las computadoras de los usuarios finales. Muchos administradores simplemente desactivan SELinux en sus estaciones de trabajo para evitar este tipo de problemas.

Para evitar esto, por aplicaciones clave y servicios, como, por ejemplo, httpd, nombrado, dhcpd, mysqld, se definen políticas de destino preconfiguradas que no permitirán que un atacante obtenga acceso a datos importantes. Aquellas aplicaciones para las cuales la política no está definida se ejecutan en el dominio unconfined_t y no están protegidas por SELinux. Por lo tanto, las políticas de destino seleccionadas correctamente le permiten alcanzar un nivel aceptable de seguridad sin crear problemas innecesarios para el usuario.

4. Control de acceso en SELinux

SELinux proporciona los siguientes modelos de control de acceso:

Aplicación de tipos (TE): el mecanismo de control de acceso principal utilizado en las políticas de destino. Le permite administrar los permisos en detalle, en el nivel más bajo. El más flexible, pero también el que requiere más mano de obra para administrador de sistema mecanismo.

Control de acceso basado en roles (RBAC): en este modelo, los derechos de acceso se implementan como roles. Un rol es el permiso para realizar ciertas acciones por parte de uno o más elementos del sistema sobre otras partes del sistema. En esencia, RBAC es un desarrollo posterior de TE.

Seguridad multinivel (MLS): un modelo de seguridad multinivel en el que a todos los objetos del sistema se les asigna un cierto nivel de acceso. El permiso o la denegación de acceso está determinado únicamente por la relación entre estos niveles.

Todos los procesos y archivos dentro de SELinux tienen un contexto de seguridad.
Veamos el contexto en la práctica observando más de cerca pagina de inicio Servidor web Apache ubicado en /var/www/html/index.html

$ ls -Z /var/www/html/index.html -rw-r--r-- nombre de usuario nombre de usuario system_u:object_r:httpd_sys_content_t /var/www/html/index.html

Además de los permisos de archivo estándar, podemos ver el contexto de seguridad de SELinux: system_u: object_r: httpd_sys_content_t.

El contexto se basa en usuario: rol: tipo: mls, pero los campos usuario: rol: tipo se muestran mientras el campo mls está oculto. También podemos ver la política de destino, en este caso httpd_sys_content_t.

Ahora veamos el contexto de seguridad de SELinux para el proceso "httpd" (servidor web Apache):

$ps axZ | grep httpd system_u:system_r:httpd_t 3234? SS 0:00 /usr/sbin/httpd

Como podemos ver, este proceso se ejecuta en el dominio httpd_t.

Bueno, ahora veamos el contexto de seguridad de un archivo en nuestro directorio de inicio:

$ ls -Z /home/username/myfile.txt -rw-r--r-- nombre de usuario nombre de usuario user_u:object_r:user_home_t /home/username/myfile.txt

Vemos que el archivo es del tipo user_home_t, este tipo se asigna por defecto a todos los archivos en el directorio de inicio.
El acceso sólo está permitido entre elementos del mismo tipo, por lo que el servidor web Apache puede leer fácilmente el archivo /var/www/html/index.html, que es de tipo httpd_sys_content_t. Al mismo tiempo, dado que Apache se ejecuta en el dominio httpd_t y no tiene los campos de ID de usuario:nombre de usuario completos, no puede acceder al archivo home/nombredeusuario/miarchivo.txt, aunque este archivo es legible por procesos que no tienen un política de destino definida. De esta forma, si el servidor web Apache se ve comprometido, el atacante no podrá acceder a archivos ni ejecutar procesos que no estén en el dominio httpd_t.

5. Solución de problemas de SELinux

Tarde o temprano, ocurre una situación en la que SELinux le niega el acceso a algo. Hay varias razones principales para la denegación de acceso:

Archivo mal etiquetado.
- El proceso se está ejecutando en el contexto incorrecto.
- Error en la política. El proceso requiere acceso a un archivo que no se tuvo en cuenta al crear la política.
- Intento de invasión.

Los tres primeros motivos de denegación de acceso se resuelven con bastante facilidad, mientras que durante un intento de intrusión suena una alarma y se envía la notificación correspondiente al usuario.
Para solucionar cualquier problema, basta con mirar el registro de SELinux. De forma predeterminada, el proceso auditado lo escribe en el archivo /var/log/audit/audit.log. Si este proceso no se está ejecutando, SELinux inicia sesión en el archivo /var/log/messages, en cuyo caso todos los mensajes del sistema de control de acceso se marcan con la clave AVC, lo que le permite filtrar rápidamente las líneas necesarias, por ejemplo. usando el comando grep.
EN Últimas Versiones distribuciones (a partir de CentOS 5), una utilidad con interfaz gráfica usuario, que le permite mostrar el registro de SELinux en una forma conveniente y fácil de usar. Puedes llamarlo desde la consola escribiendo sealert -b. La utilidad es parte del paquete setroubleshoot. Si el servidor X no se está ejecutando, puede generar informes legibles por humanos con el siguiente comando:

Sealert -a /var/log/audit/audit.log > /ruta/a/mylogfile.txt

5.1 Cambio de etiquetas de contexto de seguridad de archivos.

El comando "chcon" le permite cambiar el contexto SELinux de archivos o directorios exactamente de la misma manera que los comandos "chown" y "chmod" le permiten cambiar el propietario o los permisos de un archivo dentro sistema estándar control de acceso.

Veamos algunos ejemplos.
Supongamos que el servidor web Apache está instalado en el sistema y necesitamos cambiar la carpeta en la que se almacenan los sitios (por defecto es /var/www/html/) a, por ejemplo, /html/ y crear un índice. html en este directorio.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- raíz usuario_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x raíz raíz user_u:object_r:default_t html

Arriba vemos que tanto el directorio /html como el archivo /html/index.html dentro del contexto de seguridad son de tipo default_t. Esto significa que si iniciamos Apache e intentamos trabajar con este directorio o archivo, SELinux nos negará el acceso. Y esto será absolutamente correcto, porque el contexto de seguridad correcto para los archivos que interactúan con Apache es httpd_sys_content_t.
Cambiemos el contexto y comprobemos si todo se hace correctamente:

# chcon -v --type=httpd_sys_content_t /html el contexto de /html cambió a user_u:object_r:httpd_sys_content_t # chcon -v --type=httpd_sys_content_t /html/index.html el contexto de /html/index.html cambió a user_u:object_r :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- raíz usuario raíz_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x raíz usuario_u:object_r:httpd_sys_content_t html
No es necesario procesar manualmente cada archivo y cada directorio; simplemente puede usar la opción de recorrido de directorio recursivo -R:

# chcon -Rv --type=httpd_sys_content_t /html

Dichos cambios en el contexto de seguridad persistirán entre reinicios; sin embargo, si se cambian las etiquetas del sistema de archivos, los cambios se perderán. Durante el mantenimiento y la operación, esto no es infrecuente. La solución correcta en tal situación sería (después de realizar pruebas, por supuesto) crear una regla adicional y luego combinarla con las reglas locales. Por tanto, tendrá mayor prioridad que las normas básicas.

Para que SELinux funcione correctamente incluso después de cambiar las etiquetas del sistema de archivos, podemos usar ambas herramientas para administrar SELinux con una interfaz GUI y la utilidad de consola semanage:

Semana fcontext -a -t httpd_sys_content_t "/html(/.*)?"

En el ejemplo anterior, asignamos el contexto httpd_sys_content_t a todos los archivos ubicados en el directorio /html.

5.2 Restaurar el contexto de seguridad de SELinux.

El comando "restorecon" le permite cambiar el contexto de seguridad al que estaba asignado por defecto.
Nuevamente usamos el servidor web Apache como ejemplo. Supongamos que el usuario editó una copia del archivo index.html en su directorio de inicio y lo movió (con el comando mv) al directorio en el que se almacenan los sitios (/var/www/html).

Tenga en cuenta que al copiar (comando cp), el contexto de seguridad del archivo coincidirá con el contexto del directorio de destino, mientras que al moverlo, el contexto de seguridad coincidirá con el contexto de origen. Por supuesto, podríamos usar el comando chcon para cambiar el contexto de seguridad, pero como los archivos movidos ahora están en el directorio /var/www/html, podemos simplemente restaurar la configuración de contexto para todos los archivos ubicados en ese directorio.

Para restaurar el contexto solo para el archivo index.html, podemos usar el comando:

# restaurarcon -v /var/www/html/index.html

Si queremos recorrer recursivamente todo el directorio y cambiar el contexto de todos los archivos que contiene, usamos el siguiente comando:

# restaurarcon -Rv /var/www/html

5.3 Cambio de etiquetas para todo el sistema de archivos.

A veces es necesario restablecer las etiquetas de seguridad en todo el sistema de archivos. La mayoría de las veces, esta operación se realiza al volver a habilitar SELinux después de que el sistema ha estado apagado por algún tiempo. Esto también es necesario si cambiamos el tipo de gestión de políticas a estricto (en este caso, todos los procesos funcionan en sus propios dominios especiales; nadie puede trabajar en el dominio unconfined_t).

Para poder repartir automáticamente sistema de archivos la próxima vez que reinicie, ingrese los siguientes comandos:
# toque /.autorelabel # reinicie
A veces, la repartición automática no funciona (la mayoría de las veces en los casos en que se actualizó el kit de distribución con SELinux deshabilitado). En este caso, utilice el siguiente comando:

# genhomedircon # touch /.autorelabel # reiniciar

5.4 Proporcionar acceso a los puertos.

A menudo queremos que servicios como Apache puedan escuchar en puertos no estándar y aceptar conexiones entrantes en ellos. Las políticas básicas de SELinux permiten el acceso sólo a puertos predefinidos que están estrechamente asociados con un servicio en particular. Digamos que queremos que Apache escuche en el puerto 81. En este caso, necesitamos agregar una regla usando el comando semanage:

# puerto semanal -a -t http_port_t -p tcp 81

Se puede ver una lista completa de los puertos a los que SELinux proporciona acceso de la siguiente manera:

# puerto semanal -l

En la siguiente, segunda parte del manual, mostraremos la posibilidad de una configuración flexible de las políticas del sistema.

Linux con seguridad mejorada (SELinux) es un mecanismo de funciones en Linux que brinda soporte para políticas de seguridad de control de acceso.

SELinux puede crear reglas para acceder a usuarios o utilidades, lo que permite limitar algunas capacidades de acceso de las utilidades definiendo estas capacidades y su comportamiento en forma de reglas, y el sistema operativo que utiliza SELinux monitoreará el cumplimiento de estas reglas. En este tema te diré cómo deshabilitar o habilitar SELinux en CentOS. Algunas distribuciones tienen SELinux habilitado de forma predeterminada, lo que puede provocar algún comportamiento no deseado por su parte si no comprende cómo funciona SELinux o cómo configurarlo.

Para deshabilitar SELinux puede utilizar cualquiera de los 4 métodos diferentes mencionados en este artículo.

SELinux aplicará políticas de seguridad, incluidos controles de acceso obligatorios que se definen en el kernel de Linux. Cada archivo y proceso en el sistema estará etiquetado con accesos directos específicos que se utilizarán en SELinux. Puede usar el comando y ver estos accesos directos como se muestra a continuación:

# ls -Z /etc/

No es Lista llena que cité, puede que sea diferente para usted.

Primer método para deshabilitar SELinux en CentOS. Temporalmente.

Para deshabilitar SELinux temporalmente, necesita editar /selinux/enforce como se muestra a continuación. Tenga en cuenta que esta opción ya no estará presente después de reiniciar el sistema.

Entonces, veamos qué estado tiene SELinux en el servidor:

# gato /selinux/enforce 1

O puedes usar:

# /usr/sbin/sestatus Estado de SELinux: habilitado Montaje SELinuxfs: /selinux Modo actual: permisivo Modo desde el archivo de configuración: aplicando Versión de política: 24 Política desde el archivo de configuración: dirigida

Esto significa que está encendido. Para desactivarlo, utilice el siguiente comando:

# eco 0 > /selinux/enforce

Y comprobemos de nuevo:

# gato /selinux/enforce 0

Las posibles opciones para setenforce son:

  • 1 (habilitar).
  • 0 (deshabilitar).

También puede utilizar el comando setenforce como se muestra a continuación para desactivar SELinux. A continuación se muestra un ejemplo de este comando:

#setenforce 0

O proporcionaré otro caso de uso:

# setenforce permisivo

PD: Para comprobarlo, hay otro gran comando:

# getenforce permisivo

Segundo método para deshabilitar SELinux en CentOS. ¡De una vez por todas!

Comprobemos el estado de SELinux en CentOS.

# gato /etc/selinux/config

Lo tengo encendido, quiero apagarlo, entonces para hacer esto necesitas abrir la configuración y escribir:

# vim/etc/selinux/config

Necesito encontrar:

SELINUX=habilitado

Reemplazado por:

Como se muestra en la siguiente captura de pantalla:

Después de lo cual necesitamos reiniciar nuestro sistema operativo:

# reiniciar

3er método. Deshabilitar SELinux en el propio gestor de arranque Grub.

Si no puede encontrar /etc/selinux/config en su sistema, puede desactivar SELinux pasando un parámetro al cargador de arranque GRUB como se muestra a continuación.

# gato /boot/grub/grub.conf

Cuarto método. Deshabilitar solo un servicio específico en SELinux - HTTP/Apache

Si no está interesado en deshabilitar todo SELinux, también puede deshabilitar SELinux solo para un servicio específico. Por ejemplo, desea deshabilitar SELinux para servir HTTP/Apache, entonces necesita cambiar la variable httpd_disable_trans en /etc/selinux/targeted/booleans.




Arriba