Explicación de Selinux con ejemplos en un lenguaje simple

Esta lección explica en detalle los modos Selinux (deshabilitar, permisos y aplicados), el contexto de Selinux (usuario, rol, tipo y sensibilidad), selinux (MLS y objetivo) y comandos (setenforce, getenfor, chcon, semanage y conrera). Aprenda a ver, instalar y configurar Selinux en Linux paso a paso.

Selinux es la implementación de la seguridad, que aumenta la seguridad del sistema y en caso de violación de seguridad no permite que se extienda a todo el sistema. Antes de analizar Selinux en detalle, veamos un ejemplo para entender por qué necesitamos Selinux.

Supongamos que usamos un servidor web en el que se colocan varios sitios web. Para permitir el acceso a los sitios web, debemos abrir varios puertos en el firewall. Los piratas informáticos pueden usar estos puertos para piratear el sistema utilizando exploits de seguridad. Y si esto sucede, los piratas informáticos recibirán permiso para acceder al proceso del servidor web. Para servir a las páginas web, generalmente el proceso del servidor web tiene derecho a leer el documento en la raíz del documento y grabar /TMP y /VAR /TMP. Con la ayuda de estos derechos, los piratas informáticos pueden grabar scripts maliciosos en el catálogo /TMP, que se puede utilizar para piratear otros servicios disponibles en el servidor. Por lo tanto, un proceso infectado puede causar un gran daño a la seguridad de todos los servicios que trabajan en el servidor.

Si Selinux está activado, los piratas informáticos no podrán acceder a otros servicios disponibles en el servidor, y tampoco podrán grabar nada en el catálogo /TMP o /VAR /TMP.

La forma en que Selinux debería interactuar con Linux se determina en modo Selinux. Entonces, comencemos a estudiar Selinux con este tema básico.

Modos Selinux

Selinux opera en tres modos: deshabilitar, permisos y enformar. Selinux está completamente deshabilitado en el modo de apagado. Si Selinux está activado, estará en resolución o en modo de coerción. En resolución, Selinux solo monitoreará la interacción. Selinux filtrará la interacción, así como el monitoreo, en compulsión.

Considere un ejemplo. Supongamos que el usuario de FTP quiere acceder al catálogo de su casa. Por lo tanto, entra en la invitación del shell y realiza el siguiente comando

$ ftp linxuserver. com

El sistema LinuxServer ocurrirá de la siguiente manera: –

  • Syscall (llamada del sistema) se generará para el servidor FTP.
  • Si Selinux está deshabilitado, Syscall se procesará normalmente.
  • Si Selinux está activado, todo Syscall se procesará a través de él.
  • Selinux registrará syscall en el archivo /var/log/audit/audit. log.
  • Si el modo de resolución Selinux se instala en Permisive, SYSCall se procesará normalmente.
  • Si el valor de formación de información se establece para la habilitación de Selinux, SYSCALL se probará para el cumplimiento de los políticos de seguridad y solo se procesará si tiene la resolución necesaria.

El siguiente dibujo ilustra este proceso paso a paso

Modo SELinux

Para ver el estado actual (activado o deshabilitado) y el régimen actual (desconectado, permitido y por fuerza) Selinux podemos usar el comando sestatus

Comando SELinux sestatus

Como se puede ver en la salida anterior, Selinux se incluye y actualmente está trabajando en modo forzado. Eliminar los problemas de Selinux nos permite cambiar entre los permisos forzados y los permisos en la sesión actual. Por ejemplo, un usuario de FTP no puede acceder al catálogo de su hogar, y queremos saber si este problema está relacionado con Selinux o no. Para averiguar la respuesta, podemos cambiar Selinux a una resolución de Forced.

Si el usuario de FTP puede acceder al catálogo de inicio en modo permisivo, pero no forzado, entonces se puede suponer que Selinux bloquea el usuario FTP. Pero si el usuario de FTP no puede acceder al catálogo de inicio en modo permisivo, podemos estar seguros de que el problema no está relacionado con Selinux, ya que Selinux no bloquea nada en el modo de resolución.

Para cambiar entre modos permisivos y forzados, podemos usar el comando setenforce. El comando setenforce 0 se usa para transferir Selinux a los permisos, y el comando setenforce 1 para transferir Selinux a un modo forzado.

Transferimos a Selinux al modo permisivo

#Setenforce 0

Para confirmar el cambio, podemos volver a usar el comando sestatus o el comando getenforce (el equipo Getenforce muestra solo el nombre del modo actual).

#Sestatus #getenforce

Vamos a poner a Selinux nuevamente en modo de coerción

#setenforce 1

El siguiente dibujo paso a paso ilustra el proceso descrito anteriormente

Comando setenforce de SELinux

Selinux no nos permite cambiar entre el encendido (forzado o los permisos) y el apagado del modo en la sesión lanzada. Cambiar entre estos modos requiere una recarga del sistema. Los modos Selinux se almacenan en el archivo/etc/sysconfig/semolinux. Para cambiar entre los modos permitidos y prohibidos, necesitamos actualizar el valor predeterminado del modo Selinux en este archivo. Veamos este archivo.

Archivo en modo SELinux

Linux lee este archivo de configuración al comenzar a averiguar el modo Selinux predeterminado.

Si el valor se instala en formación o permisivo, Linux descargará las bibliotecas necesarias para Selinux.

Si el valor se establece en Disable, Linux no cargará ninguna biblioteca asociada con Selinux.

Por esta razón, no podemos cambiar entre cambiar y apagar en una sesión avanzada.

Para comprender esto más claramente, transfiramos Selinux a un modo deshabilitado.

Vaya al archivo/etc/sysconfig/seelinux y actualice el modo Selinux predeterminado, guarde el archivo y reinicie el sistema.

El siguiente dibujo ilustra este proceso paso a paso

cambiar el modo selinux

Después de reiniciar, asegúrese de que Selinux esté apagado.

#Getenforce discapacitado

Como dije, si el modo Selinux se establece en el valor deshabilitado, el proceso de descarga no cargará la biblioteca relacionada con Selinux, y sin las bibliotecas necesarias no podremos habilitar Selinux. Intentemos encenderlo.

habilitar Selinux

Como muestra la conclusión, no podemos cambiar del modo de desconexión al modo de conmutación en una sesión descuidada. Transferimos a Selinux a la coerción.

modo selinux forzado

Puntos clave
  • Selinux funciona en tres modos: desconectado, permitido y forzado.
  • En el modo de apagado, Selinux no interferirá en ninguna llamada del sistema.
  • En el modo permisivo, Selinux registrará cada llamada del sistema, pero no filtrará las solicitudes de acceso.
  • En el modo Selinux de aplicación, cada llamada del sistema se registrará y filtrará la FILMA utilizando políticas de seguridad configuradas. Sobre la base de la política de seguridad de Selinux, decide permitir una solicitud o prohibirla.
  • Los modos Selinux se almacenan en el archivo/etc/sysconfig/semolinux.
  • Por defecto, se establece un modo de ejecución obligatorio.
  • El proceso de carga de Linux verifica el modo Selinux de forma predeterminada desde el archivo/etc/sysconfig/selinux. Si el modo permisivo o de formación se establece de forma predeterminada, el proceso de descarga descargará las bibliotecas necesarias para Selinux. Si el modo predeterminado está instalado en DISPLE, el proceso de descarga omitirá todas las bibliotecas asociadas con Selinux.
  • Podemos cambiar entre un forzado y permisos en una sesión descuidada. El cambio entre modos permitidos (forzados y permisos) y desconectados requiere recargar el sistema.
  • Si Selinux está deshabilitado, nada pasará por Selinux. Si Selinux está activado, todo pasará por Selinux.

Política de Selinux

Al comienzo de este liderazgo, examinamos el proceso de trabajo del servidor web, donde dije: “Si Selinux está activado, los piratas informáticos no podrán acceder a otros servicios disponibles en el servidor, y tampoco podrán escribir nada En el catálogo o /var /tmp «.

¿Cómo protege Selinux el sistema de aplicaciones no autorizadas?

Selinux utiliza políticas para proteger el sistema. La política de Selinux es un conjunto de reglas que determinan a qué proceso puede acceder a qué archivos, catálogos y puertos pueden acceder. Usando este conjunto de reglas, la aplicación podrá acceder solo a ciertos tipos de archivos y procesos que necesita para funcionar, y nada superfluo.

¿Cómo descubre Selinux qué aplicación necesita ciertos tipos de archivos?

Las políticas de Selinux están escritas por solicitantes. Y los desarrolladores de aplicaciones saben qué hará exactamente su aplicación y qué tipos de archivos necesita trabajar. Por ejemplo, los desarrolladores de aplicaciones Apache (Linux Web Sever) saben qué tipos de archivos y qué permitidos para ellos son necesarios para que el servidor web Apache funcione. Por lo tanto, crearon las reglas necesarias para Apache Web Sever en Selinux. Por lo tanto, otros desarrolladores de aplicaciones también crearon las reglas necesarias para sus aplicaciones.

Selinux utiliza el contexto para determinar los recursos asociados con la aplicación o proceso.

El contexto es un conjunto de información de seguridad asignada a cada objeto (archivo, catálogo, aplicación, puerto, proceso, etc.) en el sistema de archivos Linux. Selinux utiliza el contexto para tomar decisiones de control de acceso.

Para ver el contexto del objeto, podemos usar el indicador Z en el comando de listado habitual. Considere algunos ejemplos.

Para ver el contexto de archivos y catálogos, podemos usar el indicador Z con el comando L S-L.

viendo el contexto de Selinux para un archivo

Para ver el contexto del puerto de red, podemos usar el indicador Z con el comando netsta t-tulpen.

ver el contexto del puerto en selinux

Para ver el contexto de un proceso descuidado, puede usar el indicador Z utilizando el comando PS aux

ver el contexto del proceso en selinux

Como se puede ver en las conclusiones anteriores, cada contexto siempre consta de cuatro partes: parte del usuario, parte del rol, parte del tipo y parte de la sensibilidad. Cada parte está separada por un colon (:). Analicemos estas partes en orden.

Parte del usuario

Ésta es la primera parte. En la marca contextual, termina en _U. En la marca contextual, es una cuenta de Selinux. Como sabemos, todos los usuarios, procesos o aplicaciones no necesitan el mismo nivel de derechos. Algunas cuentas requieren más derechos y otros menos. Selinux usa cuentas de usuario para controlar el nivel de permisos.

Puntos clave
  • Las cuentas de Selinux difieren de las cuentas de usuario de Linux.
  • A diferencia de las cuentas de usuarios de Linux, no podemos crear cuentas de usuarios de Selinux en la línea de comandos Shell usando comandos.
  • Los usuarios de Selinux se determinan en la política de Selinux y se cargan en la memoria al cargar.
  • Los usuarios de Selinux no tienen acceso al servidor.
  • Selinux utiliza cuentas de usuario para determinar varios niveles de permisos.
  • Cada cuenta de usuario de Linux se compara con la cuenta de usuario de Selinux. Selinux hace esta comparación en política.

Role

Esta es la segunda parte en el margen de seguridad. Termina con el símbolo _r. En la política de Selinux, el rol determina qué puede hacer el sujeto con el objeto en el dominio especificado.

  • Un sujeto es un usuario, un demonio o un proceso que obtiene acceso a un objeto.
  • Un objeto es un recurso (por ejemplo, un archivo, catálogo, proceso, hardware o aplicación de red) al que el sujeto obtiene acceso.
  • El dominio determina lo que puede hacer el sujeto y lo que no puede hacer. Es como una burbuja alrededor del tema.

Parte típica

Esta es la tercera parte en el contexto de la seguridad. Termina con un símbolo _t. Esta parte determina a qué tipo pertenece el objeto. Por ejemplo, el tipo de archivo determina el tipo de archivo, como el archivo de catálogo /etc., el archivo de la página web, el dispositivo de hardware o el archivo de red. Dado que el tipo es la única parte que se verifica en el examen RHCE, analizaremos esta parte en detalle por ejemplos (pronto en la sección práctica).

Sensibilidad parcial

Esta es la cuarta y última parte del contexto de la seguridad. Esta parte determina varios niveles de seguridad entre los niveles de C0 y C3. El nivel C3 se define como «Top Secret», y los niveles en este rango alcanzan C1023. Esta parte se usa solo si el tipo de política de Selinux se instala en el modo MLS. El modo MLS está diseñado para departamentos que requieren un nivel de seguridad muy alto, como el Departamento Militar, el Ministerio de Defensa, etc. Un modelo de seguridad tan delgado generalmente no se requiere en un servidor de datos regular. Para un servidor de datos convencional, el modo dirigido con funciones de bombeo apropiadas proporciona más que un nivel de seguridad suficiente.

Aquí nos enfrentamos a dos nuevas palabras: el régimen de política Selinux y Bolev.¿Así que qué es lo? Analizaremos los Bolevs en la próxima parte de este artículo. En esta lección, descubramos cuál es el régimen de política de Selinux.

Régimen de política de Selinux

Políticas de Selinux Control Selinux. Hay principalmente dos modos: MLS y Target. Ya hemos discutido el modo MLS. Ahora descubramos rápidamente el modo de destino.

El régimen objetivo es el modo predeterminado en RHEL. En este modo, Selinux solo está dirigido al proceso seleccionado. Los procesos seleccionados se lanzan en dominios limitados. El resto de los procesos funcionan en un dominio ilimitado. Por ejemplo, el proceso HTTPD es un ejemplo del proceso de destino, y el usuario que ingresó al sistema es un ejemplo de un proceso ilimitado.

Las políticas de Selinux también están controladas por el mismo archivo que controla Selinux.

tipo de política selinux

Si no tiene requisitos especiales, no cambie el régimen de política de Selinux. Especialmente si se está preparando para el examen RHCE.

Hasta ahora, en este artículo hemos discutido en detalle los principales temas de Selinux. En el resto, consideraremos algunos ejemplos privados de Selinux.

Selinux

En este manual, supongo que el servicio HTTPD está instalado y lanzado en el sistema. Si el servicio HTTPD no está instalado, instálelo con el comando YUM.

#yum install httpd

Use el siguiente comando para iniciar este servicio

#Systemctl iniciar httpd

Cree el archivo index. html en la raíz del documento predeterminado (/var/www/html) con el siguiente contenido.

Laboratorio RHCE

Este es un archivo de prueba.

Ahora abra este archivo a través de un navegador web. Si se instala una interfaz gráfica, use el navegador Firefox, de lo contrario, use el comando Elinks en la invitación de shell.

El siguiente dibujo paso a paso ilustra el proceso descrito anteriormente

configuración práctica de selinux

Estas son la configuración principal que necesitamos para la práctica. Si puede acceder a la página web de prueba (index. html) desde el navegador, continúe a la práctica. Si no puede acceder a la página web de prueba desde el navegador, verifique la configuración HTTPD.

En esta lección, supongo que puede acceder a una página web de prueba.

Ejemplos prácticos de Selinux

Volvamos al directorio de inicio y creemos dos archivos: test1. html y test2. html con un simple contenido ficticio, como «Este es un ejemplo de una página web. Si ve esta página web, entonces el servidor web puede ser capaz de Lea el archivo test. html «.

Ahora copie el primer archivo (test1. html) y mueva el segundo archivo (test2. html) al catálogo raíz del documento predeterminado (/var/www/html).

Ejemplo de copiar-mover en SELinux

Ahora abra ambas páginas web en el navegador.

pruebas de selinux

Se nos permite el acceso a la primera página web (test1. html), y esto es normal. Pero, ¿qué pasa con la segunda página web?

Vamos a descubrir paso a paso.

  • Creamos una página web en el catálogo raíz del documento de forma predeterminada y pudimos verlo.
  • Creamos una página web en el directorio de inicio y la copiamos en la raíz del documento de forma predeterminada, y nuevamente pudimos ver una página web.
  • Creamos una página web en el catálogo de inicio y la movimos a la raíz del documento de forma predeterminada, y esta vez nos negaron una visualización de la página web. Entonces, al mover el archivo, algo estaba mal.¿Qué era? Para averiguarlo, repitamos el proceso nuevamente.

Elimine ambos archivos (test1. html y test2. html) de ambos lugares (catálogo de inicio y raíz del documento web) y confirme la operación de eliminación.

#R M-F test1. html #cd/var/www/html/ #r m-f test1. html #r m-f test2. html #LS

Regrese al directorio de inicio y cree ambos archivos nuevamente. Antes de copiar o mover estos archivos a la raíz del documento, prestemos atención al contexto de seguridad asociado con ellos. Ahora, nuevamente, copie y mueva los archivos a la raíz del documento y verifique el contexto de seguridad.

Problema con el archivo de movimiento de copia de SELinux

¿Has notado la diferencia en el contexto de la seguridad?

Cuando copiamos el archivo, su tipo de tipo cambió. Mientras se mueve el archivo, su contexto de tipo permaneció sin cambios. Entonces, ¿este tipo de contexto bloquea el acceso del servidor web al archivo?

Sí, entendiste todo correctamente.

Como ya hemos dicho, si Selinux está activado, todo lo pasará. Cuando el servidor web contacta los archivos, Selinux verifica si el servidor web tiene derecho a acceder al archivo de destino o no.

El proceso del servidor web puede acceder a archivos que tienen un tipo de contexto httpd_sys_content_t. El ejemplo anterior test2. html es el único archivo que tiene otro contexto de seguridad. Es por eso que nuestro servidor web no pudo acceder al archivo test2. html.

Puntos clave
  • Cuando creamos un nuevo archivo, Selinux aplica los atributos de seguridad correspondientes a él dependiendo de su ubicación.
  • Durante el funcionamiento de la copia, el archivo fuente permanece en la ubicación original y el nuevo archivo se crea en el destino. Dado que se crea un nuevo archivo en el destino, recibe atributos de seguridad basados ​​en el destino.
  • Durante la operación de moverse, el archivo fuente se mueve de la fuente al destino. Dado que no se crea nada nuevo en el destino, el archivo se colocará en el destino con los atributos originales.

Tenemos tres posibles soluciones a este problema: crear un nuevo archivo en la raíz del documento, usar la operación de copia o actualizar el contexto de la seguridad del archivo desplazado. Ya hemos examinado las dos primeras opciones, discutamos la tercera.

Actualización del contexto de tipo

Tenemos dos equipos para actualizar el contexto de Selinux: CHCON y Semanage.

Equipo de Chcon

El comando CHCON actualiza el contexto directamente en el sistema de archivos. Esta es la forma más rápida de actualizar el contexto Selinux. El equipo de Chcon usa la siguiente sintaxis: –

Archivo de contexto de Chcon [Opciones]

La siguiente tabla enumera algunas opciones generales que se pueden usar en este comando

Opción Descripción
-R Aplicar cambios recursivamente
-v Proporciona una conclusión detallada
-u Instala el contexto del usuario
-r Instala el contexto del rol
-t Instalar contexto de tipo

Actualicemos el contexto del archivo test2. html usando este comando y nuevamente gire a la página web test2. html desde el navegador

equipo chcon

¡Bingo! Ahora podemos acceder a una página bloqueada. Pero espera, no usaremos este comando. Este equipo puede llevarnos al fracaso en el examen RHCE.

Dado que este equipo actualiza el contexto de seguridad en el sistema de archivos, y no en Selinux. Todo lo que hemos cambiado usando este comando se reescribirá cuando se reescribirá el sistema de archivos o los contextos originales se restaurarán desde la política en el sistema de archivos.

Vamos a resolverlo con un ejemplo

Regrese al directorio de inicio y cree un archivo ficticio con datos ficticios. Escriba el contexto de su tipo. Dado que creamos este archivo en el catálogo raíz, que pertenece al usuario raíz, su tipo de contexto de seguridad será Admin_Home_T. Cambie el contexto de tipo a user_home_t usando el comando chcon y verifique los cambios. Ahora complete el comando Restaurecon y vuelva a ver el contexto.¿Se conserva el cambio? No … desapareció. El archivo recibió su contexto de seguridad original. Esto es lo que sucede cuando actualizamos el contexto de seguridad utilizando el comando chchon.

El siguiente dibujo ilustra este ejemplo paso a paso

ejemplo del comando chcon

Ahora está claro por qué no deberíamos usar el equipo de CHCON. Pero, ¿Cual es la alternativa? La respuesta es el equipo de semanage. Antes de estudiar el equipo de semango, descubramos qué está haciendo el equipo de restauración.

Comando chcon recoverycon y semanage

Equipo de reotracón

Como ya hemos dicho, hay políticas para todos los objetos en Linux en Selinux. Por lo general, estas reglas determinan los lugares predeterminados para el sujeto (usuario, proceso, aplicación), desde donde el sujeto puede acceder a los archivos asociados con él.

Por lo tanto, cuando creamos un nuevo archivo, Selinux compara su ubicación con su base de datos para averiguar qué sujeto (usuario, proceso, aplicación) puede acceder a archivos en este lugar, y sobre la base de este Selinux aplica los contextos de seguridad apropiados. El equipo de Restorecon también realiza el mismo trabajo. Por cualquier motivo, si se cambió el contexto estándar de la seguridad del archivo, el equipo de restauración restaurará el contexto inicial de la seguridad del archivo.

La ubicación del archivo juega un papel importante en este proceso. Los contextos de seguridad predeterminados funcionan con la ubicación predeterminada. Para comprender mejor esto, ampliemos el ejemplo anterior. En el ejemplo anterior, el contexto predeterminado para el archivo fue admin_home_t, que actualizamos en user_home_t y luego restauramos el contexto inicial con el comando RESTORECON.

Ahora mueva este archivo a otro lugar y usemos el comando RETSTORECON.

ejemplo del comando restaurarcon

Como se puede ver en la figura anterior, el equipo Restorecon usa la ubicación (o, más simplemente, el catálogo principal) para determinar el contexto de seguridad predeterminado para el archivo.

Cuando movimos el archivo al catálogo/var/www/html y usamos el comando RESTORECON, el tipo de contexto se actualizó a httpd_sys_content_t, que es lógico, ya que este es el documento predeterminado para el servidor web.

Más tarde, devolvimos este archivo al catálogo raíz y utilizamos el comando REOTRACON, el tipo de tipo se actualiza a Admin_Home_T, que nuevamente es lógico, ya que este es un catálogo hecho en casa de forma predeterminada para la cuenta de administrador. De la misma manera, cuando restauramos el contexto en el directorio de inicio para el usuario, obtenemos un tipo de contexto user_home_t.

Por lo tanto, si el proceso se inicia de manera predeterminada, el equipo de restauración es solo lo que necesitamos para establecer el tipo de contexto correcto. Por ejemplo, si nuestro servidor web funciona con la raíz del documento de forma predeterminada, independientemente de cómo colocemos los archivos allí, solo necesitamos el próximo equipo para establecer el contexto correcto del tipo.

#Restorso n-r - i-v/var/www/html

En el equipo anterior, utilizamos los siguientes parámetros: –

Opción Descripción
-R Esta opción se usa para la recuperación de contexto recursivo.
-i Esta opción se utiliza para ignorar archivos no existentes.
-v Esta opción se usa para mostrar cambios en tiempo real.

En el mundo real, todo no es tan simple. Para satisfacer los requisitos individuales, los administradores establecen Linux de varias maneras. Por ejemplo, pueden usar una sección separada para datos de usuario o web. En este caso, es necesario especificar Selinux, que los catálogos o archivos pertenecen a uno u otro tema. Para esto, se usa el equipo de semango.

Equipo de semanago

A diferencia de CHCON, el equipo de semanage no escribe nada en el sistema de archivos. En lugar del sistema de archivos, el equipo de Semanage actualiza la política de Selinux. Como sabemos, Selinux aplica los contextos al sistema de archivos solo al comenzar, por lo que cualquier cambio que hagamos a la política se aplicará la próxima vez cuando Selinux reinstale el sistema. Afortunadamente, tenemos un equipo de restauración que puede hacer este trabajo mientras realizamos un sistema de archivos o parte de él. Ya hemos visto al equipo de restauración en acción, ahora trabajemos con el equipo de semanage.

En nuestro ejemplo anterior, trabajamos con la configuración del servidor web de forma predeterminada. Ahora suponga que por alguna razón queremos usar la raíz del documento no de forma predeterminada para nuestro servidor web.

Vamos a crearlo para probar

#Mkdir /rhelab #mkdir /rhcelab /customwebroot

De forma predeterminada, Apache (el servidor web predeterminado en Rhel Linux) utiliza la configuración de configuración estándar. Si queremos usar algo no de forma predeterminada, entonces necesitamos actualizar la configuración apropiada en el archivo de configuración principal. Hagamos una copia de copia de seguridad del archivo de configuración de origen y abra en modo de edición

#cp /etc/httpd/conf/httpd. conf /etc/httpd/conf/httpd. conf. original #vi /etc/httpd/conf/httpd. conf

Actualice la configuración de configuración, como se muestra en la siguiente figura.

Dado que se cambió el archivo de configuración, necesitamos reiniciar el servidor web para que pueda funcionar con una nueva configuración.

#Systemctl reiniciar httpd

Ahora creemos nuestra primera página web con texto simple en la nueva raíz del documento, verifique su contexto de seguridad y obtenga acceso a esta página web a través del navegador web.

pruebas de selinux

Como vemos en la figura anterior, no podemos acceder a la página web desde la raíz del nuevo documento.

Entonces, ¿qué salió mal? Welll …… actualizamos la nueva raíz del documento en el archivo de configuración del servidor web. Pero no informamos a Selinux sobre este cambio. Selinux todavía cree que el Catálogo /Rhelab /CustomWebroot pertenece al sistema de archivos normal.

Tenga en cuenta que el contexto del tipo que el archivo (testWebPage. html) recibió en la nueva raíz del documento es completamente diferente del contexto del tipo que los archivos recibieron en la raíz del documento de forma predeterminada. Y sabemos que el servidor web no puede acceder a archivos que tienen un tipo diferente de tipo, excepto HTTPD_SYS_CONTENT_T.

Entonces, ahora sabemos el problema, resolvamos.

El próximo equipo actualizará a Selinux sobre los cambios

#semanage fcontex t-a -t httpd_sys_content_t "/rhcelleb/custwebroot(/.*)?"

Como ya hemos dicho, Selinux actualiza el contexto de seguridad solo al comenzar. Para actualizar el contexto de seguridad de la política durante la ejecución, debemos usar el comando Restorecon. Actualicemos el contexto de la nueva raíz raíz

#Restorso n-r -i/rhcelab/customwebroot/

Los dos equipos anteriores son muy importantes para el examen RHCE. Antes de continuar, lo descubramos con más detalle.

El primer equipo informa a Selinux que el Catálogo /Rhelab /CustomWebroot pertenece al proceso del servidor web.

En el primer equipo

Comando / opción / parámetro Descripción
Semango Este es el equipo principal.
Fcontext Esta opción le dice al equipo principal que queremos cambiar el contexto de un archivo o catálogo.
-a Esta opción le dice al equipo principal que queremos agregar un nuevo contexto para el archivo o catálogo especificado.
-t Esta opción le dice al equipo principal que queremos cambiar el contexto del tipo de archivo o catálogo especificado para el tipo de tipo especificado en este comando.
httpd_sys_content_t Este es el contexto especificado del tipo.
«/rhcelslab/CustomWebroot(/.*)?» Este es el archivo o catálogo especificado.(/.*)?- Esta es una expresión de archivo regular que corresponde a todos los archivos y catálogos disponibles en el catálogo especificado. Reemplace/rhelab/customwebroot/en su propio camino hacia el catálogo.

En el segundo equipo

Comando / opción / parámetro Descripción
Restaurante Este es el equipo principal
-R Esta opción le dice al comando que queremos realizar esta operación de forma recursiva, comenzando desde el directorio especificado.
-i Esta opción le dice al comando que ignore los errores al realizar la operación.
/rhcelab/customwebroot/ Este es el directorio especificado. Reemplácelo con su propio directorio.

En resumen, el primer comando actualiza la política de SELinux de la siguiente manera: «Los archivos o directorios especificados [«/rhcelab/customwebroot(/.*)?»] pertenecen al tipo de contexto especificado (httpd_sys_content_t)».

El segundo comando simplemente obtiene la política SELinux para el directorio especificado y aplica los cambios.

Ahora comprobemos si ahora podemos acceder a la página web desde la nueva raíz del documento o no.

probando páginas web en selinux

Entonces, cada vez que cambie la raíz predeterminada en cualquier servicio, no olvide actualizar el contexto de tipo SELinux con los siguientes comandos. De lo contrario, el servicio no podrá recuperar archivos o directorios de la nueva raíz del documento.

#semanage fcontex t-a -t [Contexto de tipo de archivo asociado] "¿NewDocumentRoot (/.*)?"#restoreco n-R -i Nueva raíz del documento

Si le resulta difícil recordar los comandos anteriores, puede utilizar la página de manual del comando semanage-fcontext.

#hombre semanage-fcontext

Escriba /ejemplo para ir directamente a la sección de ejemplos. Aquí encontrará los comandos enumerados anteriormente con ejemplos de su uso.

ayuda con el comando semanage

Encontrar un contexto de tipo

La parte más difícil de establecer el contexto de un tipo de archivo es encontrar el contexto correcto. Y la solución más sencilla a este problema es buscar en la raíz del documento predeterminada. Por ejemplo, para encontrar el contexto correcto para un servidor web, miramos la raíz del documento predeterminada del servidor web (/var/www/html).

SELinux almacena todos los contextos en el directorio /etc/selinux/targeted/contexts. Los contextos de la mayoría de los archivos normales se almacenan en file_contexts.

ayuda con el comando semanage

Cualquier contexto agregado usando el comando semanage se coloca en file_contexts. local.

ayuda con el comando semanage

Hemos terminado nuestro ejercicio, aclaremos los cambios.

#cp /etc/httpd/conf/httpd. conf. original /etc/httpd/conf/httpd. conf #systemctl reiniciar httpd

Eso es todo por esta parte. En la siguiente parte estudiaremos las bolas de SELinux en detalle con ejemplos.

Por ComputerNetworkingNotes Actualizado el 2023-08-13 02:00:01 IST

ComputerNetworkingNotes Tutoriales de Linux SELinux explicado con ejemplos en un lenguaje sencillo