SELinux
Security Enhanced Linux
Cambio de Modos de SELinux
setenforce modifica el modo actual de SELinux de un sistema.
El modo predeterminado de SELinux de un sistema se define en el archivo /etc/selinux/config
.
[root@localhost ~]# getenforce Enforcing [root@localhost ~]# setenforce usage: setenforce [ Enforcing | Permissive | 1 | 0 ] [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive [root@localhost ~]# setenforce Enforcing [root@localhost ~]# getenforce Enforcing
Configuración del modo predeterminado de SELinux
El archivo de configuración que determina el modo de SELinux en el que se establece al momento del arranque es /etc/selinux/config
. Observe que contiene algunos comentarios útiles:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes # are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
Use /etc/selinux/config
para modificar el modo predeterminado de SELinux durante el arranque. En el ejemplo que se muestra, está configurado en el modo de cumplimiento.
Al pasar los argumentos del kernel selinux= o enforcing=, se anulan todos los valores predeterminados especificados en /etc/selinux/config
.
Listado de contextos
[root@localhost]# cd /etc/selinux/targeted/contexts [root@localhost]# less /etc/selinux/targeted/contexts/files/file_contexts
Cambio de Contextos
El comando semanage fcontext se usa para administrar las reglas de políticas de SELinux que determinan el contexto predeterminado para archivos y directorios.
restorecon aplica el contexto definido por la política de SELinux a archivos y directorios.
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t '/websites(/.*)?' [root@localhost ~]# restorecon -Rv /websites
Booleanos de SELinux
Los booleanos de SELinux son switches que modifican el comportamiento de la política de SELinux. Los booleanos de SELinux son reglas que pueden habilitarse o deshabilitarse. Los administradores de seguridad pueden utilizarlos para realizar ajustes selectivos en la política.
Cambio de booleanos de SELinux
- setsebool activa/desactiva reglas de políticas de SELinux.
semanage boolean -l
muestra el valor persistente de booleanos de SELinux.
Las páginas del manual que finalizan con _selinux a menudo proporcionan información útil sobre booleanos de SELinux.
Apache puede publicar contenido web alojado en los directorios de inicio de los usuarios, pero SELinux evita esto de forma predeterminada. En este ejercicio, identificará y cambiará el booleano de SELinux que permitirá a Apache acceder a los directorios de inicio de los usuarios.
Recursos Archivos: /etc/httpd/conf.d/userdir.conf Máquinas: serverX Resultados: Tendrá un servidor web que publica contenido web desde los directorios de inicio de los usuarios.
El servidor web de Apache ya debe estar instalado y ejecutándose en serverX.example.com.
Inicie sesión como rroot en serverX. Habilite la función Apache que permite a los usuarios publicar contenido web desde sus directorios de inicio. Edite el archivo de configuración /etc/httpd/conf.d/userdir.conf y cambie la línea con la directiva UserDir para que se lea lo siguiente:
#UserDir disabled UserDir public_html
[root@serverX ~]# vi /etc/httpd/conf.d/userdir.conf [root@serverX ~]# grep '#UserDir' /etc/httpd/conf.d/userdir.conf #UserDir disabled [root@serverX ~]# grep '^ *UserDir' /etc/httpd/conf.d/userdir.conf UserDir public_html
Reinicie el servicio web Apache para que tengan efecto los cambios realizados.
[root@serverX ~]# systemctl restart httpd
Cree algo de contenido web que sea publicado desde un directorio de inicio de los usuarios.
Inicie sesión como student en otra ventana y cree un directorio public_html.
[student@serverX ~]$ mkdir ~/public_html
Cree algo de contenido en un archivo index.html.
[student@serverX ~]$ echo 'This is student content on serverX.' > ~/public_html/index.html
Cambie los permisos en el directorio de inicio de student de modo que Apache pueda acceder al subdirectorio public_html.
[student@serverX ~]$ chmod 711 ~
Abra un navegador web en serverX e intente ver la siguiente URL: http://localhost/~&stu;/index.html. Recibirá un mensaje de error que dice que no tiene permiso para acceder al archivo.
En su ventana root, use el comando getsebool para ver si hay booleanos que restrinjan el acceso a los directorios de inicio.
[root@serverX ~]# getsebool -a | grep home [... Output omitted ...] httpd_enable_homedirs --> off [... Output omitted ...]
Use setsebool para habilitar el acceso al directorio de inicio de forma persistente.
[root@serverX ~]# setsebool -P httpd_enable_homedirs on
Intente ver http://localhost/~&stu;/index.html
nuevamente. Debería ver el mensaje “This is student content on serverX (Esto es contenido del estudiante en serverX).”